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.

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