| | |
| | | package com.mzl.flower.schedule; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.mzl.flower.constant.Constants; |
| | | import com.mzl.flower.dto.response.point.ExpiredPointDTO; |
| | | import com.mzl.flower.entity.flower.FlowerCategory; |
| | | import com.mzl.flower.entity.partner.Partner; |
| | | 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.format.annotation.DateTimeFormat; |
| | | 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; |
| | | |
| | |
| | | |
| | | private final CustomerPointDetailMapper customerPointDetailMapper; |
| | | |
| | | public PointScheduleService(CustomerPointMapper customerPointMapper, 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 20 9 * * ?") |
| | | @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); |
| | | List<ExpiredPointDTO> pointDTOS = customerPointDetailMapper.tongjiExpiredPoint(lastYear,null); |
| | | if(pointDTOS != null && pointDTOS.size() > 0){ |
| | | for (ExpiredPointDTO pointDTO : pointDTOS) { |
| | | if(pointDTO.getAddPoint().intValue()> pointDTO.getReducePoint().intValue()){ //积分增加大于减少 |
| | |
| | | customerPointDetail.setChangeType(Constants.POINT_CHANGE_TYPE.reduce.name()); |
| | | customerPointDetail.setType(Constants.POINT_TYPE.expired.name()); |
| | | customerPointDetail.setPoint(expiredPoint); |
| | | customerPointDetail.setRecordDate(now); |
| | | customerPointDetail.setRecordDate(lastYear); |
| | | customerPointDetail.create("sys"); |
| | | customerPointDetail.setRemarks(DateUtils.toString(now,"yyyy-MM-dd")+"过期积分结算"); |
| | | customerPointDetail.setRemarks(DateUtils.toString(now,"yyyy-MM-dd")+"过期积分结算,过期积分"+expiredPoint); |
| | | customerPointDetailMapper.insert(customerPointDetail); |
| | | |
| | | //更新用户积分记录 |
| | |
| | | .eq(CustomerPoint::getCustomerId, pointDTO.getCustomerId()) |
| | | .eq(CustomerPoint::getUserId, pointDTO.getUserId())); |
| | | if(customerPoint == null ){ |
| | | customerPoint = new CustomerPoint(); |
| | | customerPoint.setCustomerId(pointDTO.getCustomerId()); |
| | | customerPoint.setUserId(pointDTO.getUserId()); |
| | | customerPoint.setTotalPoint(0); |
| | | customerPoint.setUsedPoint(0); |
| | | customerPoint.setExpiredPoint(0); |
| | | customerPoint.create("sys"); |
| | | customerPointMapper.insert(customerPoint); |
| | | log.error("用户积分记录不存在,userId={},customerId={}",pointDTO.getUserId(),pointDTO.getCustomerId()); |
| | | }else { |
| | | customerPoint.setExpiredPoint(expiredPoint); |
| | | Integer expiredPointTotal = customerPoint.getExpiredPoint()==null?0:customerPoint.getExpiredPoint(); |
| | | customerPoint.setExpiredPoint(expiredPoint+expiredPointTotal); |
| | | customerPointMapper.updateById(customerPoint); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 积分兑换券过期 |
| | | */ |
| | | @Scheduled(cron = "0 5 0 * * ?") |
| | | 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")); |
| | | } |
| | | |
| | | |
| | | } |