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.

161 lines
5.9 KiB

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