SignStatisticsDataScheduler.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package com.cyksj.task;
  2. import cn.hutool.core.date.DateTime;
  3. import cn.hutool.core.date.DateUtil;
  4. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5. import com.cyksj.common.constant.Constant;
  6. import com.cyksj.common.constant.PointsRecordConst;
  7. import com.cyksj.mapper.manage.statistics.SignStatisticsDataMapper;
  8. import com.cyksj.mapper.market.sign.SignUserMapper;
  9. import com.cyksj.mapper.market.sign.UserPointsRecordMapper;
  10. import com.cyksj.mapper.market.task.TaskFollowPlatVerifyMapper;
  11. import com.cyksj.mapper.market.task.TaskUserCompleteRecordMapper;
  12. import com.cyksj.model.entity.SignStatisticsData;
  13. import com.cyksj.model.entity.SignUser;
  14. import com.cyksj.model.entity.TaskFollowPlatVerify;
  15. import com.cyksj.model.entity.TaskUserCompleteRecord;
  16. import com.cyksj.service.market.MarketFrontService;
  17. import lombok.RequiredArgsConstructor;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.springframework.scheduling.annotation.Scheduled;
  20. import org.springframework.stereotype.Component;
  21. import java.util.Date;
  22. import java.util.List;
  23. /*
  24. *项目名: netflix
  25. *文件名: SignStatisticsDataScheduler
  26. *创建者: JavaZou
  27. *创建时间:2022/12/27 18:27
  28. */
  29. @Component
  30. @Slf4j
  31. @RequiredArgsConstructor
  32. public class SignStatisticsDataScheduler {
  33. private final SignStatisticsDataMapper signStatisticsDataMapper;
  34. private final UserPointsRecordMapper userPointsRecordMapper;
  35. private final SignUserMapper signUserMapper;
  36. private final TaskFollowPlatVerifyMapper taskFollowPlatVerifyMapper;
  37. private final TaskUserCompleteRecordMapper taskUserCompleteRecordMapper;
  38. private final MarketFrontService marketFrontService;
  39. @Scheduled(cron = "0 0 0 * * ?")
  40. public void signStatisticsData() {
  41. Date thisZeroDate = DateUtil.beginOfDay(DateTime.now());
  42. Date yesZeroDate = DateTime.of(thisZeroDate.getTime() - Constant.DAY_MILLS);
  43. SignStatisticsData signStatisticsData = new SignStatisticsData();
  44. //今日签到人数
  45. Integer todayNumOfSign = signUserMapper.selectCount(Wrappers.lambdaQuery(SignUser.class)
  46. .between(SignUser::getUpdateTime, yesZeroDate, thisZeroDate));
  47. signStatisticsData.setTodayNumOfSign(todayNumOfSign);
  48. //今日发放积分
  49. Integer todayNumOfPoints = userPointsRecordMapper.getTodayNumOfPoints(yesZeroDate, thisZeroDate);
  50. signStatisticsData.setTodayNumOfPoints(todayNumOfPoints);
  51. //累计发放积分
  52. Integer sumOfPoints = userPointsRecordMapper.getSumOfPoints();
  53. signStatisticsData.setSumOfPoints(sumOfPoints);
  54. //今日使用积分
  55. Integer todayUseOfPoints = userPointsRecordMapper.getTodayUseOfPoints(yesZeroDate, thisZeroDate);
  56. signStatisticsData.setTodayUseOfPoints(-todayUseOfPoints);
  57. //累计使用积分
  58. Integer sumUseOfPoints = userPointsRecordMapper.getSumUseOfPoints();
  59. signStatisticsData.setSumUseOfPoints(-sumUseOfPoints);
  60. //今日抽奖次数
  61. Integer todayNumOfLottery = userPointsRecordMapper.getTodayNumOfLottery(PointsRecordConst.POINTS_LOTTERY, yesZeroDate, thisZeroDate);
  62. signStatisticsData.setTodayNumOfLottery(todayNumOfLottery);
  63. //连签2天
  64. Integer sign2Day = userPointsRecordMapper.getSignDayByCondition(2, yesZeroDate, thisZeroDate);
  65. signStatisticsData.setT2(sign2Day);
  66. //连签3天
  67. Integer sign3Day = userPointsRecordMapper.getSignDayByCondition(3, yesZeroDate, thisZeroDate);
  68. signStatisticsData.setT3(sign3Day);
  69. //连签4天
  70. Integer sign4Day = userPointsRecordMapper.getSignDayByCondition(4, yesZeroDate, thisZeroDate);
  71. signStatisticsData.setT4(sign4Day);
  72. //连签5天
  73. Integer sign5Day = userPointsRecordMapper.getSignDayByCondition(5, yesZeroDate, thisZeroDate);
  74. signStatisticsData.setT5(sign5Day);
  75. //连签6天
  76. Integer sign6Day = userPointsRecordMapper.getSignDayByCondition(6, yesZeroDate, thisZeroDate);
  77. signStatisticsData.setT6(sign6Day);
  78. //连签7天
  79. Integer sign7Day = userPointsRecordMapper.getSignDayByCondition(7, yesZeroDate, thisZeroDate);
  80. signStatisticsData.setT7(sign7Day);
  81. signStatisticsData.setStatisticsDate(yesZeroDate);
  82. signStatisticsDataMapper.insert(signStatisticsData);
  83. }
  84. /**
  85. * 关注任务3天未审核 自动审核成功
  86. */
  87. @Scheduled(cron = "0 30 0 * * ?")
  88. public void autoVerifySuccess() {
  89. DateTime now = DateTime.now();
  90. DateTime threeBefore = DateUtil.offsetDay(now, -3);
  91. List<TaskFollowPlatVerify> taskFollowPlatVerifies = taskFollowPlatVerifyMapper.selectList(Wrappers.lambdaQuery(TaskFollowPlatVerify.class)
  92. .le(TaskFollowPlatVerify::getCreatedTime, threeBefore)
  93. .eq(TaskFollowPlatVerify::getStatus, TaskFollowPlatVerify.Status.verifying));
  94. taskFollowPlatVerifies.forEach(data->{
  95. data.setStatus(TaskFollowPlatVerify.Status.success);
  96. TaskUserCompleteRecord record = taskUserCompleteRecordMapper.selectOne(Wrappers.lambdaQuery(TaskUserCompleteRecord.class)
  97. .eq(TaskUserCompleteRecord::getUserId, data.getUserId())
  98. .eq(TaskUserCompleteRecord::getTaskId, data.getTaskId())
  99. .last("limit 1"));
  100. record.setStatus(TaskUserCompleteRecord.Status.received);
  101. taskUserCompleteRecordMapper.updateById(record);
  102. marketFrontService.pointsRecord(record.getUserId(), record.getPoints(), PointsRecordConst.TASK, false);
  103. });
  104. }
  105. }