From 35309b932b738d5a8537e53207d28004a8da0f89 Mon Sep 17 00:00:00 2001
From: gongzuming <gongzuming>
Date: 星期五, 20 九月 2024 17:17:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master-v2'
---
src/main/java/com/mzl/flower/schedule/PointScheduleService.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 96 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/mzl/flower/schedule/PointScheduleService.java b/src/main/java/com/mzl/flower/schedule/PointScheduleService.java
new file mode 100644
index 0000000..9a6a612
--- /dev/null
+++ b/src/main/java/com/mzl/flower/schedule/PointScheduleService.java
@@ -0,0 +1,96 @@
+package com.mzl.flower.schedule;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.mzl.flower.constant.Constants;
+import com.mzl.flower.dto.response.point.ExpiredPointDTO;
+import com.mzl.flower.entity.point.CustomerPoint;
+import com.mzl.flower.entity.point.CustomerPointDetail;
+import com.mzl.flower.mapper.point.CustomerPointDetailMapper;
+import com.mzl.flower.mapper.point.CustomerPointMapper;
+import com.mzl.flower.mapper.point.PointGoodsRecordMapper;
+import com.mzl.flower.utils.DateUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.List;
+
+@Component
+@Slf4j
+public class PointScheduleService {
+
+
+ private final CustomerPointMapper customerPointMapper;
+
+ private final CustomerPointDetailMapper customerPointDetailMapper;
+
+ private final PointGoodsRecordMapper pointGoodsRecordMapper;
+
+ public PointScheduleService(CustomerPointMapper customerPointMapper, CustomerPointDetailMapper customerPointDetailMapper, PointGoodsRecordMapper pointGoodsRecordMapper) {
+ this.customerPointMapper = customerPointMapper;
+ this.customerPointDetailMapper = customerPointDetailMapper;
+ this.pointGoodsRecordMapper = pointGoodsRecordMapper;
+ }
+
+
+ /**
+ * 定时计算用户过期积分
+ */
+ @Scheduled(cron = "0 10 0 * * ?")
+ public void calculatingExpiredPoint() {
+ log.info("过期积分计算开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+ LocalDate now = LocalDate.now().minusDays(1);//前一天
+ LocalDate lastYear = now.minus(1, ChronoUnit.YEARS); // 日期减去一年
+ List<ExpiredPointDTO> pointDTOS = customerPointDetailMapper.tongjiExpiredPoint(lastYear,null);
+ if(pointDTOS != null && pointDTOS.size() > 0){
+ for (ExpiredPointDTO pointDTO : pointDTOS) {
+ if(pointDTO.getAddPoint().intValue()> pointDTO.getReducePoint().intValue()){ //积分增加大于减少
+ Integer expiredPoint = pointDTO.getAddPoint().intValue() - pointDTO.getReducePoint().intValue();
+ CustomerPointDetail customerPointDetail = new CustomerPointDetail();
+ customerPointDetail.setUserId(pointDTO.getUserId());
+ customerPointDetail.setCustomerId(pointDTO.getCustomerId());
+ customerPointDetail.setChangeType(Constants.POINT_CHANGE_TYPE.reduce.name());
+ customerPointDetail.setType(Constants.POINT_TYPE.expired.name());
+ customerPointDetail.setPoint(expiredPoint);
+ customerPointDetail.setRecordDate(lastYear);
+ customerPointDetail.create("sys");
+ customerPointDetail.setRemarks(DateUtils.toString(now,"yyyy-MM-dd")+"过期积分结算,过期积分"+expiredPoint);
+ customerPointDetailMapper.insert(customerPointDetail);
+
+ //更新用户积分记录
+ CustomerPoint customerPoint = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>()
+ .eq(CustomerPoint::getCustomerId, pointDTO.getCustomerId())
+ .eq(CustomerPoint::getUserId, pointDTO.getUserId()));
+ if(customerPoint == null ){
+ log.error("用户积分记录不存在,userId={},customerId={}",pointDTO.getUserId(),pointDTO.getCustomerId());
+ }else {
+ Integer expiredPointTotal = customerPoint.getExpiredPoint()==null?0:customerPoint.getExpiredPoint();
+ customerPoint.setExpiredPoint(expiredPoint+expiredPointTotal);
+ customerPointMapper.updateById(customerPoint);
+ }
+
+ }
+ }
+ }
+
+
+ log.info("过期积分计算结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+ }
+
+
+ /**
+ * 积分兑换券过期
+ */
+ @Scheduled(cron = "0 46 11 * * ?")
+ public void expiredPointGoodsRecord() {
+ log.info("积分兑换券过期计算开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+ pointGoodsRecordMapper.updateExpiredPointGoodsRecord();
+ log.info("积分兑换券过期计算开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+ }
+
+
+}
--
Gitblit v1.9.3