You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

211 lines
9.5 KiB

package com.example.demo.serviceImpl;
import com.example.demo.Util.GoldTistV2;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.RechargeAudit;
import com.example.demo.domain.vo.RefundAudit;
import com.example.demo.mapper.AuditMapper;
import com.example.demo.service.AuditService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
* @ClassName AuditServiceImpl
* @description: 审核模块
* @author: Ethan
* @create: 2025−06-19 17:38
* @Version 1.0
**/
@Service
public class AuditServiceImpl implements AuditService {
@Autowired
private AuditMapper auditMapper;
/*
审核订单并修改用户余额等
*/
@Override
public boolean auditOrder(String token, String orderCode, Integer auditId, Integer action,String rejectReason) {
UserGoldRecord order=auditMapper.selectOrderByOrderCode(orderCode);
if (order == null || order.getAuditStatus() != 0) {
throw new IllegalArgumentException("订单不存在或已被审核");
}
//更新订单的审核状态和审核人
UserGoldRecord updateOrder = new UserGoldRecord();
updateOrder.setOrderCode(orderCode);
updateOrder.setAuditId(auditId);
//判断是通过还是驳回
if (action==2){ //驳回
updateOrder.setAuditStatus(2);
updateOrder.setRejectReason(rejectReason);
updateOrder.setAuditTime(new Date());
// 执行审核更新
auditMapper.updateOrder(updateOrder);
if (order.getType()==2) { //退款
//2.获取对应的消费订单(退款订单号去掉开头"TK"即为对应消费订单)
String consumeOrderCode = order.getOrderCode().replaceFirst("TK", "");
//3.更新消费订单是否已退款状态为0
UserGoldRecord consumeOrder = auditMapper.selectOrderByOrderCode(consumeOrderCode);
if (consumeOrderCode != null&&consumeOrder.getType()==1){ //确保是消费订单
auditMapper.updateOrderRefund(consumeOrderCode,(byte)0);
}else {
throw new IllegalArgumentException("找不到对应的订单或不是有效订单");
}
}
}else if (action==1) { //通过
updateOrder.setAuditStatus(1);
updateOrder.setAuditTime(new Date());
// 执行审核更新
auditMapper.updateOrder(updateOrder);
//判断是充值还是退款
if (order.getType()==0){ //充值
//更新用户余额
User update = new User();
update.setJwcode(order.getJwcode()); //精网号
update.setSumPermanentGold(order.getPermanentGold()); //历史永久金币
update.setSumFreeJune(order.getFreeJune()); //历史六月免费金币
update.setSumFreeDecember(order.getFreeDecember()); //历史十二月免费金币
update.setSumTaskGold(order.getTaskGold()); //历史任务金币
update.setCurrentPermanentGold(order.getPermanentGold()); //当前永久金币
update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币
update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币
update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币
update.setRechargeNum(update.getRechargeNum()+1); //充值次数加一
auditMapper.updateUserGold(update);
//erp增加充值数据
if(update.getJwcode().equals(94226013)){
GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币
(double) (order.getPermanentGold() ) /100,
order.getRemark(),0, order.getPayPlatform(), "金币充值");
GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费
(double) (order.getFreeDecember()+order.getFreeJune() ) /100,
order.getRemark(),0, order.getPayPlatform(), "金币充值");
}
}else if (order.getType()==2) { //退款
//更新用户余额
User update = new User();
update.setJwcode(order.getJwcode());
update.setCurrentPermanentGold(order.getPermanentGold()); //当前永久金币
update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币
update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币
update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币
auditMapper.updateUserGold(update);
//erp增加退款数据
if(update.getJwcode().equals(94226013)){
GoldTistV2.addCoinNew(order.getJwcode().toString(), 56, //退款永久金币
(double) (order.getPermanentGold() ) /100,
order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName());
GoldTistV2.addCoinNew(order.getJwcode().toString(), 55, //退款免费
(double) (order.getFreeDecember()+order.getFreeJune() ) /100,
order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName());
GoldTistV2.addCoinNew(order.getJwcode().toString(), 57, //退款任务
(double) (order.getTaskGold() ) /100,
order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName());
}
}
}
return true;
}
/*
* 多条件查询充值订单列表
*/
@Override
public PageInfo<RechargeAudit> selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) {
PageHelper.startPage(pageNum, pageSize);
List<RechargeAudit> rechargeAudits = auditMapper.selectRechargeBy(pageNum, pageSize, rechargeAudit);
// rechargeAudit.setFreeGold(rechargeAudit.getFreeJune()+rechargeAudit.getFreeDecember());
return new PageInfo<>(rechargeAudits);
}
/*
多条件查询退款订单
*/
@Override
public PageInfo<RefundAudit> selectRefundBy(Integer pageNum, Integer pageSize, RefundAudit refundAudit) {
PageHelper.startPage(pageNum, pageSize);
List<RefundAudit> refundAudits = auditMapper.selectRefundBy(pageNum, pageSize, refundAudit);
//refundAudit.setFreeGold(refundAudit.getFreeJune()+refundAudit.getFreeDecember());
return new PageInfo<>(refundAudits);
}
/*
充值审核金币合计数
*/
@Override
public Gold sumRechargeGold(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) {
Gold gold = new Gold();
//获取充值审核订单列表
List<RechargeAudit> rechargeAudits = auditMapper.selectRechargeBy(1, 500000, rechargeAudit);
// 初始化累加器
int totalNum=0;
int permanentGoldSum = 0;
int freeGoldSum = 0;
// 遍历消费记录并累加金币
for (RechargeAudit recharge : rechargeAudits) {
// 累加永久金币
if (recharge.getPermanentGold() != null) {
permanentGoldSum += recharge.getPermanentGold();
}
// 累加免费金币
if (recharge.getFreeJune() != null||recharge.getFreeDecember() != null) {
freeGoldSum = freeGoldSum+recharge.getFreeJune()+recharge.getFreeDecember();
}
// 每遍历一条记录,总条数加1
totalNum++;
}
// 将累加结果设置到Gold对象
gold.setPermanentGolds(permanentGoldSum);
gold.setFreeGolds(freeGoldSum);
gold.setTotalNum(totalNum);
return gold;
}
/*
退款审核合计数
*/
@Override
public Gold sumRefundGold(Integer pageNum, Integer pageSize, RefundAudit refundAudit) {
Gold gold = new Gold();
//获取充值审核订单列表
List<RefundAudit> refundAudits = auditMapper.selectRefundBy(1, 500000, refundAudit);
// 初始化累加器
int totalNum=0;
int permanentGoldSum = 0;
int freeGoldSum = 0;
int taskGoldSum = 0;
// 遍历消费记录并累加金币
for (RefundAudit refund : refundAudits) {
// 累加永久金币
if (refund.getPermanentGold() != null) {
permanentGoldSum += refund.getPermanentGold();
}
// 累加免费金币
if (refund.getFreeJune() != null||refund.getFreeDecember()!=null) {
freeGoldSum += refund.getFreeJune()+refund.getFreeDecember();
}
//累加任务金币
if(refund.getTaskGold()!=null)
taskGoldSum+=refund.getTaskGold();
// 每遍历一条记录,总条数加1
totalNum++;
}
// 将累加结果设置到Gold对象
gold.setPermanentGolds(permanentGoldSum);
gold.setFreeGolds(freeGoldSum);
gold.setTotalNum(totalNum);
gold.setTaskGolds(taskGoldSum);
return gold;
}
}