nnnn
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
package com.ruoyi.cai.manager;
|
||||
|
||||
import com.ruoyi.cai.enums.DangerEnum;
|
||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||
import com.ruoyi.cai.trdpay.TrdPayTypeEnum;
|
||||
import com.ruoyi.system.domain.SysNotice;
|
||||
import com.ruoyi.system.mapper.SysNoticeMapper;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Component
|
||||
public class DangerManger {
|
||||
|
||||
@Autowired
|
||||
private RedissonClient redissonClient;
|
||||
@Autowired
|
||||
private SystemConfigManager systemConfigManager;
|
||||
@Resource
|
||||
private SysNoticeMapper sysNoticeMapper;
|
||||
|
||||
public void resetDanger(DangerEnum dangerEnum, String businessCode) {
|
||||
Boolean openNotice = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_NOTICE);
|
||||
if(BooleanUtils.isNotTrue(openNotice)){
|
||||
return;
|
||||
}
|
||||
String key = String.format("%s:%s",dangerEnum.name(),businessCode);
|
||||
redissonClient.getAtomicLong(key).set(0);
|
||||
}
|
||||
|
||||
public void insDanger(DangerEnum dangerEnum, String businessCode) {
|
||||
Boolean openNotice = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_NOTICE);
|
||||
if(BooleanUtils.isNotTrue(openNotice)){
|
||||
return;
|
||||
}
|
||||
String key = String.format("%s:%s",dangerEnum.name(),businessCode);
|
||||
long num = redissonClient.getAtomicLong(key).incrementAndGet();
|
||||
if(dangerEnum == DangerEnum.PAY_ERROR){
|
||||
Long payErrorNumNotice = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.PAY_ERROR_NUM_NOTICE);
|
||||
if(num >= payErrorNumNotice && num%payErrorNumNotice == 0){
|
||||
// 发通知
|
||||
SysNotice sysNotice = new SysNotice();
|
||||
String noticeTitle = String.format("【%s】连续调用支付失败超过%s,可能出现支付通道异常,需排查!", businessCode, num);
|
||||
sysNotice.setNoticeTitle(noticeTitle);
|
||||
sysNotice.setNoticeType("3");
|
||||
sysNotice.setBusinessType(DangerEnum.PAY_ERROR.name());
|
||||
sysNotice.setNoticeContent(noticeTitle);
|
||||
sysNotice.setStatus("0");
|
||||
sysNoticeMapper.insert(sysNotice);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if(dangerEnum == DangerEnum.PAY_SUCCESS){
|
||||
Long payErrorNumNotice = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.PAY_NOTIFY_ERROR_NUM_NOTICE);
|
||||
if(num >= payErrorNumNotice && num%payErrorNumNotice == 0){
|
||||
// 发通知
|
||||
SysNotice sysNotice = new SysNotice();
|
||||
String noticeTitle = String.format("【%s】连续调用支付成功%s次但是未支付成功,可能出现回调异常,需排查!", businessCode, num);
|
||||
sysNotice.setNoticeTitle(noticeTitle);
|
||||
sysNotice.setNoticeType("3");
|
||||
sysNotice.setBusinessType(DangerEnum.PAY_SUCCESS.name());
|
||||
sysNotice.setNoticeContent(noticeTitle);
|
||||
sysNotice.setStatus("0");
|
||||
sysNoticeMapper.insert(sysNotice);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void successPay(TrdPayTypeEnum typeEnum) {
|
||||
this.insDanger(DangerEnum.PAY_SUCCESS,typeEnum.name()); // 支付成功计数
|
||||
this.resetDanger(DangerEnum.PAY_ERROR,typeEnum.name()); // 清除支付失败计数
|
||||
}
|
||||
|
||||
public void errorPay(TrdPayTypeEnum typeEnum) {
|
||||
this.insDanger(DangerEnum.PAY_ERROR,typeEnum.name());
|
||||
}
|
||||
|
||||
public void notifyPay(TrdPayTypeEnum typeEnum) {
|
||||
this.resetDanger(DangerEnum.PAY_SUCCESS,typeEnum.name());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user