活动:修改string变id&count的转换方法
This commit is contained in:
@@ -5,7 +5,7 @@ import { getPlayerLuckyTurntableDataShow, getPlayerLuckyTurntableData } from '..
|
||||
import { addItems, handleCost } from '../../../services/role/rewardService';
|
||||
import { ActivityTurntableModel } from '../../../db/ActivityTurntableRec';
|
||||
import { pick } from 'underscore';
|
||||
import { addReward, stringToRewardInter, stringToRewardParam } from '../../../services/activity/giftPackageService';
|
||||
import { addReward, stringToRewardParam } from '../../../services/activity/giftPackageService';
|
||||
|
||||
|
||||
export default function (app: Application) {
|
||||
|
||||
@@ -119,7 +119,7 @@ export async function addReward(roleId: string, roleName: string, sid: string, s
|
||||
}
|
||||
|
||||
//表中的奖励数据(包括礼包)转换成具体对应奖励物品的实例
|
||||
function rewardItemData(reward: Array<RewardParam>) {
|
||||
export function rewardItemData(reward: Array<RewardParam>) {
|
||||
let goods: Array<RewardInter> = [];
|
||||
let heroes: Array<CreateHeroParam> = [];
|
||||
for (let obj of reward) {
|
||||
@@ -209,4 +209,3 @@ export function stringToRewardInter(rewardStr: string): Array<RewardInter> {
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { ActivityModel, ActivityModelType } from '../../db/Activity';
|
||||
import { ActivityMonthlyTicketModel, ActivityMonthlyTicketModelType } from '../../db/ActivityMonthlyTicket';
|
||||
import { RewardParam } from '../../domain/activityField/rewardField';
|
||||
import { MonthlyTicketData } from '../../domain/activityField/monthlyTicketField';
|
||||
import { addReward, stringToRewardInter, stringToRewardParam } from './giftPackageService';
|
||||
import { addReward, stringToRewardParam } from './giftPackageService';
|
||||
import moment = require('moment');
|
||||
import { ServerlistModel } from '../../db/Serverlist';
|
||||
import { sendMailByContent } from './../mailService';
|
||||
@@ -11,7 +11,7 @@ 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 } from '../../pubUtils/util';
|
||||
import { cal, stringWithTypeToRewardInter } from '../../pubUtils/util';
|
||||
import { pinus } from 'pinus';
|
||||
import { getGoldId } from '../role/rewardService';
|
||||
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
|
||||
@@ -44,7 +44,7 @@ export async function monthlyTicketActivity(serverId: number, roleId: string, ty
|
||||
if (playerData.todayIndex - 1 > playerData.dayIndex) {//过期还没领取
|
||||
//下发邮件奖励
|
||||
for (let i = playerData.dayIndex + 1; i < playerData.todayIndex; i++) {
|
||||
let goods = stringToRewardInter(playerData.baseReward)
|
||||
let goods = stringWithTypeToRewardInter(playerData.baseReward)
|
||||
await sendMailByContent(MAIL_TYPE.MONTHLY_REWARD, roleId, { params: [], goods });
|
||||
}
|
||||
await ActivityMonthlyTicketModel.setDayIndex(serverId, roleId, playerData.activityId, playerData.todayIndex - 1);
|
||||
|
||||
@@ -5,11 +5,11 @@ 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 { sendMailByContent, sendMailToGuildByContent } from "../mailService";
|
||||
import { Rank } from "../rankService";
|
||||
import { getServerCreateTime } from "../redisService";
|
||||
import { getActivitiesByType, getActivityById } from "./activityService";
|
||||
import { stringToRewardInter } from "./giftPackageService";
|
||||
|
||||
|
||||
/**
|
||||
@@ -77,11 +77,11 @@ export async function sendRankMail(data: TimeLimitRankData, serverId: number) {
|
||||
if(reward) {
|
||||
await sendMailToGuildByContent(MAIL_TYPE.TIME_LIMIT_RANK, code, {
|
||||
params: [data.tabName,`${rank}`],
|
||||
goods: stringToRewardInter(reward.guildRewards)
|
||||
goods: stringWithTypeToRewardInter(reward.guildRewards)
|
||||
});
|
||||
if(leader.roleId) await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, leader.roleId, {
|
||||
params: [data.tabName,`${rank}`],
|
||||
goods: stringToRewardInter(reward.rewards)
|
||||
goods: stringWithTypeToRewardInter(reward.rewards)
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -93,7 +93,7 @@ export async function sendRankMail(data: TimeLimitRankData, serverId: number) {
|
||||
if(reward) {
|
||||
await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, roleId, {
|
||||
params: [data.tabName, `${rank}`],
|
||||
goods: stringToRewardInter(reward.rewards)
|
||||
goods: stringWithTypeToRewardInter(reward.rewards)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,7 @@ 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 } from "../../pubUtils/util";
|
||||
import { stringToRewardInter } from "../../pubUtils/util";
|
||||
import { parseNumberList, stringWithTypeToRewardInter } from "../../pubUtils/util";
|
||||
import { ActivityBase } from './activityField';
|
||||
|
||||
// 数据库格式
|
||||
@@ -332,7 +331,7 @@ export class PopShopItem {
|
||||
this.productID = data.productID;
|
||||
this.consume = data.consume;
|
||||
this.reward = data.reward;
|
||||
this.rewardInter = stringToRewardInter(data.reward);
|
||||
this.rewardInter = stringWithTypeToRewardInter(data.reward);
|
||||
this.rebate = data.rebate;
|
||||
this.buyCnt = data.buyCnt;
|
||||
this.parent = parent;
|
||||
|
||||
@@ -5,13 +5,16 @@ 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 } from '../consts';
|
||||
import { ABI_STAGE, GACHA_TO_FLOOR, REFRESH_TIME, ROBOT_SYS_TYPE, ITEM_CHANGE_REASON, WAR_TYPE, ACTIVITY_RESOURCES_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');
|
||||
@@ -820,3 +823,50 @@ export function addToMap<T>(map: Map<T, number>, id: T, value: number) {
|
||||
|
||||
// return { topLineup, topLineupCe };
|
||||
// }
|
||||
|
||||
|
||||
//数据格式转换'类型&id&数量|类型&id&数量|' ->> Array<RewardParam> 活动奖励
|
||||
export function stringToRewardParam(rewardStr: string): Array<RewardParam> {
|
||||
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<RewardParam>) {
|
||||
let goods: Array<RewardInter> = [];
|
||||
let heroes: Array<CreateHeroParam> = [];
|
||||
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 goodData = gameData.goods.get(obj.id);//礼包物品
|
||||
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<RewardInter> {
|
||||
let reward = stringToRewardParam(str);
|
||||
let item = rewardItemData(reward);
|
||||
return item.goods||[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user