package com.cyksj.task; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.cyksj.common.constant.Constant; import com.cyksj.common.constant.PointsRecordConst; import com.cyksj.mapper.manage.statistics.SignStatisticsDataMapper; import com.cyksj.mapper.market.sign.SignUserMapper; import com.cyksj.mapper.market.sign.UserPointsRecordMapper; import com.cyksj.mapper.market.task.TaskFollowPlatVerifyMapper; import com.cyksj.mapper.market.task.TaskUserCompleteRecordMapper; import com.cyksj.model.entity.SignStatisticsData; import com.cyksj.model.entity.SignUser; import com.cyksj.model.entity.TaskFollowPlatVerify; import com.cyksj.model.entity.TaskUserCompleteRecord; import com.cyksj.service.market.MarketFrontService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; /* *项目名: netflix *文件名: SignStatisticsDataScheduler *创建者: JavaZou *创建时间:2022/12/27 18:27 */ @Component @Slf4j @RequiredArgsConstructor public class SignStatisticsDataScheduler { private final SignStatisticsDataMapper signStatisticsDataMapper; private final UserPointsRecordMapper userPointsRecordMapper; private final SignUserMapper signUserMapper; private final TaskFollowPlatVerifyMapper taskFollowPlatVerifyMapper; private final TaskUserCompleteRecordMapper taskUserCompleteRecordMapper; private final MarketFrontService marketFrontService; @Scheduled(cron = "0 0 0 * * ?") public void signStatisticsData() { Date thisZeroDate = DateUtil.beginOfDay(DateTime.now()); Date yesZeroDate = DateTime.of(thisZeroDate.getTime() - Constant.DAY_MILLS); SignStatisticsData signStatisticsData = new SignStatisticsData(); //今日签到人数 Integer todayNumOfSign = signUserMapper.selectCount(Wrappers.lambdaQuery(SignUser.class) .between(SignUser::getUpdateTime, yesZeroDate, thisZeroDate)); signStatisticsData.setTodayNumOfSign(todayNumOfSign); //今日发放积分 Integer todayNumOfPoints = userPointsRecordMapper.getTodayNumOfPoints(yesZeroDate, thisZeroDate); signStatisticsData.setTodayNumOfPoints(todayNumOfPoints); //累计发放积分 Integer sumOfPoints = userPointsRecordMapper.getSumOfPoints(); signStatisticsData.setSumOfPoints(sumOfPoints); //今日使用积分 Integer todayUseOfPoints = userPointsRecordMapper.getTodayUseOfPoints(yesZeroDate, thisZeroDate); signStatisticsData.setTodayUseOfPoints(-todayUseOfPoints); //累计使用积分 Integer sumUseOfPoints = userPointsRecordMapper.getSumUseOfPoints(); signStatisticsData.setSumUseOfPoints(-sumUseOfPoints); //今日抽奖次数 Integer todayNumOfLottery = userPointsRecordMapper.getTodayNumOfLottery(PointsRecordConst.POINTS_LOTTERY, yesZeroDate, thisZeroDate); signStatisticsData.setTodayNumOfLottery(todayNumOfLottery); //连签2天 Integer sign2Day = userPointsRecordMapper.getSignDayByCondition(2, yesZeroDate, thisZeroDate); signStatisticsData.setT2(sign2Day); //连签3天 Integer sign3Day = userPointsRecordMapper.getSignDayByCondition(3, yesZeroDate, thisZeroDate); signStatisticsData.setT3(sign3Day); //连签4天 Integer sign4Day = userPointsRecordMapper.getSignDayByCondition(4, yesZeroDate, thisZeroDate); signStatisticsData.setT4(sign4Day); //连签5天 Integer sign5Day = userPointsRecordMapper.getSignDayByCondition(5, yesZeroDate, thisZeroDate); signStatisticsData.setT5(sign5Day); //连签6天 Integer sign6Day = userPointsRecordMapper.getSignDayByCondition(6, yesZeroDate, thisZeroDate); signStatisticsData.setT6(sign6Day); //连签7天 Integer sign7Day = userPointsRecordMapper.getSignDayByCondition(7, yesZeroDate, thisZeroDate); signStatisticsData.setT7(sign7Day); signStatisticsData.setStatisticsDate(yesZeroDate); signStatisticsDataMapper.insert(signStatisticsData); } /** * 关注任务3天未审核 自动审核成功 */ @Scheduled(cron = "0 30 0 * * ?") public void autoVerifySuccess() { DateTime now = DateTime.now(); DateTime threeBefore = DateUtil.offsetDay(now, -3); List taskFollowPlatVerifies = taskFollowPlatVerifyMapper.selectList(Wrappers.lambdaQuery(TaskFollowPlatVerify.class) .le(TaskFollowPlatVerify::getCreatedTime, threeBefore) .eq(TaskFollowPlatVerify::getStatus, TaskFollowPlatVerify.Status.verifying)); taskFollowPlatVerifies.forEach(data->{ data.setStatus(TaskFollowPlatVerify.Status.success); TaskUserCompleteRecord record = taskUserCompleteRecordMapper.selectOne(Wrappers.lambdaQuery(TaskUserCompleteRecord.class) .eq(TaskUserCompleteRecord::getUserId, data.getUserId()) .eq(TaskUserCompleteRecord::getTaskId, data.getTaskId()) .last("limit 1")); record.setStatus(TaskUserCompleteRecord.Status.received); taskUserCompleteRecordMapper.updateById(record); marketFrontService.pointsRecord(record.getUserId(), record.getPoints(), PointsRecordConst.TASK, false); }); } }