修改util为公共地址
This commit is contained in:
1
game-server/app/pubUtils
Symbolic link
1
game-server/app/pubUtils
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
/Users/bantu/zyz_server/shared/pubUtils
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Application, BackendSession } from 'pinus';
|
import { Application, BackendSession } from 'pinus';
|
||||||
import { DailyRecordModel } from '../../../db/DailyRecord';
|
import { DailyRecordModel } from '../../../db/DailyRecord';
|
||||||
import { BattleRecordModel } from '../../../db/BattleRecord';
|
import { BattleRecordModel } from '../../../db/BattleRecord';
|
||||||
import { getGamedata } from '../../../util/gamedata';
|
import { getGamedata } from '../../../pubUtils/gamedata';
|
||||||
import { WAR_TYPE } from '../../../consts/consts';
|
import { WAR_TYPE } from '../../../consts/consts';
|
||||||
|
|
||||||
export default function(app: Application) {
|
export default function(app: Application) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Application, BackendSession } from 'pinus';
|
import { Application, BackendSession } from 'pinus';
|
||||||
import { getGamedata } from '../../../util/gamedata';
|
import { getGamedata } from '../../../pubUtils/gamedata';
|
||||||
import EventRecord, { EventRecordModel } from '../../../db/EventRecord';
|
import EventRecord, { EventRecordModel } from '../../../db/EventRecord';
|
||||||
import { RoleModel } from '../../../db/Role';
|
import { RoleModel } from '../../../db/Role';
|
||||||
import { EVENT_STATUS, EVENT_RECORD_STATUS } from '../../../consts/consts';
|
import { EVENT_STATUS, EVENT_RECORD_STATUS } from '../../../consts/consts';
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { Application, BackendSession } from 'pinus';
|
import { Application, BackendSession } from 'pinus';
|
||||||
import { getGamedata, getWarById } from '../../../util/gamedata';
|
import { getGamedata, getWarById } from '../../../pubUtils/gamedata';
|
||||||
import { BattleRecordModel } from '../../../db/BattleRecord';
|
import { BattleRecordModel } from '../../../db/BattleRecord';
|
||||||
import { ExpeditionRecordModel } from '../../../db/ExpeditionRecord';
|
import { ExpeditionRecordModel } from '../../../db/ExpeditionRecord';
|
||||||
import { ExpeditionWarRecordModel } from '../../../db/ExpeditionWarRecord';
|
import { ExpeditionWarRecordModel } from '../../../db/ExpeditionWarRecord';
|
||||||
import { ExpeditionPointModel } from '../../../db/ExpeditionPoint';
|
import { ExpeditionPointModel } from '../../../db/ExpeditionPoint';
|
||||||
import { RoleModel } from '../../../db/Role';
|
import { RoleModel } from '../../../db/Role';
|
||||||
import { calculateSumCE, genCode } from '../../../util/util';
|
import { calculateSumCE, genCode } from '../../../pubUtils/util';
|
||||||
import { matchPlayers, matchRobots, getPointRewardStatus, getCEScaleAndRange } from '../../../services/expeditionService';
|
import { matchPlayers, matchRobots, getPointRewardStatus, getCEScaleAndRange } from '../../../services/expeditionService';
|
||||||
import { EXPEDITION_INCREASE_POINT } from '../../../consts/consts';
|
import { EXPEDITION_INCREASE_POINT } from '../../../consts/consts';
|
||||||
import { WarReward } from '../../../services/warRewardService';
|
import { WarReward } from '../../../services/warRewardService';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { Application, BackendSession } from 'pinus';
|
import { Application, BackendSession } from 'pinus';
|
||||||
import { BattleRecordModel } from '../../../db/BattleRecord';
|
import { BattleRecordModel } from '../../../db/BattleRecord';
|
||||||
import { BattleSweepRecordModel } from '../../../db/BattleSweepRecord';
|
import { BattleSweepRecordModel } from '../../../db/BattleSweepRecord';
|
||||||
import { getWarById, } from '../../../util/gamedata';
|
import { getWarById, } from '../../../pubUtils/gamedata';
|
||||||
import { genCode } from '../../../util/util';
|
import { genCode } from '../../../pubUtils/util';
|
||||||
import { WAR_TYPE, EVENT_START_BATTLE } from '../../../consts/consts';
|
import { WAR_TYPE, EVENT_START_BATTLE } from '../../../consts/consts';
|
||||||
import { checkDaily, checkDailyAndIncrease } from '../../../services/dailyBattleService';
|
import { checkDaily, checkDailyAndIncrease } from '../../../services/dailyBattleService';
|
||||||
import { checkTowerWar, towerBattleEnd } from '../../../services/battleService';
|
import { checkTowerWar, towerBattleEnd } from '../../../services/battleService';
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import { HangUpRecordModel } from './../../../db/HangUpRecord';
|
|||||||
import { RoleModel } from './../../../db/Role';
|
import { RoleModel } from './../../../db/Role';
|
||||||
import { TowerRecordModel } from './../../../db/TowerRecord';
|
import { TowerRecordModel } from './../../../db/TowerRecord';
|
||||||
import { Application, BackendSession } from 'pinus';
|
import { Application, BackendSession } from 'pinus';
|
||||||
import { getTaskById, getTaskIdByQuality, getTowerDataByLv } from '../../../util/gamedata';
|
import { getTaskById, getTaskIdByQuality, getTowerDataByLv } from '../../../pubUtils/gamedata';
|
||||||
import { decodeArrayStr, decodeIdCntArrayStr, getRandEelm } from '../../../util/util';
|
import { decodeArrayStr, decodeIdCntArrayStr, getRandEelm } from '../../../pubUtils/util';
|
||||||
import { calcuHangUpReward, checkTaskConditions } from '../../../services/battleService';
|
import { calcuHangUpReward, checkTaskConditions } from '../../../services/battleService';
|
||||||
import { handleFixedReward } from '../../../services/rewardService';
|
import { handleFixedReward } from '../../../services/rewardService';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { CounterModel } from '../../../db/Counter';
|
import { CounterModel } from '../../../db/Counter';
|
||||||
import { HeroModel } from '../../../db/Hero';
|
import { HeroModel } from '../../../db/Hero';
|
||||||
import { EquipModel } from '../../../db/Equip';
|
import { EquipModel } from '../../../db/Equip';
|
||||||
import { calculateCE } from '../../../util/util';
|
import { calculateCE } from '../../../pubUtils/util';
|
||||||
import {Application, BackendSession, createTcpMailBox} from 'pinus';
|
import {Application, BackendSession, createTcpMailBox} from 'pinus';
|
||||||
|
|
||||||
export default function(app: Application) {
|
export default function(app: Application) {
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import { HANG_UP_CONSTS } from './../consts/consts';
|
|||||||
import { BattleRecordModel } from './../db/BattleRecord';
|
import { BattleRecordModel } from './../db/BattleRecord';
|
||||||
import { TowerRecordModel } from './../db/TowerRecord';
|
import { TowerRecordModel } from './../db/TowerRecord';
|
||||||
import { RoleModel } from './../db/Role';
|
import { RoleModel } from './../db/Role';
|
||||||
import { getHeroInfoById, getJobInfoById, getTowerDataByLv } from "../util/gamedata"
|
import { getHeroInfoById, getJobInfoById, getTowerDataByLv } from "../pubUtils/gamedata"
|
||||||
import { decodeArrayStr, shouldRefresh } from '../util/util';
|
import { decodeArrayStr, shouldRefresh } from '../pubUtils/util';
|
||||||
import { handleFixedReward } from './rewardService';
|
import { handleFixedReward } from './rewardService';
|
||||||
|
|
||||||
export async function checkTowerWar(roleId: string, battleId: number, heroes: Array<number>) {
|
export async function checkTowerWar(roleId: string, battleId: number, heroes: Array<number>) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { DailyRecordModel } from '../db/DailyRecord';
|
import { DailyRecordModel } from '../db/DailyRecord';
|
||||||
import { getGamedata } from '../util/gamedata';
|
import { getGamedata } from '../pubUtils/gamedata';
|
||||||
|
|
||||||
// 检查每日本次数checkBattle使用
|
// 检查每日本次数checkBattle使用
|
||||||
export async function checkDaily(roleId: string, battleId: number, inc: number) {
|
export async function checkDaily(roleId: string, battleId: number, inc: number) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { Application, FrontendOrBackendSession } from 'pinus';
|
import { Application, FrontendOrBackendSession } from 'pinus';
|
||||||
import { getGamedata } from '../util/gamedata';
|
import { getGamedata } from '../pubUtils/gamedata';
|
||||||
import { EventRecordModel } from '../db/EventRecord';
|
import { EventRecordModel } from '../db/EventRecord';
|
||||||
import { RoleModel } from '../db/Role';
|
import { RoleModel } from '../db/Role';
|
||||||
import { genCode, decodeStrSingle, decodeStr } from '../util/util';
|
import { genCode, decodeStrSingle, decodeStr } from '../pubUtils/util';
|
||||||
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_TYPE } from '../consts/consts';
|
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_TYPE } from '../consts/consts';
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
import { ExpeditionPointModel } from '../db/ExpeditionPoint';
|
import { ExpeditionPointModel } from '../db/ExpeditionPoint';
|
||||||
import { RoleModel } from '../db/Role';
|
import { RoleModel } from '../db/Role';
|
||||||
|
|
||||||
import { getWarJsons, getGamedata } from '../util/gamedata';
|
import { getWarJsons, getGamedata } from '../pubUtils/gamedata';
|
||||||
import { decodeStr } from '../util/util';
|
import { decodeStr } from '../pubUtils/util';
|
||||||
import { WAR_JSON_ATTRIBUTE_TYPE } from '../consts/consts';
|
import { WAR_JSON_ATTRIBUTE_TYPE } from '../consts/consts';
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { GOOD_TYPE } from './../consts/consts';
|
import { GOOD_TYPE } from './../consts/consts';
|
||||||
import { EquipModel } from './../db/Equip';
|
import { EquipModel } from './../db/Equip';
|
||||||
import { CounterModel } from './../db/Counter';
|
import { CounterModel } from './../db/Counter';
|
||||||
import { decodeStr } from '../util/util';
|
import { decodeStr } from '../pubUtils/util';
|
||||||
import { getGoodById } from '../util/gamedata';
|
import { getGoodById } from '../pubUtils/gamedata';
|
||||||
|
|
||||||
export async function handleFixedReward(roleId: string, roleName: string, rewardStr: string, multi: number) {
|
export async function handleFixedReward(roleId: string, roleName: string, rewardStr: string, multi: number) {
|
||||||
let reward = decodeStr('fixReward', rewardStr);
|
let reward = decodeStr('fixReward', rewardStr);
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { BattleDropModel } from '../db/BattleDrop';
|
import { BattleDropModel } from '../db/BattleDrop';
|
||||||
import { getWarById } from '../util/gamedata';
|
import { getWarById } from '../pubUtils/gamedata';
|
||||||
import { decodeStr } from '../util/util';
|
import { decodeStr } from '../pubUtils/util';
|
||||||
import { BATTLE_REWARD_TYPE } from '../consts/consts';
|
import { BATTLE_REWARD_TYPE } from '../consts/consts';
|
||||||
import { handleReward } from './rewardService';
|
import { handleReward } from './rewardService';
|
||||||
|
|
||||||
|
|||||||
1
gm-server/app/pubUtils
Symbolic link
1
gm-server/app/pubUtils
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
/Users/bantu/zyz_server/shared/pubUtils
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { HANG_UP_CONSTS } from './../consts/consts';
|
// import { HANG_UP_CONSTS } from './../consts/consts';
|
||||||
import BaseModel from './BaseModel';
|
import BaseModel from './BaseModel';
|
||||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { HANG_UP_CONSTS } from './../consts/consts';
|
|||||||
import BaseModel from './BaseModel';
|
import BaseModel from './BaseModel';
|
||||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||||
import User from './User';
|
import User from './User';
|
||||||
import { shouldRefresh } from '../util/util';
|
import { shouldRefresh } from '../pubUtils/util';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色字段接口
|
* 角色字段接口
|
||||||
@@ -155,7 +155,8 @@ export default class Role extends BaseModel {
|
|||||||
public static async hangUpSpdUp(roleId: string, cnt: number, curTime: Date, lean = true) {
|
public static async hangUpSpdUp(roleId: string, cnt: number, curTime: Date, lean = true) {
|
||||||
if (cnt < 0) return null;
|
if (cnt < 0) return null;
|
||||||
|
|
||||||
const {lastSpdUpTime} = await RoleModel.findOneAndUpdate({roleId}, {$inc: {hangUpSpdUpCnt: -cnt}, lastSpdUpTime: curTime}, {new: true}).lean(lean);
|
const result = await RoleModel.findOneAndUpdate({roleId}, {$inc: {hangUpSpdUpCnt: -cnt}, lastSpdUpTime: curTime}, {new: true}).lean(lean);
|
||||||
|
const lastSpdUpTime = result?result.lastSpdUpTime: curTime;
|
||||||
let role = null;
|
let role = null;
|
||||||
if (shouldRefresh(lastSpdUpTime, curTime, HANG_UP_CONSTS.REFRESH_TIME, 1) && cnt <= HANG_UP_CONSTS.MAX_SPD_UP_CNT) {
|
if (shouldRefresh(lastSpdUpTime, curTime, HANG_UP_CONSTS.REFRESH_TIME, 1) && cnt <= HANG_UP_CONSTS.MAX_SPD_UP_CNT) {
|
||||||
role = await RoleModel.findOneAndUpdate({roleId}, {hangUpSpdUpCnt: HANG_UP_CONSTS.MAX_SPD_UP_CNT - cnt, lastSpdUpTime: curTime}, {new: true}).lean(lean);
|
role = await RoleModel.findOneAndUpdate({roleId}, {hangUpSpdUpCnt: HANG_UP_CONSTS.MAX_SPD_UP_CNT - cnt, lastSpdUpTime: curTime}, {new: true}).lean(lean);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import BaseModel from './BaseModel';
|
import BaseModel from './BaseModel';
|
||||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||||
|
|
||||||
class TowerTask {
|
// class TowerTask {
|
||||||
@prop({ required: true })
|
// @prop({ required: true })
|
||||||
id: number; // 任务唯一 Id,来自任务表
|
// id: number; // 任务唯一 Id,来自任务表
|
||||||
@prop({ required: true})
|
// @prop({ required: true})
|
||||||
taskCode: string; // 服务器生成的任务唯一编号
|
// taskCode: string; // 服务器生成的任务唯一编号
|
||||||
@prop({ required: true, type: Number, default: []})
|
// @prop({ required: true, type: Number, default: []})
|
||||||
heroes: Array<number>; // 派遣武将 hid
|
// heroes: Array<number>; // 派遣武将 hid
|
||||||
@prop({ required: true })
|
// @prop({ required: true })
|
||||||
status: boolean; // 派遣任务当前状态,0-可派遣,1-已派遣,2-已完成,3-已领取
|
// status: boolean; // 派遣任务当前状态,0-可派遣,1-已派遣,2-已完成,3-已领取
|
||||||
}
|
// }
|
||||||
|
|
||||||
function genCodeTmp(len) {
|
function genCodeTmp(len) {
|
||||||
const chars = '123456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijklmnopqrstuvwxyz';
|
const chars = '123456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijklmnopqrstuvwxyz';
|
||||||
@@ -61,7 +61,7 @@ export default class TowerTaskRec extends BaseModel {
|
|||||||
return recs;
|
return recs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async createTasks(roleId: string, roleName: string, taskIds: Array<number>, lean = true) {
|
public static async createTasks(roleId: string, roleName: string, taskIds: Array<number>/*, lean = true*/) {
|
||||||
const batchCode = genCodeTmp(8);
|
const batchCode = genCodeTmp(8);
|
||||||
const tasksData = taskIds.map(id => {
|
const tasksData = taskIds.map(id => {
|
||||||
const taskModel = new TowerTaskRecModel();
|
const taskModel = new TowerTaskRecModel();
|
||||||
@@ -78,8 +78,8 @@ export default class TowerTaskRec extends BaseModel {
|
|||||||
return recs;
|
return recs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async sendHeroes(roleId: string, batchCode: string, tasks: Array<{taskCode:string, heroes: Array<number>}>, sendTime: Date, lean = true) {
|
public static async sendHeroes(_roleId: string, batchCode: string, tasks: Array<{taskCode:string, heroes: Array<number>}>, sendTime: Date, lean = true) {
|
||||||
let recs = [];
|
let recs = new Array();
|
||||||
const refTime = getRefTime();
|
const refTime = getRefTime();
|
||||||
for (let task of tasks) {
|
for (let task of tasks) {
|
||||||
const rec = await TowerTaskRecModel.findOneAndUpdate(
|
const rec = await TowerTaskRecModel.findOneAndUpdate(
|
||||||
@@ -93,8 +93,8 @@ export default class TowerTaskRec extends BaseModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static async finishTask(batchCode: string, tasks: Array<string>, lean = true) {
|
public static async finishTask(batchCode: string, tasks: Array<string>, lean = true) {
|
||||||
let recs = [];
|
let recs = new Array();
|
||||||
const refTime = getRefTime();
|
// const refTime = getRefTime();
|
||||||
for (let task of tasks) {
|
for (let task of tasks) {
|
||||||
const rec = await TowerTaskRecModel.findOneAndUpdate(
|
const rec = await TowerTaskRecModel.findOneAndUpdate(
|
||||||
{batchCode, taskCode: task},
|
{batchCode, taskCode: task},
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
const fs = require('fs');
|
import fs = require('fs');
|
||||||
const path = require('path');
|
import path = require('path');
|
||||||
|
|
||||||
let gamedata = {};
|
let gamedata = {};
|
||||||
const wars = ['dic_zyz_gk_main', 'dic_zyz_gk_mainElite', 'dic_zyz_gk_daily', 'dic_zyz_gk_event', 'dic_zyz_gk_tower', 'dic_zyz_gk_expedition']; // 关卡相关的表
|
const wars = ['dic_zyz_gk_main', 'dic_zyz_gk_mainElite', 'dic_zyz_gk_daily', 'dic_zyz_gk_event', 'dic_zyz_gk_tower', 'dic_zyz_gk_expedition']; // 关卡相关的表
|
||||||
@@ -66,7 +66,7 @@ function parseJobData() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function initData (folder) {
|
function initData (folder: string) {
|
||||||
if(!gamedata.hasOwnProperty(folder)) {
|
if(!gamedata.hasOwnProperty(folder)) {
|
||||||
gamedata[folder] = {};
|
gamedata[folder] = {};
|
||||||
}
|
}
|
||||||
@@ -79,10 +79,11 @@ function initData (folder) {
|
|||||||
var name = file.split('.')[0];
|
var name = file.split('.')[0];
|
||||||
try {
|
try {
|
||||||
gamedata[folder][name] = JSON.parse(
|
gamedata[folder][name] = JSON.parse(
|
||||||
fs.readFileSync(path.resolve(__dirname, "../resource/" + folder + "/" + file))
|
fs.readFileSync(path.resolve(__dirname, "../resource/" + folder + "/" + file)).toString()
|
||||||
);
|
);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
console.error('【文件缺少】:' + file);
|
console.error(e);
|
||||||
|
console.error('【文件错误】:' + file);
|
||||||
gamedata[folder][name] = [];
|
gamedata[folder][name] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
import { getWarById, getGoodById, getGamedata } from './gamedata';
|
import { getGamedata } from './gamedata';
|
||||||
import { CounterModel } from '../db/Counter';
|
// import { CounterModel } from '../db/Counter';
|
||||||
import { EquipModel } from '../db/Equip';
|
// import { EquipModel } from '../db/Equip';
|
||||||
import { HeroModel } from '../db/Hero';
|
import { HeroModel } from '../db/Hero';
|
||||||
import { GOOD_TYPE } from '../consts/consts';
|
// import { GOOD_TYPE } from '../consts/consts';
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
|
|
||||||
export function genCode(len) {
|
export function genCode(len) {
|
||||||
@@ -101,7 +101,7 @@ export function decodeIdCntArrayStr(str: string, multi: number) {
|
|||||||
export async function calculateSumCE(roleId: string, type: number, param: { num?: number, heroes?: Array<number> }) {
|
export async function calculateSumCE(roleId: string, type: number, param: { num?: number, heroes?: Array<number> }) {
|
||||||
let sum;
|
let sum;
|
||||||
if(type == 1) { // 最高num人战力和
|
if(type == 1) { // 最高num人战力和
|
||||||
sum = await HeroModel.sumTopHeroCe(roleId, param.num);
|
sum = await HeroModel.sumTopHeroCe(roleId, param.num||0);
|
||||||
} else if(type == 2) { // 所有人战力和
|
} else if(type == 2) { // 所有人战力和
|
||||||
sum = await HeroModel.sumHeroCe(roleId);
|
sum = await HeroModel.sumHeroCe(roleId);
|
||||||
}
|
}
|
||||||
@@ -171,7 +171,7 @@ export function shouldRefresh(preTime: Date, curTime: Date, hour: number, deltaD
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getRandEelm(source: Array<any> = [], cnt = 1): Array<any> {
|
export function getRandEelm(source: Array<any> = [], cnt = 1): Array<any> {
|
||||||
if (cnt > source.length) return null;
|
if (cnt > source.length) return [];
|
||||||
if (cnt === source.length) return source;
|
if (cnt === source.length) return source;
|
||||||
let idxs = new Set();
|
let idxs = new Set();
|
||||||
for (let i = 0; i < cnt; ++i) {
|
for (let i = 0; i < cnt; ++i) {
|
||||||
@@ -181,5 +181,5 @@ export function getRandEelm(source: Array<any> = [], cnt = 1): Array<any> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return source.filter((item, idx) => idxs.has(idx));
|
return source.filter((_item, idx) => idxs.has(idx));
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"IsTestService":true,
|
"IsTestService":true,
|
||||||
"OpenIosAliPay":false,
|
"OpenIosAliPay":false,
|
||||||
|
|||||||
1
web-server/app/pubUtils
Symbolic link
1
web-server/app/pubUtils
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
/Users/bantu/zyz_server/shared/pubUtils
|
||||||
Reference in New Issue
Block a user