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.

174 lines
6.4 KiB

2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
2 months ago
1 month ago
2 months ago
2 months ago
1 month ago
2 months ago
2 months ago
1 month ago
2 months ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
2 months ago
  1. package com.example.demo.serviceImpl.coin;
  2. import com.example.demo.domain.entity.UserGoldRecord;
  3. import com.example.demo.domain.vo.bean.BeanUserCard;
  4. import com.example.demo.mapper.bean.BeanUserMapper;
  5. import com.example.demo.mapper.coin.MarketMapper;
  6. import com.example.demo.mapper.coin.RechargeMapper;
  7. import com.example.demo.mapper.coin.UserMapper;
  8. import com.example.demo.service.coin.MarketService;
  9. import com.example.demo.service.coin.RechargeService;
  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 com.example.demo.domain.vo.coin.*;
  15. import java.time.LocalDate;
  16. import java.time.LocalDateTime;
  17. import java.time.format.DateTimeFormatter;
  18. import java.util.Date;
  19. import java.util.List;
  20. import java.util.Random;
  21. /**
  22. * @program: gold-java
  23. * @ClassName RechrageServceImpl
  24. * @description:
  25. * @author: Double
  26. * @create: 202506-29 13:40
  27. * @Version 1.0
  28. **/
  29. @Service
  30. public class RechargeServiceImpl implements RechargeService {
  31. @Autowired
  32. private RechargeMapper rechargeMapper;
  33. @Autowired
  34. private UserMapper userMapper;
  35. @Autowired
  36. private MarketMapper marketMapper;
  37. @Autowired
  38. private BeanUserMapper beanUserMapper;
  39. //查询所有充值
  40. @Override
  41. public PageInfo<RechargeUser> selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) throws Exception{
  42. //获取市场id
  43. List<String> markets = marketMapper.getMarketIds(rechargeUser.getMarkets());
  44. rechargeUser.setMarkets(markets);
  45. PageHelper.startPage(pageNum, pageSize);
  46. List<RechargeUser> rechargeUsers = rechargeMapper.selectAll(rechargeUser);
  47. return new PageInfo<>(rechargeUsers);
  48. }
  49. //查询筛选充值
  50. @Override
  51. public PageInfo<RechargeUser> selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) throws Exception{
  52. List<String> markets = marketMapper.getMarketIds(rechargeUser.getMarkets());
  53. if (markets.contains("9") || markets.contains("9999")){
  54. markets=null;
  55. }
  56. rechargeUser.setMarkets(markets);
  57. PageHelper.startPage(pageNum, pageSize);
  58. List<RechargeUser> rechargeUsers = rechargeMapper.selectBy(rechargeUser);
  59. return new PageInfo<>(rechargeUsers);
  60. }
  61. //统计金币记录
  62. @Override
  63. public Gold statsGold(RechargeUser rechargeUser) {
  64. List<String> markets = marketMapper.getMarketIds(rechargeUser.getMarkets());
  65. if (markets.contains("9") || markets.contains("9999")){
  66. markets=null;
  67. }
  68. rechargeUser.setMarkets(markets);
  69. Gold gold = new Gold();
  70. List<RechargeUser> rechargeUsers = rechargeMapper.selectBy(rechargeUser);
  71. // 初始化累加器
  72. int permanentGoldSum = 0;
  73. int freeGoldSum = 0;
  74. // 遍历充值记录并累加金币
  75. for (RechargeUser user : rechargeUsers) {
  76. // 累加永久金币
  77. if (user.getPermanentGold() != null) {
  78. permanentGoldSum += user.getPermanentGold();
  79. }
  80. // 累加免费金币
  81. if (user.getFreeGold() != null) {
  82. freeGoldSum += user.getFreeGold();
  83. }
  84. }
  85. // 将累加结果设置到Gold对象
  86. gold.setPermanentGolds(permanentGoldSum);
  87. gold.setFreeGolds(freeGoldSum);
  88. return gold;
  89. }
  90. //添加充值记录
  91. @Override
  92. public Result add(RechargeUser rechargeUser) {
  93. if(rechargeUser.getFreeGold()==null||rechargeUser.getPermanentGold()==null||rechargeUser.getMoney()==null){
  94. return Result.error("金币和金额不能为空");
  95. }
  96. if(rechargeUser.getFreeGold()<0||rechargeUser.getPermanentGold()<0||rechargeUser.getMoney()<0){
  97. return Result.error("充值不能为0");
  98. }
  99. if(rechargeUser.getJwcode()<10000000||rechargeUser.getJwcode()>99999999)
  100. {
  101. return Result.error("精网号位数小于8位或大于8位");
  102. }
  103. // 验证免费金币和永久金币是否均为0
  104. if (rechargeUser.getFreeGold() == 0 && rechargeUser.getPermanentGold() == 0) {
  105. return Result.error("免费金币和永久金币不能同时为0");
  106. }
  107. BeanUserCard user = beanUserMapper.userCard(String.valueOf(rechargeUser.getJwcode()));
  108. if(user==null){
  109. return Result.error("用户查找不到");
  110. }
  111. UserGoldRecord userGoldRecord = new UserGoldRecord();
  112. // 获取当前时间戳部分
  113. String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
  114. Random random = new Random();
  115. int randomNumber = random.nextInt(900) + 100;
  116. //订单号生成
  117. userGoldRecord.setOrderCode("CZ" + timestampPart + randomNumber);
  118. userGoldRecord.setJwcode(rechargeUser.getJwcode());
  119. userGoldRecord.setActivity(rechargeUser.getActivity());
  120. userGoldRecord.setPermanentGold(rechargeUser.getPermanentGold());
  121. // 获取当前月份(1-12)
  122. int currentMonth = LocalDate.now().getMonthValue();
  123. // 根据当前月份设置对应字段
  124. if (currentMonth >= 1 && currentMonth <= 6) {
  125. // 1-6月:设置6月额度,12月保持默认值
  126. userGoldRecord.setFreeJune(0);
  127. userGoldRecord.setFreeDecember(rechargeUser.getFreeGold());
  128. } else {
  129. // 7-12月:设置12月额度,6月保持默认值
  130. userGoldRecord.setFreeJune(rechargeUser.getFreeGold());
  131. userGoldRecord.setFreeDecember(0);
  132. }
  133. //数据输入
  134. userGoldRecord.setSumGold(rechargeUser.getFreeGold()+rechargeUser.getPermanentGold());
  135. userGoldRecord.setRateId(rechargeUser.getRateId());
  136. userGoldRecord.setMoney(rechargeUser.getMoney());
  137. userGoldRecord.setVoucher(rechargeUser.getVoucher());
  138. userGoldRecord.setPayPlatform("金币系统");
  139. userGoldRecord.setPayModel(rechargeUser.getPayModel());
  140. userGoldRecord.setPayTime(rechargeUser.getPayTime());
  141. userGoldRecord.setRemark(rechargeUser.getRemark());
  142. userGoldRecord.setAdminId(rechargeUser.getAdminId());
  143. userGoldRecord.setType((byte) 0);
  144. userGoldRecord.setAuditStatus(0);
  145. userGoldRecord.setCreateTime(new Date());
  146. rechargeMapper.add(userGoldRecord);
  147. return Result.success();
  148. }
  149. }