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.

134 lines
4.8 KiB

6 days ago
6 days ago
6 days ago
6 days ago
20 hours ago
6 days 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.RechargeService;
  9. import com.github.pagehelper.PageHelper;
  10. import com.github.pagehelper.PageInfo;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import java.time.LocalDate;
  14. import java.time.LocalDateTime;
  15. import java.time.format.DateTimeFormatter;
  16. import java.util.Date;
  17. import java.util.List;
  18. import java.util.concurrent.atomic.AtomicInteger;
  19. /**
  20. * @program: gold-java
  21. * @ClassName RechrageServceImpl
  22. * @description:
  23. * @author: Double
  24. * @create: 202506-29 13:40
  25. * @Version 1.0
  26. **/
  27. @Service
  28. public class RechargeServiceImpl implements RechargeService {
  29. @Autowired
  30. private RechargeMapper rechargeMapper;
  31. @Autowired
  32. private UserMapper userMapper;
  33. @Override
  34. public PageInfo<RechargeUser> selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) {
  35. PageHelper.startPage(pageNum, pageSize);
  36. List<RechargeUser> rechargeUsers = rechargeMapper.selectAll(rechargeUser);
  37. return new PageInfo<>(rechargeUsers);
  38. }
  39. @Override
  40. public PageInfo<RechargeUser> selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) {
  41. PageHelper.startPage(pageNum, pageSize);
  42. List<RechargeUser> rechargeUsers = rechargeMapper.selectBy(rechargeUser);
  43. return new PageInfo<>(rechargeUsers);
  44. }
  45. @Override
  46. public Gold statsGold(RechargeUser rechargeUser) {
  47. Gold gold = new Gold();
  48. List<RechargeUser> rechargeUsers = rechargeMapper.selectBy(rechargeUser);
  49. // 初始化累加器
  50. int permanentGoldSum = 0;
  51. int freeGoldSum = 0;
  52. // 遍历充值记录并累加金币
  53. for (RechargeUser user : rechargeUsers) {
  54. // 累加永久金币
  55. if (user.getPermanentGold() != null) {
  56. permanentGoldSum += user.getPermanentGold();
  57. }
  58. // 累加免费金币
  59. if (user.getFreeGold() != null) {
  60. freeGoldSum += user.getFreeGold();
  61. }
  62. }
  63. // 将累加结果设置到Gold对象
  64. gold.setPermanentGolds(permanentGoldSum);
  65. gold.setFreeGolds(freeGoldSum);
  66. return gold;
  67. }
  68. @Override
  69. public Result add(RechargeUser rechargeUser) {
  70. if(rechargeUser.getFreeGold()<0||rechargeUser.getPermanentGold()<=0||rechargeUser.getMoney()<=0){
  71. return Result.error("充值不能为负数或0");
  72. }
  73. UserGoldRecord userGoldRecord = new UserGoldRecord();
  74. // 获取当前时间戳部分
  75. String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
  76. // 获取自增计数器部分(三位数,不足补零)
  77. AtomicInteger atomicInteger = new AtomicInteger(0);
  78. int count = atomicInteger.getAndUpdate(c -> (c >= 999) ? 0 : c + 1);
  79. String counterPart = String.format("%03d", count);
  80. //订单号生成
  81. userGoldRecord.setOrderCode("CZ" + timestampPart + counterPart);
  82. userGoldRecord.setJwcode(rechargeUser.getJwcode());
  83. userGoldRecord.setActivity(rechargeUser.getActivity());
  84. userGoldRecord.setPermanentGold(rechargeUser.getPermanentGold());
  85. // 获取当前月份(1-12)
  86. int currentMonth = LocalDate.now().getMonthValue();
  87. // 根据当前月份设置对应字段
  88. if (currentMonth >= 1 && currentMonth <= 6) {
  89. // 1-6月:设置6月额度,12月保持默认值
  90. userGoldRecord.setFreeJune(0);
  91. userGoldRecord.setFreeDecember(rechargeUser.getFreeGold());
  92. } else {
  93. // 7-12月:设置12月额度,6月保持默认值
  94. userGoldRecord.setFreeJune(rechargeUser.getFreeGold());
  95. userGoldRecord.setFreeDecember(0);
  96. }
  97. userGoldRecord.setSumGold(rechargeUser.getFreeGold()+rechargeUser.getPermanentGold());
  98. userGoldRecord.setRateId(rechargeUser.getRateId());
  99. userGoldRecord.setMoney(rechargeUser.getMoney());
  100. userGoldRecord.setVoucher(rechargeUser.getVoucher());
  101. userGoldRecord.setPayPlatform("金币系统");
  102. userGoldRecord.setPayModel(rechargeUser.getPayModel());
  103. userGoldRecord.setPayTime(rechargeUser.getPayTime());
  104. userGoldRecord.setRemark(rechargeUser.getRemark());
  105. userGoldRecord.setAdminId(rechargeUser.getAdminId());
  106. userGoldRecord.setType((byte) 0);
  107. userGoldRecord.setAuditStatus(0);
  108. userGoldRecord.setCreateTime(new Date());
  109. rechargeMapper.add(userGoldRecord);
  110. return Result.success();
  111. }
  112. }