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.

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