import { Application, BackendSession } from 'pinus'; import { UserGuildModel } from '../../../db/UserGuild'; import { resResult } from '../../../pubUtils/util'; import { STATUS } from '../../../consts'; import { DonationModel } from '../../../db/Donation'; import { nowSeconds } from '../../../pubUtils/timeUtil'; export default function(app: Application) { return new DonationHandler(app); } export class DonationHandler { constructor(private app: Application) { } async getDonation(msg: {}, session: BackendSession) { const roleId: string = session.get('roleId'); let userGuild = await UserGuildModel.getMyGuild(roleId,'donateCnt receiveBoxs guildCode'); if (!userGuild) return resResult(STATUS.WRONG_PARMS); const { guildCode: code, donateCnt, receiveBoxs } = userGuild; let { donateFund, reports } = await DonationModel.getDonation(code); return resResult(STATUS.SUCCESS, { receiveBoxs, donateFund, reports, donateCnt }); } async donate(msg: {id: number}, session: BackendSession) { const { id } = msg; const roleId: string = session.get('roleId'); const roleName: string = session.get('roleName'); let userGuild = await UserGuildModel.getMyGuild(roleId,'donateCnt receiveBoxs guildCode'); if (!userGuild) return resResult(STATUS.WRONG_PARMS); const { guildCode: code, donateCnt: resdonateCnt } = userGuild; if (resdonateCnt <= 0) return resResult(STATUS.SUCCESS); let { donateCnt } = await UserGuildModel.donateFund(roleId, 1); let fund;//捐献TODO let report = {id, roleName, time: nowSeconds()}; let { donateFund, reports } = await DonationModel.donation(code, fund, report); return resResult(STATUS.SUCCESS, { donateFund, reports, donateCnt }); } async receiveBox(msg: {id: number}, session: BackendSession) { const { id } = msg; const roleId: string = session.get('roleId'); let userGuild = await UserGuildModel.getMyGuild(roleId,'donateCnt receiveBoxs guildCode'); if (!userGuild) return resResult(STATUS.WRONG_PARMS); const { guildCode: code, donateCnt: resdonateCnt, receiveBoxs: resReceiveBoxs } = userGuild; if (resReceiveBoxs.indexOf(id) != -1) return resResult(STATUS.SUCCESS); if (resdonateCnt <= 0) return resResult(STATUS.SUCCESS); resReceiveBoxs.push(id); let { receiveBoxs } = await UserGuildModel.updateInfo(roleId, {receiveBoxs: resReceiveBoxs}, {}, 'receiveBoxs'); return resResult(STATUS.SUCCESS, { receiveBoxs }); } }