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.

167 lines
6.1 KiB

6 days ago
6 days ago
6 days ago
6 days ago
4 days ago
6 days ago
4 days ago
6 days ago
4 days ago
6 days ago
4 days ago
6 days ago
4 days ago
6 days ago
4 days ago
6 days ago
4 days ago
6 days ago
4 days ago
6 days ago
6 days ago
  1. package com.example.demo.serviceImpl;
  2. import com.example.demo.domain.entity.UserGoldRecord;
  3. import com.example.demo.domain.vo.ConsumeUser;
  4. import com.example.demo.domain.vo.Gold;
  5. import com.example.demo.domain.vo.RefundUser;
  6. import com.example.demo.domain.vo.Result;
  7. import com.example.demo.mapper.ConsumeMapper;
  8. import com.example.demo.mapper.RefundMapper;
  9. import com.example.demo.mapper.UserMapper;
  10. import com.example.demo.service.RefundService;
  11. import com.github.pagehelper.PageHelper;
  12. import com.github.pagehelper.PageInfo;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import java.time.LocalDate;
  16. import java.time.LocalDateTime;
  17. import java.time.format.DateTimeFormatter;
  18. import java.util.ArrayList;
  19. import java.util.Date;
  20. import java.util.List;
  21. import java.util.concurrent.atomic.AtomicInteger;
  22. /**
  23. * @program: gold-java
  24. * @ClassName RefundServiceImpl
  25. * @description:
  26. * @author: Double
  27. * @create: 202506-27 11:50
  28. * @Version 1.0
  29. **/
  30. @Service
  31. public class RefundServiceImpl implements RefundService {
  32. @Autowired
  33. private RefundMapper refundMapper;
  34. @Autowired
  35. private UserMapper userMapper;
  36. @Override
  37. public PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) {
  38. PageHelper.startPage(pageNum, pageSize);
  39. List<RefundUser> refundUsers = refundMapper.selectAll(refundUser);
  40. return new PageInfo<>(refundUsers);
  41. }
  42. @Override
  43. public Gold statsGold(RefundUser refundUser) {
  44. Gold gold = new Gold();
  45. List<RefundUser> refundUsers = refundMapper.selectBy(refundUser);
  46. // 初始化累加器
  47. int permanentGoldSum = 0;
  48. int freeGoldSum = 0;
  49. int taskGoldSum = 0;
  50. // 遍历推开记录并累加金币
  51. for (RefundUser user : refundUsers) {
  52. // 累加永久金币
  53. if (user.getPermanentGold() != null) {
  54. permanentGoldSum += user.getPermanentGold();
  55. }
  56. // 累加免费金币
  57. if (user.getFreeGold() != null) {
  58. freeGoldSum += user.getFreeGold();
  59. }
  60. // 累加任务金币
  61. if (user.getTaskGold() != null) {
  62. taskGoldSum += user.getTaskGold();
  63. }
  64. }
  65. // 将累加结果设置到Gold对象
  66. gold.setPermanentGolds(permanentGoldSum);
  67. gold.setFreeGolds(freeGoldSum);
  68. gold.setTaskGolds(taskGoldSum);
  69. return gold;
  70. }
  71. @Override
  72. public PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser) {
  73. PageHelper.startPage(pageNum, pageSize);
  74. List<RefundUser> refundUsers = refundMapper.selectBy(refundUser);
  75. return new PageInfo<>(refundUsers);
  76. }
  77. @Override
  78. public Result add(RefundUser refundUser) {
  79. UserGoldRecord userGoldRecord = new UserGoldRecord();
  80. String goodsNameWithOrder = refundUser.getGoodsName();
  81. //订单号生成
  82. if (goodsNameWithOrder != null && goodsNameWithOrder.contains("_")) {
  83. String[] parts = goodsNameWithOrder.split("_", 2);
  84. if (parts.length >= 2) {
  85. // 提取订单号(保留原始前缀)
  86. String orderCode = parts[0]; // XF202506281545524400006580
  87. // 提取商品名(处理可能包含下划线的情况)
  88. String goodsName = parts[1]; // 商品A
  89. // 设置属性(添加退款前缀)
  90. userGoldRecord.setOrderCode("TK" + orderCode); // TKXF202506281545524400006580
  91. userGoldRecord.setGoodsName(goodsName); // 商品A
  92. }
  93. }
  94. userGoldRecord.setJwcode(refundUser.getJwcode());
  95. userGoldRecord.setRefundType(refundUser.getRefundType());
  96. userGoldRecord.setRefundModel(refundUser.getRefundModel());
  97. userGoldRecord.setPermanentGold(refundUser.getPermanentGold());
  98. // 获取当前月份(1-12)
  99. int currentMonth = LocalDate.now().getMonthValue();
  100. // 根据当前月份设置对应字段
  101. if (currentMonth >= 1 && currentMonth <= 6) {
  102. // 1-6月:设置6月额度,12月保持默认值
  103. userGoldRecord.setFreeJune(0);
  104. userGoldRecord.setFreeDecember(refundUser.getFreeGold());
  105. } else {
  106. // 7-12月:设置12月额度,6月保持默认值
  107. userGoldRecord.setFreeJune(refundUser.getFreeGold());
  108. userGoldRecord.setFreeDecember(0);
  109. }
  110. userGoldRecord.setTaskGold(refundUser.getTaskGold());
  111. userGoldRecord.setSumGold(refundUser.getSumGold());
  112. userGoldRecord.setPayPlatform("金币系统");
  113. userGoldRecord.setRemark(refundUser.getRemark());
  114. userGoldRecord.setAdminId(refundUser.getAdminId());
  115. userGoldRecord.setType((byte) 2);
  116. userGoldRecord.setAuditStatus(0);
  117. userGoldRecord.setCreateTime(new Date());
  118. refundMapper.add(userGoldRecord);
  119. return Result.success();
  120. }
  121. @Override
  122. public List<String> getRefundType() {
  123. List<String> list = refundMapper.getRefundType();
  124. return list;
  125. }
  126. @Override
  127. public List<RefundUser> selectGoods(Integer jwcode) {
  128. List<RefundUser> refundUsers = refundMapper.selectGoods(jwcode);
  129. List<RefundUser> list = new ArrayList<>();
  130. for (RefundUser record : refundUsers) {
  131. if (record == null) {
  132. continue;
  133. }
  134. String orderCode = record.getOrderCode() != null ? record.getOrderCode() : "无订单号";
  135. String goodsName = record.getGoodsName() != null ? record.getGoodsName() : "无商品名";
  136. // 拼接格式:订单号_商品名(例如:XF20250629_商品BC)
  137. String combined = orderCode + "_" + goodsName;
  138. RefundUser refundUser = new RefundUser();
  139. refundUser.setGoodsName(combined);
  140. refundUser.setPermanentGold(record.getPermanentGold());
  141. refundUser.setFreeGold(record.getFreeGold());
  142. refundUser.setTaskGold(record.getTaskGold());
  143. list.add(refundUser);
  144. }
  145. return list;
  146. }
  147. }