xy-server/game/core/ChargeSum.ts
2025-04-23 09:34:08 +08:00

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;
}
}