diff --git a/game-server/app/servers/activity/handler/refreshTaskHandler.ts b/game-server/app/servers/activity/handler/refreshTaskHandler.ts index a84eaae5d..3f1940b5e 100644 --- a/game-server/app/servers/activity/handler/refreshTaskHandler.ts +++ b/game-server/app/servers/activity/handler/refreshTaskHandler.ts @@ -76,6 +76,7 @@ export class RefreshTaskHandler { return resResult(STATUS.SUCCESS, Object.assign(result, { param: { activityId, roundIndex, pageIndex, id, type }, item: dailyItemData, + totalPoint: playerData.totalPoint + dailyItemData.point, })); } diff --git a/game-server/app/servers/battle/handler/donateHandler.ts b/game-server/app/servers/battle/handler/donateHandler.ts index dde557709..7ae784a45 100644 --- a/game-server/app/servers/battle/handler/donateHandler.ts +++ b/game-server/app/servers/battle/handler/donateHandler.ts @@ -5,21 +5,21 @@ import { STATUS, TASK_TYPE } from '../../../consts'; import { DonationModel } from '../../../db/Donation'; import { nowSeconds } from '../../../pubUtils/timeUtil'; import { getArmyDonateBaseByLv, getArmyDonateBoxBaseById } from '../../../pubUtils/data'; -import { GuildModel } from '../../../db/Guild'; +import { GuildModel } from '../../../db/Guild'; import { handleCost, addItems } from '../../../services/rewardService'; import { CHAT_SERVER, GUILD_POINT_WAYS } from '../../../consts'; import { getDonation } from '../../../services/donateService'; import { getUserGuildWithRefActive } from '../../../services/guildService'; import { ARMY } from '../../../pubUtils/dicParam'; import { addActive } from '../../../services/guildService' -import { checkTask } from '../../../services/taskService'; -export default function(app: Application) { +import { checkActivityTask, checkTask } from '../../../services/taskService'; +export default function (app: Application) { return new DonationHandler(app); } export class DonationHandler { constructor(private app: Application) { - + } /** * 捐献所的等级,捐献的次数,战报,捐献达到的基金,领取宝箱记录 @@ -31,18 +31,18 @@ export class DonationHandler { const serverId: number = parseInt(session.get('serverId')); let userGuild = await getUserGuildWithRefActive(roleId, 'donateCnt receiveBoxs guildCode'); - if (!userGuild) + if (!userGuild) return resResult(STATUS.WRONG_PARMS); const { guildCode: code, donateCnt, receiveBoxs } = userGuild; let { donateFund, reports, donationLv } = await getDonation(code, serverId); - return resResult(STATUS.SUCCESS, { receiveBoxs, donateFund, reports, donateCnt:donateCnt||0, donationLv}); + return resResult(STATUS.SUCCESS, { receiveBoxs, donateFund, reports, donateCnt: donateCnt || 0, donationLv }); } /** * 捐献 * @param msg * @param session */ - async donate(msg: {id: number}, session: BackendSession) { + async donate(msg: { id: number }, session: BackendSession) { const { id } = msg; const roleId: string = session.get('roleId'); const roleName: string = session.get('roleName'); @@ -50,20 +50,20 @@ export class DonationHandler { const sid: string = session.get('sid'); const funcs: number[] = session.get('funcs'); let userGuild = await getUserGuildWithRefActive(roleId, 'donateCnt receiveBoxs guildCode'); - if (!userGuild) + if (!userGuild) return resResult(STATUS.WRONG_PARMS); const { guildCode: code, donateCnt: resdonateCnt } = userGuild; - if (resdonateCnt >= ARMY.ARMY_DONATE_TIMES) + if (resdonateCnt >= ARMY.ARMY_DONATE_TIMES) return resResult(STATUS.GUILD_DONATE_TIMES_NOT_ENOUGH); let { donationLv } = await getDonation(code, serverId); let { donateReward } = getArmyDonateBaseByLv(donationLv); let { rewardGood, rewardFund, cosume } = donateReward.get(id); let result = await handleCost(roleId, sid, [cosume]); - if(!result) + if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); let { donateCnt } = await UserGuildModel.donateFund(roleId, 1); - - let { donateFund, reports } = await DonationModel.donation(code, rewardFund, { reports: {id, roleName, time: nowSeconds()}}); + + let { donateFund, reports } = await DonationModel.donation(code, rewardFund, { reports: { id, roleName, time: nowSeconds() } }); let goods = []; if (!!rewardGood) goods = await addItems(roleId, roleName, sid, [rewardGood]); @@ -73,32 +73,34 @@ export class DonationHandler { await addActive(roleId, serverId, GUILD_POINT_WAYS.DONATE, id); // 任务 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 }); } /** * 领取宝箱 * @param msg * @param session - */ - async receiveBox(msg: {id: number}, session: BackendSession) { + */ + async receiveBox(msg: { id: number }, session: BackendSession) { const { id } = msg; const roleId: string = session.get('roleId'); const roleName: string = session.get('roleName'); const sid: string = session.get('sid'); const serverId: number = parseInt(session.get('serverId')); let userGuild = await getUserGuildWithRefActive(roleId, 'donateCnt receiveBoxs guildCode'); - if (!userGuild) + if (!userGuild) return resResult(STATUS.WRONG_PARMS); const { guildCode: code, receiveBoxs: resReceiveBoxs } = userGuild; - if (resReceiveBoxs.indexOf(id) != -1) + if (resReceiveBoxs.indexOf(id) != -1) return resResult(STATUS.GUILD_DONATE_BOXS_IS_GOT); let { boxRewards, fund } = getArmyDonateBoxBaseById(id); let { donateFund, donationLv } = await getDonation(code, serverId); let { boxRewardRatio, requireRewardRatio } = getArmyDonateBaseByLv(donationLv); - if (donateFund < Math.floor(fund * (100 + requireRewardRatio)/100) ) + if (donateFund < Math.floor(fund * (100 + requireRewardRatio) / 100)) return resResult(STATUS.GUILD_DONATE_BOXS_NOT_GOT); - boxRewards = boxRewards.map(({id, count})=>{ + boxRewards = boxRewards.map(({ id, count }) => { return { id, count: count * (boxRewardRatio + 100) }; }); resReceiveBoxs.push(id); @@ -106,4 +108,4 @@ export class DonationHandler { let goods = await addItems(roleId, roleName, sid, boxRewards); return resResult(STATUS.SUCCESS, { receiveBoxs, goods }); } -} \ No newline at end of file +} \ No newline at end of file diff --git a/game-server/app/servers/battle/handler/eventBattleHandler.ts b/game-server/app/servers/battle/handler/eventBattleHandler.ts index f8a1d24d6..567a4c165 100644 --- a/game-server/app/servers/battle/handler/eventBattleHandler.ts +++ b/game-server/app/servers/battle/handler/eventBattleHandler.ts @@ -6,10 +6,10 @@ import { checkEvent, checkEventStatus, getEventSuccessStatus, getEvent, checkQui import { addItems } from '../../../services/rewardService'; import { STATUS } from '../../../consts/statusCode'; import { resResult } from '../../../pubUtils/util'; -import { checkTask } from '../../../services/taskService'; +import { checkActivityTask, checkTask } from '../../../services/taskService'; import { gameData } from '../../../pubUtils/data'; -export default function(app: Application) { +export default function (app: Application) { return new EventBattleHandler(app); } @@ -18,11 +18,11 @@ export class EventBattleHandler { } // 主动获取奇遇事件 - async getEvents(msg: { }, session: BackendSession) { + async getEvents(msg: {}, session: BackendSession) { let roleId = session.get('roleId'); let roleName = session.get('roleName'); let eventStatus = session.get('eventStatus'); - + let event = await getEvent(eventStatus, roleId, roleName); return resResult(STATUS.SUCCESS, { list: event }); @@ -30,44 +30,44 @@ export class EventBattleHandler { // 回答问题 async checkAnswer(msg: { eventId: number, eventCode: string, questionId: number, answer: number }, session: BackendSession) { - const {eventId, eventCode, questionId, answer} = msg; + const { eventId, eventCode, questionId, answer } = msg; let roleId = session.get('roleId'); // let roleName = session.get('roleName'); // let eventStatus = session.get('eventStatus'); let event = await EventRecordModel.getEventRecordByCode(roleId, eventCode); - if(!event) { + if (!event) { return resResult(STATUS.EVENT_RECORD_NOT_FOUND); } let { status, type, eventId: dataEventId, question } = event; - if(status != EVENT_RECORD_STATUS.WAITING) { + if (status != EVENT_RECORD_STATUS.WAITING) { return resResult(STATUS.EVENT_STATUS_ERROR); } - if(dataEventId != eventId) { + if (dataEventId != eventId) { return resResult(STATUS.EVENT_WRONG_ID); } let curQuestion = question.find(cur => cur.id == questionId); - if(!curQuestion) return resResult(STATUS.EVENT_QUESTION_NOT_FOUND); + if (!curQuestion) return resResult(STATUS.EVENT_QUESTION_NOT_FOUND); - let {isCorrect, answerNo} = checkQuiz(questionId, answer); - let result = await EventRecordModel.saveEventAnswer(eventCode, questionId, isCorrect?EVENT_ANSWER_STATUS.CORRECT:EVENT_ANSWER_STATUS.WRONG); - if(!result) { + let { isCorrect, answerNo } = checkQuiz(questionId, answer); + let result = await EventRecordModel.saveEventAnswer(eventCode, questionId, isCorrect ? EVENT_ANSWER_STATUS.CORRECT : EVENT_ANSWER_STATUS.WRONG); + if (!result) { return resResult(STATUS.EVENT_RECORD_NOT_FOUND); } let { question: newQuestion } = result; let isClear = true, allCorrect = true; - for(let {status} of newQuestion) { - if(status) { - if(status == EVENT_ANSWER_STATUS.WRONG) { - allCorrect = false; - } - }else { - isClear = false; allCorrect = false; + for (let { status } of newQuestion) { + if (status) { + if (status == EVENT_ANSWER_STATUS.WRONG) { + allCorrect = false; + } + } else { + isClear = false; allCorrect = false; } } - if(isClear) { - await EventRecordModel.setStatusByCode(roleId, eventCode, allCorrect?EVENT_RECORD_STATUS.BATTLE_SUCCESS:EVENT_RECORD_STATUS.BATTLE_FAIL); + if (isClear) { + await EventRecordModel.setStatusByCode(roleId, eventCode, allCorrect ? EVENT_RECORD_STATUS.BATTLE_SUCCESS : EVENT_RECORD_STATUS.BATTLE_FAIL); } return resResult(STATUS.SUCCESS, { eventCode, eventId, questionId, isCorrect, answerNo }); @@ -75,59 +75,62 @@ export class EventBattleHandler { // 获取关卡列表 async receiveEventReward(msg: { eventId: number, eventCode: string }, session: BackendSession) { - const {eventId, eventCode} = msg; + const { eventId, eventCode } = msg; let roleId = session.get('roleId'); let roleName = session.get('roleName'); let eventStatus = session.get('eventStatus'); let sid = session.get('sid'); + const serverId = session.get('serverId'); const funcs: number[] = session.get('funcs'); let event = await EventRecordModel.getEventRecordByCode(roleId, eventCode); - if(!event) { + if (!event) { return resResult(STATUS.EVENT_RECORD_NOT_FOUND); } let { status, type, eventId: dataEventId, question } = event; let flag = checkEventStatus(type, status); - if(!flag) { + if (!flag) { return resResult(STATUS.EVENT_STATUS_ERROR); } let checkResult = getEventSuccessStatus(type, status, question); - if(checkResult.status == -1) { + if (checkResult.status == -1) { return resResult(STATUS.EVENT_QUESTION_NO_ANSWER); } let isSuccess = checkResult.isSuccess; - if(dataEventId != eventId) { + if (dataEventId != eventId) { return resResult(STATUS.EVENT_WRONG_ID); } let dicEvent = gameData.event.get(eventId); - if(!dicEvent) { + if (!dicEvent) { return resResult(STATUS.EVENT_INFO_NOT_FOUND); } // 保存状态 - let result = await EventRecordModel.setStatusByCode(roleId, eventCode, isSuccess?EVENT_RECORD_STATUS.SUCCESS_RECEIVED:EVENT_RECORD_STATUS.FAIL_RECEIVED); + let result = await EventRecordModel.setStatusByCode(roleId, eventCode, isSuccess ? EVENT_RECORD_STATUS.SUCCESS_RECEIVED : EVENT_RECORD_STATUS.FAIL_RECEIVED); // 保存奖励 - let reward = isSuccess?dicEvent.winReward:dicEvent.loseReward; + let reward = isSuccess ? dicEvent.winReward : dicEvent.loseReward; let goods = await addItems(roleId, roleName, sid, reward); - if(eventStatus == EVENT_STATUS.STARTING) { // 如果是第一次开启的挑战,保存成开启状态 + if (eventStatus == EVENT_STATUS.STARTING) { // 如果是第一次开启的挑战,保存成开启状态 await RoleModel.setEventStatus(roleId, EVENT_STATUS.OPEN); // 第一场时间挑战完,开始正常刷新事件,所以刷新时间也重置起来 session.set('eventStatus', EVENT_STATUS.OPEN); - session.push('eventStatus', () => {}); + session.push('eventStatus', () => { }); } // 推送消息刷新 await checkEvent(session, true); // 任务 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, { - isSuccess, - eventCode: result.eventCode, - eventId: result.eventId, - status: result.status, - goods + isSuccess, + eventCode: result.eventCode, + eventId: result.eventId, + status: result.status, + goods }); } } \ No newline at end of file diff --git a/game-server/app/servers/chat/handler/chatHandler.ts b/game-server/app/servers/chat/handler/chatHandler.ts index 23ddb0179..123ad7a99 100644 --- a/game-server/app/servers/chat/handler/chatHandler.ts +++ b/game-server/app/servers/chat/handler/chatHandler.ts @@ -1,13 +1,13 @@ import { CHANNEL_PREFIX, MSG_SOURCE, CHANNEL_TYPE } from './../../../consts/constModules/chatConst'; -import {Application, BackendSession} from 'pinus'; +import { Application, BackendSession } from 'pinus'; import { resResult } from '../../../pubUtils/util'; 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 { 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) { return new ChatHandler(app); } @@ -22,7 +22,7 @@ export class ChatHandler { * @param {Object} session * */ - async send(msg: {content: string , target: string}, session: BackendSession) { + async send(msg: { content: string, target: string }, session: BackendSession) { let rid = session.get('rid'); let username = session.uid.split('*')[0]; let channelService = this.app.get('channelService'); @@ -48,7 +48,7 @@ export class ChatHandler { } } - async send2(msg: {content: string , target: string}, session: BackendSession) { + async send2(msg: { content: string, target: string }, session: BackendSession) { let rid = session.get('rid'); let username = session.uid.split('*')[0]; let channelService = this.app.get('channelService'); @@ -97,7 +97,9 @@ export class ChatHandler { if (!msgData) return resResult(STATUS.WRONG_PARMS); 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); } @@ -110,6 +112,7 @@ export class ChatHandler { async sendPrivateMessage(msg: { type: number, content: string, targetRoleId: string, targetMsgCode: string }, session: BackendSession) { const { type, content, targetRoleId, targetMsgCode } = msg; const roleId = session.get('roleId'); + const serverId = session.get('serverId'); const roleName = session.get('roleName'); const funcs: number[] = session.get('funcs'); const sid = session.get('sid'); @@ -118,7 +121,10 @@ export class ChatHandler { if (!msgData) return resResult(STATUS.WRONG_PARMS); // 任务 - 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); } @@ -141,8 +147,8 @@ export class ChatHandler { const roleId = session.get('roleId'); const roleName = session.get('roleName'); - const recentPrivateChats = await recentPrivateChatInfos(roleId, roleName)||[]; - + const recentPrivateChats = await recentPrivateChatInfos(roleId, roleName) || []; + return resResult(STATUS.SUCCESS, { recentPrivateChats }); @@ -169,7 +175,7 @@ export class ChatHandler { * @param {{targetRoleId: string, fromSeqId: number, count: number}} msg 聊天对象;聊天消息的顺序 id,不传为从最新开始;count 为消息条数 * @memberof ChatHandler */ - async getPrivateMessage(msg: {targetRoleId: string, fromSeqId: number, count: number}, session: BackendSession) { + async getPrivateMessage(msg: { targetRoleId: string, fromSeqId: number, count: number }, session: BackendSession) { const roleId = session.get('roleId'); const { targetRoleId, fromSeqId = Infinity, count = DEFAULT_MSG_PER_PAGE } = msg; const msgs = await getPrivateMessages(roleId, targetRoleId, fromSeqId, count); @@ -201,7 +207,7 @@ export class ChatHandler { * @returns * @memberof ChatHandler */ - async accuse(msg: {targetRoleId: string, targetMsgCode: string; reason: number}, session: BackendSession) { + async accuse(msg: { targetRoleId: string, targetMsgCode: string; reason: number }, session: BackendSession) { const roleId = session.get('roleId'); const { targetRoleId, targetMsgCode, reason } = msg; const accuseRec = await createAccuseData(roleId, targetRoleId, targetMsgCode, reason); diff --git a/game-server/app/servers/order/handler/orderHandler.ts b/game-server/app/servers/order/handler/orderHandler.ts index 01fff36a5..33fdcc74e 100644 --- a/game-server/app/servers/order/handler/orderHandler.ts +++ b/game-server/app/servers/order/handler/orderHandler.ts @@ -210,10 +210,10 @@ export class orderHandler { * @param {BackendSession} session * @memberof orderHandler */ - async debugOrder(msg: { productID: string, magicWord: string, paramStr: string }, session: BackendSession) { - const { magicWord, productID, paramStr } = msg; - if (magicWord !== DEBUG_MAGIC_WORD) { - return resResult(STATUS.TOKEN_ERR); + async debugOrder(msg: { productID: string, magicWord: string, paramStr: string, activityId: number }, session: BackendSession) { + const { magicWord, productID, paramStr, activityId } = msg; + if (magicWord !== DEBUG_MAGIC_WORD || !activityId) { + return resResult(STATUS.WRONG_PARMS); } const roleId = session.get('roleId'); @@ -241,13 +241,13 @@ export class orderHandler { let orderID = '';//平台订单号 let sdkOrderInfo = null;//客户端需要的平台订单信息 - let { activityGroupId } = await ServerlistModel.findByServerId(serverId); - let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, productType, -1); - if (activityArray.length === 0) { - return resResult(STATUS.ACTIVITY_MISSING); - } - let activityData = activityArray[0]; - let activityId = activityData.activityId; + // let { activityGroupId } = await ServerlistModel.findByServerId(serverId); + // let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, productType, -1); + // if (activityArray.length === 0) { + // return resResult(STATUS.ACTIVITY_MISSING); + // } + let activityData = await ActivityModel.findActivity(activityId); + if (!activityData) return resResult(STATUS.ACTIVITY_MISSING); await UserOrderModel.applyOrder(serverId, roleId, productID, localOrderID, orderID, price, payType, activityId, paramStr, message); //订单成功 diff --git a/game-server/app/servers/role/handler/itemHandler.ts b/game-server/app/servers/role/handler/itemHandler.ts index 8a4df660b..4dc879148 100644 --- a/game-server/app/servers/role/handler/itemHandler.ts +++ b/game-server/app/servers/role/handler/itemHandler.ts @@ -29,22 +29,33 @@ export class ItemHandler { // 道具的使用 - public async useItem(msg: { id: number, selected: Array }, session: BackendSession) { - let { id, selected } = msg; + public async useItem(msg: { id: number, selected: Array, count: number }, session: BackendSession) { + let { id, selected, count } = msg; const roleId = session.get('roleId'); const serverId = session.get('serverId'); const sid = session.get('sid'); const roleName = session.get('roleName'); const funcs = session.get('funcs'); - let consumeResult = await handleCost(roleId, sid, [{ id: id, count: 1 }]); - if (!consumeResult) return resResult(STATUS.ACTIVITY_RES_NOT_ENOUGH); + if (count > 0) { + // 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 giftID = dicGoods.gift; - let result = await useGiftPackage(roleId, roleName, sid, serverId, funcs, giftID, selected) + let dicGoods = gameData.goods.get(id); + if (!dicGoods) { + return resResult(STATUS.ACTIVITY_DATA_ERROR); + } + let giftID = dicGoods.gift; + 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.WRONG_PARMS); - return resResult(STATUS.SUCCESS, result); } } \ No newline at end of file diff --git a/game-server/app/services/activityService.ts b/game-server/app/services/activityService.ts index 1107e4b84..32b22dc2c 100644 --- a/game-server/app/services/activityService.ts +++ b/game-server/app/services/activityService.ts @@ -167,7 +167,7 @@ export async function getActivity(serverId: number, roleId: string, activityId: break; } default: { - console.log('未知活动类型.........') + console.log('未知活动类型.........', activityType) break; } } diff --git a/game-server/app/services/giftPackageService.ts b/game-server/app/services/giftPackageService.ts index 0c2db1b0e..7ea2d4977 100644 --- a/game-server/app/services/giftPackageService.ts +++ b/game-server/app/services/giftPackageService.ts @@ -14,9 +14,10 @@ import { decodeArrayListStr } from '../pubUtils/util'; * @param giftID 礼包id * @param roleId 角色id * @param roleName 角色名称 + * @param giftCount 一共消耗多少个礼包 * @param sid */ -export async function useGiftPackage(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[], giftID: number, selected: Array = []) { +export async function useGiftPackage(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[], giftID: number, selected: Array = [], giftCount: number) { console.log("bbbbbbbb", giftID, selected) let result = { goods: [], addHeros: [] } let giftPackageData = gameData.giftPackage.get(giftID); @@ -29,7 +30,16 @@ export async function useGiftPackage(roleId: string, roleName: string, sid: stri switch (giftType) { 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; } case GIFT_PACKAGE_TYPE.SELECTED_X://手选 @@ -39,16 +49,27 @@ export async function useGiftPackage(roleId: string, roleName: string, sid: stri break; } 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; } case GIFT_PACKAGE_TYPE.RANDOM_X://随机 { let count = giftPackageData.count;//随机个数 - let randomArray = randomSelectedData(count); - let selectedReward = getSelectedReward(giftPackageData, randomArray) - result = await addReward(roleId, roleName, sid, serverId, funcs, selectedReward); - + let allReward = []; + for (let i = 0; i < giftCount; i++) { + 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; } default: @@ -114,10 +135,15 @@ export function getSelectedReward(giftData: DicGiftPackage, selected: Array k); + 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 活动奖励 diff --git a/game-server/app/services/rewardService.ts b/game-server/app/services/rewardService.ts index 33d607e7b..61fdf5ea5 100644 --- a/game-server/app/services/rewardService.ts +++ b/game-server/app/services/rewardService.ts @@ -123,7 +123,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go //统计装备 if (equipInfos.length > 0) { 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 } }) }) } //货币推送 diff --git a/shared/consts/constModules/sysConst.ts b/shared/consts/constModules/sysConst.ts index a10b79eb0..50390391b 100644 --- a/shared/consts/constModules/sysConst.ts +++ b/shared/consts/constModules/sysConst.ts @@ -646,7 +646,7 @@ export enum TASK_TYPE { EQUIP_QUALITY_COUNT = 83, // 获得*件品质的*装备 HERO_WAKE_UP_COUNT = 84, // *名武将觉醒 GUILD_JOIN_ACTIVITY_END = 85, // 参与*军团活动到结束 - ACTIVITY_RMB = 86, // 某个活动累计充值*元 + ACTIVITY_RMB = 86, // 累计充值*元 } // 卡池类型 diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index a27092eb2..fb98bff0a 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -367,6 +367,7 @@ export const STATUS = { MONOPOLY_BANK: { code: 50030, simStr: '已经存过' }, MONOPOLY_BANK_COUNT_ERROR: { code: 50031, simStr: '数量错误' }, MONOPOLY_BANK_SAVE_MAX: { code: 50032, simStr: '超过最大限制数量' }, + NOT_GIFTPACKAGE: { code: 50033, simStr: '非礼包类型' }, // GM后台相关状态 60000 - 69999 GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' }, GM_MISS_API: { code: 60002, simStr: '未找到该接口' }, diff --git a/shared/pubUtils/taskUtil.ts b/shared/pubUtils/taskUtil.ts index cf594210d..216ab2318 100644 --- a/shared/pubUtils/taskUtil.ts +++ b/shared/pubUtils/taskUtil.ts @@ -1176,11 +1176,28 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin } 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; } break; } + case TASK_TYPE.GUILD_DONATE: + { + addCount = count; + break; + } + case TASK_TYPE.CHAT: + { + if (param[0] == paramObj.chatType) { + addCount = count; + break; + } + } default: addCount = 0; break; diff --git a/shared/resource/jsons/dic_zyz_taskType.json b/shared/resource/jsons/dic_zyz_taskType.json index 274e55bf9..deade08e6 100644 --- a/shared/resource/jsons/dic_zyz_taskType.json +++ b/shared/resource/jsons/dic_zyz_taskType.json @@ -767,8 +767,8 @@ { "id": 86, "name": "充值RMB", - "info": "某个活动充值*元", - "param": "activityId&RMB", + "info": "累计充值*元", + "param": "RMB", "string": "累计充值金额", "content": 0, "condition": "RMB"