import { Application, BackendSession, HandlerService } from 'pinus'; import { genCode, resResult } from '../../../pubUtils/util'; import { ITEM_CHANGE_REASON, STATUS } from '../../../consts'; import { addReward, stringToRewardParam } from '../../../services/activity/giftPackageService'; import { getPlayerRebateDataShow, getPlayerRebateData } from '../../../services/activity/rebateService'; import { HistoryOrderModel } from '../../../db/HistoryOrder'; import { UserModel } from '../../../db/User'; export default function (app: Application) { new HandlerService(app, {}); return new RebateHandler(app); } export class RebateHandler { constructor(private app: Application) { } async getData(msg: { activityId: number }, session: BackendSession) { const { activityId } = msg; const roleId = session.get('roleId'); const serverId = session.get('serverId'); const uid = session.get('userid'); let playerData = await getPlayerRebateDataShow(activityId, roleId, serverId, uid); return resResult(STATUS.SUCCESS, { playerData }) } /** * @description 领取奖励 * @param {{ activityId: number}} msg * @param {BackendSession} session * @memberof RebateHandler */ async receiveReward(msg: { activityId: number, day: number }, session: BackendSession) { const { activityId, day } = msg; const roleId = session.get('roleId'); const serverId = session.get('serverId'); const sid = session.get('sid'); const roleName = session.get('roleName'); const uid = session.get('userid'); let playerData = await getPlayerRebateData(activityId, roleId, serverId, uid); let item = playerData.findRebateByDay(day); if(!item) return resResult(STATUS.WRONG_PARMS); if(item.day > playerData.todayIndex) return resResult(STATUS.ACTIVITY_REBATE_DAY_NOT_REACH); if(item.hasReceived) return resResult(STATUS.ACTIVITY_REBATE_HAS_RECEIVED); // console.log('####', playerData.channelId, roleId, day) await HistoryOrderModel.receive(playerData.channelId, roleId, day); let rewardArray = stringToRewardParam(item.rewards); let { goods, addHeros } = await addReward(roleId, roleName, sid, serverId, rewardArray, ITEM_CHANGE_REASON.RECEIVE_REBATE); return resResult(STATUS.SUCCESS, { activityId, day, hasReceived: true, goods, addHeros }); } // debug接口,让自己能返利 async debugSetRebate(msg: { totalPay: number }, session: BackendSession) { const { totalPay } = msg; const uid = session.get('userid'); let user = await UserModel.findUserByUid(uid); if(!user.channelId) { user = await UserModel.findOneAndUpdate({ uid }, { $set: { channelId: genCode(10) } }, { new: true }).lean(); } await HistoryOrderModel.deleteMany({ channelId: user.channelId }); await HistoryOrderModel.insertMany([{ channelId: user.channelId, totalPay }]); return resResult(STATUS.SUCCESS); } }