活动:礼包添加批量参数

This commit is contained in:
qiaoxin
2021-06-21 18:19:37 +08:00
parent 789660a701
commit 7c28103192
13 changed files with 170 additions and 103 deletions
@@ -76,6 +76,7 @@ export class RefreshTaskHandler {
return resResult(STATUS.SUCCESS, Object.assign(result, { return resResult(STATUS.SUCCESS, Object.assign(result, {
param: { activityId, roundIndex, pageIndex, id, type }, param: { activityId, roundIndex, pageIndex, id, type },
item: dailyItemData, item: dailyItemData,
totalPoint: playerData.totalPoint + dailyItemData.point,
})); }));
} }
@@ -12,7 +12,7 @@ import { getDonation } from '../../../services/donateService';
import { getUserGuildWithRefActive } from '../../../services/guildService'; import { getUserGuildWithRefActive } from '../../../services/guildService';
import { ARMY } from '../../../pubUtils/dicParam'; import { ARMY } from '../../../pubUtils/dicParam';
import { addActive } from '../../../services/guildService' import { addActive } from '../../../services/guildService'
import { checkTask } from '../../../services/taskService'; import { checkActivityTask, checkTask } from '../../../services/taskService';
export default function (app: Application) { export default function (app: Application) {
return new DonationHandler(app); return new DonationHandler(app);
} }
@@ -73,6 +73,8 @@ export class DonationHandler {
await addActive(roleId, serverId, GUILD_POINT_WAYS.DONATE, id); await addActive(roleId, serverId, GUILD_POINT_WAYS.DONATE, id);
// 任务 // 任务
await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_DONATE, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_DONATE, 1, true, {});
//活动任务
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.GUILD_DONATE, 1);
return resResult(STATUS.SUCCESS, { donateFund, reports, donateCnt, goods }); return resResult(STATUS.SUCCESS, { donateFund, reports, donateCnt, goods });
} }
@@ -6,7 +6,7 @@ import { checkEvent, checkEventStatus, getEventSuccessStatus, getEvent, checkQui
import { addItems } from '../../../services/rewardService'; import { addItems } from '../../../services/rewardService';
import { STATUS } from '../../../consts/statusCode'; import { STATUS } from '../../../consts/statusCode';
import { resResult } from '../../../pubUtils/util'; import { resResult } from '../../../pubUtils/util';
import { checkTask } from '../../../services/taskService'; import { checkActivityTask, checkTask } from '../../../services/taskService';
import { gameData } from '../../../pubUtils/data'; import { gameData } from '../../../pubUtils/data';
export default function (app: Application) { export default function (app: Application) {
@@ -80,6 +80,7 @@ export class EventBattleHandler {
let roleName = session.get('roleName'); let roleName = session.get('roleName');
let eventStatus = session.get('eventStatus'); let eventStatus = session.get('eventStatus');
let sid = session.get('sid'); let sid = session.get('sid');
const serverId = session.get('serverId');
const funcs: number[] = session.get('funcs'); const funcs: number[] = session.get('funcs');
let event = await EventRecordModel.getEventRecordByCode(roleId, eventCode); let event = await EventRecordModel.getEventRecordByCode(roleId, eventCode);
@@ -122,6 +123,8 @@ export class EventBattleHandler {
await checkEvent(session, true); await checkEvent(session, true);
// 任务 // 任务
await checkTask(roleId, sid, funcs, TASK_TYPE.BATTLE_EVENT, 1, true, { eventType: dicEvent.eventType }) await checkTask(roleId, sid, funcs, TASK_TYPE.BATTLE_EVENT, 1, true, { eventType: dicEvent.eventType })
// 活动任务
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_EVENT, 1, { eventType: dicEvent.eventType })
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
isSuccess, isSuccess,
eventCode: result.eventCode, eventCode: result.eventCode,
@@ -4,7 +4,7 @@ import { resResult } from '../../../pubUtils/util';
import { DEFAULT_MSG_PER_PAGE, STATUS, TASK_TYPE } from '../../../consts'; import { DEFAULT_MSG_PER_PAGE, STATUS, TASK_TYPE } from '../../../consts';
import { createAccuseData, createGroupMsg, createPrivateMsg, getPrivateMessages, pushGroupMsgToRoom, pushMsgToRole, updatePrivateMsgReadInfo, recentPrivateChatInfos, recentWorldMsgs, recentSysMsgs, recentGuildMsgs } from '../../../services/chatService'; import { createAccuseData, createGroupMsg, createPrivateMsg, getPrivateMessages, pushGroupMsgToRoom, pushMsgToRole, updatePrivateMsgReadInfo, recentPrivateChatInfos, recentWorldMsgs, recentSysMsgs, recentGuildMsgs } from '../../../services/chatService';
import { getSimpleRoleInfo } from '../../../services/roleService'; import { getSimpleRoleInfo } from '../../../services/roleService';
import { checkTaskWithArgs } from '../../../services/taskService'; import { checkActivityTask, checkTaskWithArgs } from '../../../services/taskService';
export default function (app: Application) { export default function (app: Application) {
@@ -98,6 +98,8 @@ export class ChatHandler {
await pushGroupMsgToRoom(msgData); await pushGroupMsgToRoom(msgData);
// 任务 // 任务
await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.CHAT, [CHANNEL_TYPE.get(channel)]); await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.CHAT, [CHANNEL_TYPE.get(channel)]);
//活动任务
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.CHAT, 1, { chatType: CHANNEL_TYPE.get(channel) })
return resResult(STATUS.SUCCESS); return resResult(STATUS.SUCCESS);
} }
@@ -110,6 +112,7 @@ export class ChatHandler {
async sendPrivateMessage(msg: { type: number, content: string, targetRoleId: string, targetMsgCode: string }, session: BackendSession) { async sendPrivateMessage(msg: { type: number, content: string, targetRoleId: string, targetMsgCode: string }, session: BackendSession) {
const { type, content, targetRoleId, targetMsgCode } = msg; const { type, content, targetRoleId, targetMsgCode } = msg;
const roleId = session.get('roleId'); const roleId = session.get('roleId');
const serverId = session.get('serverId');
const roleName = session.get('roleName'); const roleName = session.get('roleName');
const funcs: number[] = session.get('funcs'); const funcs: number[] = session.get('funcs');
const sid = session.get('sid'); const sid = session.get('sid');
@@ -119,6 +122,9 @@ export class ChatHandler {
// 任务 // 任务
await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.CHAT, [CHANNEL_TYPE.get('private')]); await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.CHAT, [CHANNEL_TYPE.get('private')]);
//活动任务
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.CHAT, 1, { chatType: CHANNEL_TYPE.get('private') })
return resResult(STATUS.SUCCESS, msgData); return resResult(STATUS.SUCCESS, msgData);
} }
@@ -210,10 +210,10 @@ export class orderHandler {
* @param {BackendSession} session * @param {BackendSession} session
* @memberof orderHandler * @memberof orderHandler
*/ */
async debugOrder(msg: { productID: string, magicWord: string, paramStr: string }, session: BackendSession) { async debugOrder(msg: { productID: string, magicWord: string, paramStr: string, activityId: number }, session: BackendSession) {
const { magicWord, productID, paramStr } = msg; const { magicWord, productID, paramStr, activityId } = msg;
if (magicWord !== DEBUG_MAGIC_WORD) { if (magicWord !== DEBUG_MAGIC_WORD || !activityId) {
return resResult(STATUS.TOKEN_ERR); return resResult(STATUS.WRONG_PARMS);
} }
const roleId = session.get('roleId'); const roleId = session.get('roleId');
@@ -241,13 +241,13 @@ export class orderHandler {
let orderID = '';//平台订单号 let orderID = '';//平台订单号
let sdkOrderInfo = null;//客户端需要的平台订单信息 let sdkOrderInfo = null;//客户端需要的平台订单信息
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); // let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, productType, -1); // let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, productType, -1);
if (activityArray.length === 0) { // if (activityArray.length === 0) {
return resResult(STATUS.ACTIVITY_MISSING); // return resResult(STATUS.ACTIVITY_MISSING);
} // }
let activityData = activityArray[0]; let activityData = await ActivityModel.findActivity(activityId);
let activityId = activityData.activityId; if (!activityData) return resResult(STATUS.ACTIVITY_MISSING);
await UserOrderModel.applyOrder(serverId, roleId, productID, localOrderID, orderID, price, payType, activityId, paramStr, message); await UserOrderModel.applyOrder(serverId, roleId, productID, localOrderID, orderID, price, payType, activityId, paramStr, message);
//订单成功 //订单成功
@@ -29,22 +29,33 @@ export class ItemHandler {
// 道具的使用 // 道具的使用
public async useItem(msg: { id: number, selected: Array<number> }, session: BackendSession) { public async useItem(msg: { id: number, selected: Array<number>, count: number }, session: BackendSession) {
let { id, selected } = msg; let { id, selected, count } = msg;
const roleId = session.get('roleId'); const roleId = session.get('roleId');
const serverId = session.get('serverId'); const serverId = session.get('serverId');
const sid = session.get('sid'); const sid = session.get('sid');
const roleName = session.get('roleName'); const roleName = session.get('roleName');
const funcs = session.get('funcs'); const funcs = session.get('funcs');
let consumeResult = await handleCost(roleId, sid, [{ id: id, count: 1 }]); if (count > 0) {
if (!consumeResult) return resResult(STATUS.ACTIVITY_RES_NOT_ENOUGH); // let consumeResult = await handleCost(roleId, sid, [{ id: id, count: count }]);
// if (!consumeResult) return resResult(STATUS.ACTIVITY_RES_NOT_ENOUGH);
let dicGoods = gameData.goods.get(id); let dicGoods = gameData.goods.get(id);
if (!dicGoods) {
return resResult(STATUS.ACTIVITY_DATA_ERROR);
}
let giftID = dicGoods.gift; let giftID = dicGoods.gift;
let result = await useGiftPackage(roleId, roleName, sid, serverId, funcs, giftID, selected) if (!giftID) {
return resResult(STATUS.NOT_GIFTPACKAGE);
}
let result = await useGiftPackage(roleId, roleName, sid, serverId, funcs, giftID, selected, count)
return resResult(STATUS.SUCCESS, result); return resResult(STATUS.SUCCESS, result);
} }
return resResult(STATUS.WRONG_PARMS);
}
} }
+1 -1
View File
@@ -167,7 +167,7 @@ export async function getActivity(serverId: number, roleId: string, activityId:
break; break;
} }
default: { default: {
console.log('未知活动类型.........') console.log('未知活动类型.........', activityType)
break; break;
} }
} }
+37 -11
View File
@@ -14,9 +14,10 @@ import { decodeArrayListStr } from '../pubUtils/util';
* @param giftID 礼包id * @param giftID 礼包id
* @param roleId 角色id * @param roleId 角色id
* @param roleName 角色名称 * @param roleName 角色名称
* @param giftCount 一共消耗多少个礼包
* @param sid * @param sid
*/ */
export async function useGiftPackage(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[], giftID: number, selected: Array<number> = []) { export async function useGiftPackage(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[], giftID: number, selected: Array<number> = [], giftCount: number) {
console.log("bbbbbbbb", giftID, selected) console.log("bbbbbbbb", giftID, selected)
let result = { goods: [], addHeros: [] } let result = { goods: [], addHeros: [] }
let giftPackageData = gameData.giftPackage.get(giftID); let giftPackageData = gameData.giftPackage.get(giftID);
@@ -29,7 +30,16 @@ export async function useGiftPackage(roleId: string, roleName: string, sid: stri
switch (giftType) { switch (giftType) {
case GIFT_PACKAGE_TYPE.ALL://全部 case GIFT_PACKAGE_TYPE.ALL://全部
{ {
result = await addReward(roleId, roleName, sid, serverId, funcs, reward); let allReward = [];
if (giftCount > 1) {
for (let obj of reward) {
allReward.push({ type: obj.type, id: obj.id, count: obj.count * giftCount })
}
} else {
allReward = reward;
}
result = await addReward(roleId, roleName, sid, serverId, funcs, allReward);
break; break;
} }
case GIFT_PACKAGE_TYPE.SELECTED_X://手选 case GIFT_PACKAGE_TYPE.SELECTED_X://手选
@@ -39,16 +49,27 @@ export async function useGiftPackage(roleId: string, roleName: string, sid: stri
break; break;
} }
let selectedReward = getSelectedReward(giftPackageData, selected) let selectedReward = getSelectedReward(giftPackageData, selected)
result = await addReward(roleId, roleName, sid, serverId, funcs, selectedReward); let allReward = [];
if (giftCount > 1) {
for (let obj of selectedReward) {
allReward.push({ type: obj.type, id: obj.id, count: obj.count * giftCount })
}
} else {
allReward = selectedReward;
}
result = await addReward(roleId, roleName, sid, serverId, funcs, allReward);
break; break;
} }
case GIFT_PACKAGE_TYPE.RANDOM_X://随机 case GIFT_PACKAGE_TYPE.RANDOM_X://随机
{ {
let count = giftPackageData.count;//随机个数 let count = giftPackageData.count;//随机个数
let randomArray = randomSelectedData(count); let allReward = [];
let selectedReward = getSelectedReward(giftPackageData, randomArray) for (let i = 0; i < giftCount; i++) {
result = await addReward(roleId, roleName, sid, serverId, funcs, selectedReward); let selectedArray = randomSelectedData(giftPackageData.reward.length, count);
let selectedReward = getSelectedReward(giftPackageData, selectedArray)
allReward = allReward.concat(selectedReward);
}
result = await addReward(roleId, roleName, sid, serverId, funcs, allReward);
break; break;
} }
default: default:
@@ -114,10 +135,15 @@ export function getSelectedReward(giftData: DicGiftPackage, selected: Array<numb
return selectedReward; return selectedReward;
} }
function randomSelectedData(count: number) { function randomSelectedData(total: number, count: number) {
let arr = []; var selected: number[] = []; //temp存放生成的随机数组
var arr = Array.from({ length: total }, (v, k) => k);
return arr; for (let i = 0; i < count; i++) {
var num = Math.floor(Math.random() * arr.length); //生成随机数num
selected.push(arr[num]); //获取arr[num]并放入temp
arr.splice(num, 1);
}
return selected;
} }
//数据格式转换'类型&id&数量|类型&id&数量|' ->> Array<RewardParam> 活动奖励 //数据格式转换'类型&id&数量|类型&id&数量|' ->> Array<RewardParam> 活动奖励
+1 -1
View File
@@ -123,7 +123,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
//统计装备 //统计装备
if (equipInfos.length > 0) { if (equipInfos.length > 0) {
let { serverId } = await RoleModel.findByRoleId(roleId); let { serverId } = await RoleModel.findByRoleId(roleId);
await checkActivityTask(serverId, sid, [], roleId, TASK_TYPE.EQUIP_QUALITY_COUNT, equipInfos.length, { equips: equipInfos }) await checkActivityTask(serverId, sid, [], roleId, TASK_TYPE.EQUIP_QUALITY_COUNT, equipInfos.length, { equips: equipInfos.map(obj => { return { quality: obj.quality } }) })
} }
//货币推送 //货币推送
+1 -1
View File
@@ -646,7 +646,7 @@ export enum TASK_TYPE {
EQUIP_QUALITY_COUNT = 83, // 获得*件品质的*装备 EQUIP_QUALITY_COUNT = 83, // 获得*件品质的*装备
HERO_WAKE_UP_COUNT = 84, // *名武将觉醒 HERO_WAKE_UP_COUNT = 84, // *名武将觉醒
GUILD_JOIN_ACTIVITY_END = 85, // 参与*军团活动到结束 GUILD_JOIN_ACTIVITY_END = 85, // 参与*军团活动到结束
ACTIVITY_RMB = 86, // 某个活动累计充值*元 ACTIVITY_RMB = 86, // 累计充值*元
} }
// 卡池类型 // 卡池类型
+1
View File
@@ -367,6 +367,7 @@ export const STATUS = {
MONOPOLY_BANK: { code: 50030, simStr: '已经存过' }, MONOPOLY_BANK: { code: 50030, simStr: '已经存过' },
MONOPOLY_BANK_COUNT_ERROR: { code: 50031, simStr: '数量错误' }, MONOPOLY_BANK_COUNT_ERROR: { code: 50031, simStr: '数量错误' },
MONOPOLY_BANK_SAVE_MAX: { code: 50032, simStr: '超过最大限制数量' }, MONOPOLY_BANK_SAVE_MAX: { code: 50032, simStr: '超过最大限制数量' },
NOT_GIFTPACKAGE: { code: 50033, simStr: '非礼包类型' },
// GM后台相关状态 60000 - 69999 // GM后台相关状态 60000 - 69999
GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' }, GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' },
GM_MISS_API: { code: 60002, simStr: '未找到该接口' }, GM_MISS_API: { code: 60002, simStr: '未找到该接口' },
+18 -1
View File
@@ -1176,11 +1176,28 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin
} }
case TASK_TYPE.ACTIVITY_RMB: case TASK_TYPE.ACTIVITY_RMB:
{ {
if (paramObj.activityId == param[0]) { addCount = count;
break;
}
case TASK_TYPE.BATTLE_EVENT:
{
if (param[0] == paramObj.eventType) {
addCount = count; addCount = count;
} }
break; break;
} }
case TASK_TYPE.GUILD_DONATE:
{
addCount = count;
break;
}
case TASK_TYPE.CHAT:
{
if (param[0] == paramObj.chatType) {
addCount = count;
break;
}
}
default: default:
addCount = 0; addCount = 0;
break; break;
+2 -2
View File
@@ -767,8 +767,8 @@
{ {
"id": 86, "id": 86,
"name": "充值RMB", "name": "充值RMB",
"info": "某个活动充值*元", "info": "累计充值*元",
"param": "activityId&RMB", "param": "RMB",
"string": "累计充值金额", "string": "累计充值金额",
"content": 0, "content": 0,
"condition": "RMB" "condition": "RMB"