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.

133 lines
4.5 KiB

  1. package com.example.demo.serviceImpl.coin;
  2. import com.example.demo.domain.vo.coin.RechargeActivity;
  3. import com.example.demo.mapper.coin.RechargeActivityCenterMapper;
  4. import com.example.demo.service.coin.RechargeActivityCenterService;
  5. import com.github.pagehelper.PageHelper;
  6. import com.github.pagehelper.PageInfo;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9. import java.time.LocalDateTime;
  10. import java.util.Date;
  11. import java.util.List;
  12. /**
  13. * @program: gold-java
  14. * @ClassName RechargeActivityCenterServiceImpl
  15. * @description: 充值活动中心服务实现类
  16. * @author: Double
  17. * @create: 202510-28 14:40
  18. * @Version 1.0
  19. **/
  20. @Service
  21. public class RechargeActivityCenterServiceImpl implements RechargeActivityCenterService {
  22. @Autowired
  23. private RechargeActivityCenterMapper rechargeActivityCenterMapper;
  24. // 根据ID查询活动
  25. @Override
  26. public PageInfo<RechargeActivity> queryActivity(Integer pageNum, Integer pageSize, RechargeActivity activity) {
  27. updateStatus();
  28. PageHelper.startPage(pageNum, pageSize);
  29. List<RechargeActivity> activityList = rechargeActivityCenterMapper.queryActivity(activity);
  30. return new PageInfo<>(activityList);
  31. }
  32. // 新增活动
  33. @Override
  34. public void addActivity(RechargeActivity activity) {
  35. Date startTime = activity.getStartTime();
  36. Date endTime = activity.getEndTime();
  37. //获取当前系统时间(本地时间,与活动时间时区保持一致)
  38. Date now = new Date();
  39. //时间范围判断,设置对应状态
  40. if (now.before(startTime)) {
  41. // 当前时间 < 开始时间 → 未开始(状态0)
  42. activity.setStatus("0");
  43. } else if (now.after(endTime)) {
  44. // 当前时间 > 结束时间 → 已结束(状态2)
  45. activity.setStatus("2");
  46. } else {
  47. // 开始时间 ≤ 当前时间 ≤ 结束时间 → 进行中(状态1)
  48. activity.setStatus("1");
  49. }
  50. rechargeActivityCenterMapper.addActivity(activity);
  51. }
  52. // 更新活动
  53. @Override
  54. public void updateActivity(RechargeActivity activity) {
  55. Date startTime = activity.getStartTime();
  56. Date endTime = activity.getEndTime();
  57. //获取当前系统时间(本地时间,与活动时间时区保持一致)
  58. Date now = new Date();
  59. //时间范围判断,设置对应状态
  60. if (now.before(startTime)) {
  61. // 当前时间 < 开始时间 → 未开始(状态0)
  62. activity.setStatus("0");
  63. } else if (now.after(endTime)) {
  64. // 当前时间 > 结束时间 → 已结束(状态2)
  65. activity.setStatus("2");
  66. } else {
  67. // 开始时间 ≤ 当前时间 ≤ 结束时间 → 进行中(状态1)
  68. activity.setStatus("1");
  69. }
  70. rechargeActivityCenterMapper.updateActivity(activity);
  71. }
  72. @Override
  73. public void updateStatus() {
  74. // 查询所有活动
  75. List<RechargeActivity> activityList = rechargeActivityCenterMapper.listActivities();
  76. if (activityList == null || activityList.isEmpty()) {
  77. return;
  78. }
  79. Date now = new Date();
  80. // 遍历所有活动,更新状态
  81. for (RechargeActivity activity : activityList) {
  82. Date startTime = activity.getStartTime();
  83. Date endTime = activity.getEndTime();
  84. // 跳过时间为空的活动
  85. if (startTime == null || endTime == null) {
  86. continue;
  87. }
  88. String newStatus;
  89. // 时间范围判断,设置对应状态
  90. if (now.before(startTime)) {
  91. // 当前时间 < 开始时间 → 未开始(状态0)
  92. newStatus = "0";
  93. } else if (now.after(endTime)) {
  94. // 当前时间 > 结束时间 → 已结束(状态2)
  95. newStatus = "2";
  96. } else {
  97. // 开始时间 ≤ 当前时间 ≤ 结束时间 → 进行中(状态1)
  98. newStatus = "1";
  99. }
  100. // 只有当状态发生变化时才更新
  101. if (!newStatus.equals(activity.getStatus())) {
  102. activity.setStatus(newStatus);
  103. rechargeActivityCenterMapper.updateActivity(activity);
  104. }
  105. }
  106. }
  107. // 删除活动
  108. @Override
  109. public void deleteActivity(RechargeActivity activity) {
  110. rechargeActivityCenterMapper.deleteActivity(activity);
  111. }
  112. }