117 lines
2.9 KiB
TypeScript
117 lines
2.9 KiB
TypeScript
/*
|
|
* 开服读取记录玩家充值总额
|
|
*/
|
|
|
|
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;
|
|
}
|
|
} |