/* * 开服读取记录玩家充值总额 */ import PlayerMgr from "../object/PlayerMgr"; import DB from "../utils/DB"; import Launch from "./Launch"; import SKLogger from "../gear/SKLogger"; import Player from "../object/Player"; import GameUtil from "./GameUtil"; import { MsgCode } from "../role/EEnum"; export default class ChargeSum { static shared = new ChargeSum(); roleList: any; dayReward: any; constructor() { this.roleList = {}; } /* * 从数据库读取role的总充值金额 */ init() { let conf = GameUtil.game_conf.today; this.dayReward = {}; for (let item of conf) { if (this.dayReward[item.money] == null) { this.dayReward[item.money] = []; } this.dayReward[item.money].push(item); } let self = this; DB.query('SELECT roleid, SUM(realmoney) AS rmb FROM charge_record WHERE status = 1 GROUP BY roleid;', (err: any, rows: any) => { if (err) { throw err; } if (rows.length != 0) { for (let item of rows) { if (item.roleid && item.rmb) { if (this.roleList[item.roleid]) { this.roleList[item.roleid] += item.rmb; } else { this.roleList[item.roleid] = item.rmb; } } } } SKLogger.info('累充模块加载完毕!'); let className: string = self.constructor.name; Launch.shared.complete(className); }); } /* * 玩家充值 * @param roleid 玩家角色id * @param money 充值金额 * @param jade 充值仙玉 */ playerCharge(roleid: any, money: any, jade: any) { if (money < 1) { return; } if (this.roleList[roleid]) { this.roleList[roleid] += money; } else { this.roleList[roleid] = money; } this.checkDayReward(roleid, money); let player = PlayerMgr.shared.getPlayerByRoleId(roleid); if (player) { player.chargeSuccess(jade, money); } } // 检查每日充值奖励 checkDayReward(roleId: number, money: number) { if (money < 1) { return; } let player = PlayerMgr.shared.getPlayerByRoleId(roleId); if (player != null) { this.changePlayerDaySum(player, money); return; } let self = this; DB.loginByRoleid(roleId, (code: number, data: any) => { if (code != MsgCode.SUCCESS || data == null) { return; } let player = new Player(); player.offline = false; player.setDB(data); self.changePlayerDaySum(player, money); player.saveAll((failed: string[]) => { player.offline = true; if (failed.length > 0) { SKLogger.warn(`玩家[${player.roleid}:${player.name}]每日累充奖励存档失败!`); } else { SKLogger.debug(`玩家[${player.roleid}:${player.name}]每日累充奖励存档成功!`); } }); }) } // 改变玩家每日累充 changePlayerDaySum(player: Player, money: Number) { let daySum = (player.dayMap[`daySum`] || 0); daySum += money; player.dayMap[`daySum`] = daySum; } /* * 获取玩家充值总额 * @param roleid 玩家角色id */ getPlayerChargeSum(roleid: any): any { return this.roleList[roleid] || 0; } }