diff --git a/game-server/app/services/activity/monthlyTicketService.ts b/game-server/app/services/activity/monthlyTicketService.ts index 1fe567bac..6683c4da9 100644 --- a/game-server/app/services/activity/monthlyTicketService.ts +++ b/game-server/app/services/activity/monthlyTicketService.ts @@ -11,7 +11,8 @@ import { RoleModel, RoleType } from '../../db/Role'; import { getActivitiesByType, getActivityById } from './activityService'; import { RewardInter } from '../../pubUtils/interface'; import { DUNGEON_CONST, PVP, VIP } from '../../pubUtils/dicParam'; -import { cal, stringWithTypeToRewardInter } from '../../pubUtils/util'; +import { cal, } from '../../pubUtils/util'; +import { stringWithTypeToRewardInter } from '../../pubUtils/roleUtil'; import { pinus } from 'pinus'; import { getGoldId } from '../role/rewardService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService'; diff --git a/game-server/app/services/activity/timeLimitRankService.ts b/game-server/app/services/activity/timeLimitRankService.ts index 351551284..b7ad9c48c 100644 --- a/game-server/app/services/activity/timeLimitRankService.ts +++ b/game-server/app/services/activity/timeLimitRankService.ts @@ -5,7 +5,7 @@ import { GuildModel, GuildType } from "../../db/Guild"; import { RoleModel } from "../../db/Role"; import { TimeLimitRankData } from "../../domain/activityField/timeLimitRankField"; import { GuildRankInfo, RoleRankInfo } from "../../domain/rank"; -import { stringWithTypeToRewardInter } from "../../pubUtils/util"; +import { stringWithTypeToRewardInter } from "../../pubUtils/roleUtil"; import { sendMailByContent, sendMailToGuildByContent } from "../mailService"; import { Rank } from "../rankService"; import { getServerCreateTime } from "../redisService"; diff --git a/shared/domain/activityField/popUpShopField.ts b/shared/domain/activityField/popUpShopField.ts index 7d6563f1e..5b198ae5c 100644 --- a/shared/domain/activityField/popUpShopField.ts +++ b/shared/domain/activityField/popUpShopField.ts @@ -3,7 +3,8 @@ import { POP_UP_SHOP_CONDITION_TYPE, POP_UP_SHOP_REFRESH_TIME_TYPE, REFRESH_TIME import { ActivityModelType } from "../../db/Activity"; import { ActivityPopUpShopModelType, PopUpShopItem as ActivityPopUpShopItem } from "../../db/ActivityPopUpShop"; import { RewardInter } from "../../pubUtils/interface"; -import { parseNumberList, stringWithTypeToRewardInter } from "../../pubUtils/util"; +import { parseNumberList } from "../../pubUtils/util"; +import { stringWithTypeToRewardInter } from "../../pubUtils/roleUtil"; import { ActivityBase } from './activityField'; // 数据库格式 diff --git a/shared/pubUtils/roleUtil.ts b/shared/pubUtils/roleUtil.ts index 64c235c27..f02c41b69 100644 --- a/shared/pubUtils/roleUtil.ts +++ b/shared/pubUtils/roleUtil.ts @@ -84,6 +84,12 @@ import { WishPoolReportModel } from '../db/WishPoolReport'; import { pick } from "underscore"; import { JewelModel } from "../db/Jewel"; import { RoleCeModel } from "../db/RoleCe"; +import { RewardParam } from "../domain/activityField/rewardField"; +import { decodeArrayListStr } from "./util"; +import { RewardInter } from "./interface"; +import { CreateHeroParam } from "../domain/roleField/hero"; +import { ACTIVITY_RESOURCES_TYPE } from "../consts"; +import { gameData } from "./data"; export async function deletRole(roleId: string) { let role = await RoleModel.findByRoleId(roleId, null, true, true); @@ -207,4 +213,50 @@ export async function deletRole(roleId: string) { await RoleModel.updateMany({ roleId }, { $set: update }); } return true; -} \ No newline at end of file +} + + +//数据格式转换'类型&id&数量|类型&id&数量|' ->> Array 活动奖励 +export function stringToRewardParam(rewardStr: string): Array { + let result = new Array<{ type: number, id: number, count: number }>(); + if (!rewardStr) return result; + let decodeArr = decodeArrayListStr(rewardStr); + for (let [type, id, count] of decodeArr) { + if (isNaN(parseInt(type)) || isNaN(parseInt(id)) || isNaN(parseInt(count))) { + throw new Error('data table format wrong'); + } + result.push({ type: parseInt(type), id: parseInt(id), count: parseInt(count) }); + } + return result +} + +//表中的奖励数据(包括礼包)转换成具体对应奖励物品的实例 +export function rewardItemData(reward: Array) { + let goods: Array = []; + let heroes: Array = []; + for (let obj of reward) { + switch (obj.type) { + case ACTIVITY_RESOURCES_TYPE.HERO: + heroes.push({ hid: obj.id, count: obj.count }) + break; + case ACTIVITY_RESOURCES_TYPE.GOODS: + goods.push({ id: obj.id, count: obj.count }) + break; + case ACTIVITY_RESOURCES_TYPE.GIFTPACKAGE://配置成礼包会立刻兑换,配置成物品会把礼包放入背包中 + let giftPackageData = gameData.giftPackage.get(1)//gameData.giftPackage.get(goodData.gift);//礼包数据 + let giftReward = rewardItemData(giftPackageData.reward) + goods = goods.concat(giftReward.goods) + heroes = heroes.concat(giftReward.heroes) + break; + default: + break; + } + } + return { goods, heroes } +} + +export function stringWithTypeToRewardInter(str: string): Array { + let reward = stringToRewardParam(str); + let item = rewardItemData(reward); + return item.goods||[]; +} diff --git a/shared/pubUtils/util.ts b/shared/pubUtils/util.ts index 6f501f4d2..44d322d0d 100644 --- a/shared/pubUtils/util.ts +++ b/shared/pubUtils/util.ts @@ -5,16 +5,13 @@ import { isNumber } from 'underscore'; const csprng = require('csprng'); import fs = require('fs'); import path = require('path'); -import { ABI_STAGE, GACHA_TO_FLOOR, REFRESH_TIME, ROBOT_SYS_TYPE, ITEM_CHANGE_REASON, WAR_TYPE, ACTIVITY_RESOURCES_TYPE } from '../consts'; +import { ABI_STAGE, GACHA_TO_FLOOR, REFRESH_TIME, ROBOT_SYS_TYPE, ITEM_CHANGE_REASON, WAR_TYPE } from '../consts'; import { findIndex } from 'underscore'; import { getTimeFunM } from './timeUtil'; import { Floor } from '../domain/activityField/gachaField'; import { WhiteListModel } from '../db/RegionWhiteList'; import { RewardInter } from './interface'; -import { RewardParam } from '../domain/activityField/rewardField'; -import { CreateHeroParam } from '../domain/roleField/hero'; -import { gameData } from './data'; const randomName = require("chinese-random-name"); const moment = require('moment'); const crypto = require('crypto'); @@ -824,48 +821,3 @@ export function addToMap(map: Map, id: T, value: number) { // return { topLineup, topLineupCe }; // } - -//数据格式转换'类型&id&数量|类型&id&数量|' ->> Array 活动奖励 -export function stringToRewardParam(rewardStr: string): Array { - let result = new Array<{ type: number, id: number, count: number }>(); - if (!rewardStr) return result; - let decodeArr = decodeArrayListStr(rewardStr); - for (let [type, id, count] of decodeArr) { - if (isNaN(parseInt(type)) || isNaN(parseInt(id)) || isNaN(parseInt(count))) { - throw new Error('data table format wrong'); - } - result.push({ type: parseInt(type), id: parseInt(id), count: parseInt(count) }); - } - return result -} - -//表中的奖励数据(包括礼包)转换成具体对应奖励物品的实例 -export function rewardItemData(reward: Array) { - let goods: Array = []; - let heroes: Array = []; - for (let obj of reward) { - switch (obj.type) { - case ACTIVITY_RESOURCES_TYPE.HERO: - heroes.push({ hid: obj.id, count: obj.count }) - break; - case ACTIVITY_RESOURCES_TYPE.GOODS: - goods.push({ id: obj.id, count: obj.count }) - break; - case ACTIVITY_RESOURCES_TYPE.GIFTPACKAGE://配置成礼包会立刻兑换,配置成物品会把礼包放入背包中 - let giftPackageData = gameData.giftPackage.get(1)//gameData.giftPackage.get(goodData.gift);//礼包数据 - let giftReward = rewardItemData(giftPackageData.reward) - goods = goods.concat(giftReward.goods) - heroes = heroes.concat(giftReward.heroes) - break; - default: - break; - } - } - return { goods, heroes } -} - -export function stringWithTypeToRewardInter(str: string): Array { - let reward = stringToRewardParam(str); - let item = rewardItemData(reward); - return item.goods||[]; -}