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.

231 lines
10 KiB

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