feat: 新增充值前后玩家在线状态检测

Signed-off-by: MiaoWoo <admin@yumc.pw>
MiaoWoo 2021-08-23 10:41:47 +08:00
parent b9a9334655
commit cbf00d107e
1 changed files with 11 additions and 27 deletions

View File

@ -73,7 +73,7 @@ const defaultConfig = {
}
}
@JSPlugin({ version: '1.6.1', author: 'MiaoWoo', source: __filename, servers: [constants.ServerType.Bukkit], depends: ['MiaoReward'], nativeDepends: ['PlaceholderAPI', 'ProtocolLib'] })
@JSPlugin({ version: '1.6.3', author: 'MiaoWoo', source: __filename, servers: [constants.ServerType.Bukkit], depends: ['MiaoReward'], nativeDepends: ['PlaceholderAPI', 'ProtocolLib'] })
export class MiaoPay extends interfaces.Plugin {
@Autowired()
private server: server.Server
@ -109,6 +109,10 @@ export class MiaoPay extends interfaces.Plugin {
this.appInfo = info.data
this.config.ratio = this.appInfo.ratio
this.config.coinName = this.appInfo.coin_name
if (this.config.name == this.appInfo.appname) {
this.config.name = ''
this.config.save()
}
} else {
this.logger.console('§4初始化支付系统失败 请检查配置是否正确!')
this.logger.console('§c服务器返回异常: §4' + info.msg)
@ -134,7 +138,7 @@ export class MiaoPay extends interfaces.Plugin {
if (this.cacheMap.has(sender.getName())) {
this.logger.sender(sender, '§c您有一笔订单尚未完成 请完成支付或等待订单超时!')
let sync = this.cacheSyncMap.get(sender.getName())
if (!sync.cancelled) { return }
if (!sync.cancelled) { return this.cacheMap.delete(sender.getName()) }
sync.scaned = false
sync.left = (sync.paying ? 100 : 55) - (Math.round(Date.now() / 1000) - sync.start)
let order = this.cacheMap.get(sender.getName())
@ -192,27 +196,6 @@ export class MiaoPay extends interfaces.Plugin {
this.MiaoReward.clearTitle(sender)
}
cmdquery(sender: org.bukkit.entity.Player, id: string) {
if (!id) { return this.logger.sender(sender, '§c请输入订单号!') }
this.taskManager.create(() => {
let result = this.queryOrder(id, sender.getName(), sender.getUniqueId().toString())
if (result.code != 200) { return this.logger.sender(sender, `§c查询异常! §4ERROR: ${result.msg}`) }
let order = result.data
this.logger.sender(sender, [
`§6商户名称: §3${order.appname}`,
`§6订单号: §3${id}`,
`§6商品: §b${order.subject}`,
`§6金额: §e${order.amount}`,
`§6玩家: §a${order.username}`,
`§6状态: §c${order.status}`,
])
if (order.status > 1 && order.status < 4) {
this.logger.sender(sender, `§3当前订单已支付 尚未完成充值 开始补单操作...`)
this.recharge(sender, order)
}
}).async().submit()
}
cmdcheck(sender: org.bukkit.entity.Player, force = 1) {
if (this.checkSet.has(sender.getName())) {
return this.logger.sender(sender, '§c检查任务执行中 请稍候...')
@ -245,12 +228,14 @@ export class MiaoPay extends interfaces.Plugin {
let order_id = order.order_id
let amount = order.amount
let point = this.safeMultiply(amount, this.config.ratio)
if (!sender.isOnline()) { return }
let finish = this.preFinishOrder(order_id)
if (finish.code != 200) {
this.sendError(sender, order_id, amount, '充值预标记异常!')
return this.logger.console(`§c充值系统异常 订单 §3${order_id} 预标记异常! §4${this.config.coinName}已停止充值 §c请手动补单!`)
}
this.taskManager.callSyncMethod(() => {
if (!sender.isOnline()) { return this.errorOrder(order_id, "充值前玩家掉线 请重置标记!") }
let prePoint = this.getPlayerAmount(sender)
let command = this.config.command.replace('%player_name%', sender.getName()).replace('%amount%', `${point}`).replace('%remark%', `${order_id}`)
if (!this.server.dispatchConsoleCommand(command)) {
@ -268,10 +253,9 @@ export class MiaoPay extends interfaces.Plugin {
private checkRecharge(sender: org.bukkit.entity.Player, order_id: string, amount: number, prePoint: number, point: number) {
this.taskManager.create(() => {
if (!sender.isOnline()) { return this.errorOrder(order_id, "充值后玩家掉线 请标记已兑换!") }
let nowPoint = this.checkNowPoint(sender, point, prePoint)
if (nowPoint === false) {
return this.sendError(sender, order_id, amount, '充值结果检测异常!')
}
if (nowPoint === false) { return this.sendError(sender, order_id, amount, '充值结果检测异常!') }
this.logger.sender(sender, [
`§6充值 §a${point} §6${this.config.coinName} §a成功 §6当前账户余额: §3${nowPoint} §6${this.config.coinName}`,
`§c如出现未到账的情况 请联系管理员!`
@ -369,7 +353,7 @@ export class MiaoPay extends interfaces.Plugin {
}
private createOrder(sender: org.bukkit.entity.Player, amount: number): Order {
let serverName = this.appInfo?.appname
let serverName = this.appInfo.appname
if (this.config.name) { serverName = `${serverName}(${this.config.name})` }
let result = this.httpPost('/create', {
subject: `${serverName} 充值 ${amount} ${this.config.coinName}`,