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

2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
  1. package com.example.demo.serviceImpl;
  2. import com.example.demo.Util.GoldTistV2;
  3. import com.example.demo.domain.entity.User;
  4. import com.example.demo.domain.entity.UserGoldRecord;
  5. import com.example.demo.domain.vo.Gold;
  6. import com.example.demo.domain.vo.RechargeAudit;
  7. import com.example.demo.domain.vo.RefundAudit;
  8. import com.example.demo.mapper.AuditMapper;
  9. import com.example.demo.service.AuditService;
  10. import com.github.pagehelper.PageHelper;
  11. import com.github.pagehelper.PageInfo;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import java.util.Date;
  15. import java.util.List;
  16. /**
  17. * @program: gold-java
  18. * @ClassName AuditServiceImpl
  19. * @description: 审核模块
  20. * @author: Ethan
  21. * @create: 202506-19 17:38
  22. * @Version 1.0
  23. **/
  24. @Service
  25. public class AuditServiceImpl implements AuditService {
  26. @Autowired
  27. private AuditMapper auditMapper;
  28. /*
  29. 审核订单并修改用户余额等
  30. */
  31. @Override
  32. public boolean auditOrder(String token, String orderCode, Integer auditId, Integer action,String rejectReason) {
  33. UserGoldRecord order=auditMapper.selectOrderByOrderCode(orderCode);
  34. if (order == null || order.getAuditStatus() != 0) {
  35. throw new IllegalArgumentException("订单不存在或已被审核");
  36. }
  37. //更新订单的审核状态和审核人
  38. UserGoldRecord updateOrder = new UserGoldRecord();
  39. updateOrder.setOrderCode(orderCode);
  40. updateOrder.setAuditId(auditId);
  41. //判断是通过还是驳回
  42. if (action==2){ //驳回
  43. updateOrder.setAuditStatus(2);
  44. updateOrder.setRejectReason(rejectReason);
  45. updateOrder.setAuditTime(new Date());
  46. // 执行审核更新
  47. auditMapper.updateOrder(updateOrder);
  48. if (order.getType()==2) { //退款
  49. //2.获取对应的消费订单(退款订单号去掉开头"TK"即为对应消费订单)
  50. String consumeOrderCode = order.getOrderCode().replaceFirst("TK", "");
  51. //3.更新消费订单是否已退款状态为0
  52. UserGoldRecord consumeOrder = auditMapper.selectOrderByOrderCode(consumeOrderCode);
  53. if (consumeOrderCode != null&&consumeOrder.getType()==1){ //确保是消费订单
  54. auditMapper.updateOrderRefund(consumeOrderCode,(byte)0);
  55. }else {
  56. throw new IllegalArgumentException("找不到对应的订单或不是有效订单");
  57. }
  58. }
  59. }else if (action==1) { //通过
  60. updateOrder.setAuditStatus(1);
  61. updateOrder.setAuditTime(new Date());
  62. // 执行审核更新
  63. auditMapper.updateOrder(updateOrder);
  64. //判断是充值还是退款
  65. if (order.getType()==0){ //充值
  66. //更新用户余额
  67. User update = new User();
  68. update.setJwcode(order.getJwcode()); //精网号
  69. update.setSumPermanentGold(order.getPermanentGold()); //历史永久金币
  70. update.setSumFreeJune(order.getFreeJune()); //历史六月免费金币
  71. update.setSumFreeDecember(order.getFreeDecember()); //历史十二月免费金币
  72. update.setSumTaskGold(order.getTaskGold()); //历史任务金币
  73. update.setCurrentPermanentGold(order.getPermanentGold()); //当前永久金币
  74. update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币
  75. update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币
  76. update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币
  77. update.setRechargeNum(update.getRechargeNum()+1); //充值次数加一
  78. auditMapper.updateUserGold(update);
  79. //erp增加充值数据
  80. if(update.getJwcode().equals(94226013)){
  81. GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币
  82. (double) (order.getPermanentGold() ) /100,
  83. order.getRemark(),0, order.getPayPlatform(), "金币充值");
  84. GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费
  85. (double) (order.getFreeDecember()+order.getFreeJune() ) /100,
  86. order.getRemark(),0, order.getPayPlatform(), "金币充值");
  87. }
  88. }else if (order.getType()==2) { //退款
  89. //更新用户余额
  90. User update = new User();
  91. update.setJwcode(order.getJwcode());
  92. update.setCurrentPermanentGold(order.getPermanentGold()); //当前永久金币
  93. update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币
  94. update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币
  95. update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币
  96. auditMapper.updateUserGold(update);
  97. //erp增加退款数据
  98. if(update.getJwcode().equals(94226013)){
  99. GoldTistV2.addCoinNew(order.getJwcode().toString(), 56, //退款永久金币
  100. (double) (order.getPermanentGold() ) /100,
  101. order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName());
  102. GoldTistV2.addCoinNew(order.getJwcode().toString(), 55, //退款免费
  103. (double) (order.getFreeDecember()+order.getFreeJune() ) /100,
  104. order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName());
  105. GoldTistV2.addCoinNew(order.getJwcode().toString(), 57, //退款任务
  106. (double) (order.getTaskGold() ) /100,
  107. order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName());
  108. }
  109. }
  110. }
  111. return true;
  112. }
  113. /*
  114. * 多条件查询充值订单列表
  115. */
  116. @Override
  117. public PageInfo<RechargeAudit> selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) {
  118. PageHelper.startPage(pageNum, pageSize);
  119. List<RechargeAudit> rechargeAudits = auditMapper.selectRechargeBy(pageNum, pageSize, rechargeAudit);
  120. // rechargeAudit.setFreeGold(rechargeAudit.getFreeJune()+rechargeAudit.getFreeDecember());
  121. return new PageInfo<>(rechargeAudits);
  122. }
  123. /*
  124. 多条件查询退款订单
  125. */
  126. @Override
  127. public PageInfo<RefundAudit> selectRefundBy(Integer pageNum, Integer pageSize, RefundAudit refundAudit) {
  128. PageHelper.startPage(pageNum, pageSize);
  129. List<RefundAudit> refundAudits = auditMapper.selectRefundBy(pageNum, pageSize, refundAudit);
  130. //refundAudit.setFreeGold(refundAudit.getFreeJune()+refundAudit.getFreeDecember());
  131. return new PageInfo<>(refundAudits);
  132. }
  133. /*
  134. 充值审核金币合计数
  135. */
  136. @Override
  137. public Gold sumRechargeGold(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) {
  138. Gold gold = new Gold();
  139. //获取充值审核订单列表
  140. List<RechargeAudit> rechargeAudits = auditMapper.selectRechargeBy(1, 500000, rechargeAudit);
  141. // 初始化累加器
  142. int totalNum=0;
  143. int permanentGoldSum = 0;
  144. int freeGoldSum = 0;
  145. // 遍历消费记录并累加金币
  146. for (RechargeAudit recharge : rechargeAudits) {
  147. // 累加永久金币
  148. if (recharge.getPermanentGold() != null) {
  149. permanentGoldSum += recharge.getPermanentGold();
  150. }
  151. // 累加免费金币
  152. if (recharge.getFreeJune() != null||recharge.getFreeDecember() != null) {
  153. freeGoldSum = freeGoldSum+recharge.getFreeJune()+recharge.getFreeDecember();
  154. }
  155. // 每遍历一条记录,总条数加1
  156. totalNum++;
  157. }
  158. // 将累加结果设置到Gold对象
  159. gold.setPermanentGolds(permanentGoldSum);
  160. gold.setFreeGolds(freeGoldSum);
  161. gold.setTotalNum(totalNum);
  162. return gold;
  163. }
  164. /*
  165. 退款审核合计数
  166. */
  167. @Override
  168. public Gold sumRefundGold(Integer pageNum, Integer pageSize, RefundAudit refundAudit) {
  169. Gold gold = new Gold();
  170. //获取充值审核订单列表
  171. List<RefundAudit> refundAudits = auditMapper.selectRefundBy(1, 500000, refundAudit);
  172. // 初始化累加器
  173. int totalNum=0;
  174. int permanentGoldSum = 0;
  175. int freeGoldSum = 0;
  176. int taskGoldSum = 0;
  177. // 遍历消费记录并累加金币
  178. for (RefundAudit refund : refundAudits) {
  179. // 累加永久金币
  180. if (refund.getPermanentGold() != null) {
  181. permanentGoldSum += refund.getPermanentGold();
  182. }
  183. // 累加免费金币
  184. if (refund.getFreeJune() != null||refund.getFreeDecember()!=null) {
  185. freeGoldSum += refund.getFreeJune()+refund.getFreeDecember();
  186. }
  187. //累加任务金币
  188. if(refund.getTaskGold()!=null)
  189. taskGoldSum+=refund.getTaskGold();
  190. // 每遍历一条记录,总条数加1
  191. totalNum++;
  192. }
  193. // 将累加结果设置到Gold对象
  194. gold.setPermanentGolds(permanentGoldSum);
  195. gold.setFreeGolds(freeGoldSum);
  196. gold.setTotalNum(totalNum);
  197. gold.setTaskGolds(taskGoldSum);
  198. return gold;
  199. }
  200. }