From 441d81870507e15214d9c8cbf64e6f3cddb14404 Mon Sep 17 00:00:00 2001 From: gongzuming <gongzuming> Date: 星期一, 02 九月 2024 17:02:09 +0800 Subject: [PATCH] 优化积分 --- src/main/java/com/mzl/flower/mapper/point/CustomerPointDetailMapper.java | 2 +- src/main/resources/mapper/point/CustomerPointDetailMapper.xml | 3 +++ src/main/定时任务说明.txt | 3 ++- src/main/java/com/mzl/flower/schedule/PointScheduleService.java | 13 +++---------- src/main/java/com/mzl/flower/service/point/CustomerPointService.java | 12 +++++++----- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/mzl/flower/mapper/point/CustomerPointDetailMapper.java b/src/main/java/com/mzl/flower/mapper/point/CustomerPointDetailMapper.java index 6482846..b1b6235 100644 --- a/src/main/java/com/mzl/flower/mapper/point/CustomerPointDetailMapper.java +++ b/src/main/java/com/mzl/flower/mapper/point/CustomerPointDetailMapper.java @@ -19,5 +19,5 @@ List<CustomerPointDetailVO> queryPage(@Param("dto") CustomerPointDetailQueryDTO dto, Page page); - List<ExpiredPointDTO> tongjiExpiredPoint(@Param("lastYear") LocalDate lastYear); + List<ExpiredPointDTO> tongjiExpiredPoint(@Param("lastYear") LocalDate lastYear,@Param("userId") String userId); } diff --git a/src/main/java/com/mzl/flower/schedule/PointScheduleService.java b/src/main/java/com/mzl/flower/schedule/PointScheduleService.java index ca05ac0..ad3cd3d 100644 --- a/src/main/java/com/mzl/flower/schedule/PointScheduleService.java +++ b/src/main/java/com/mzl/flower/schedule/PointScheduleService.java @@ -39,12 +39,12 @@ /** * 定时计算用户过期积分 */ - @Scheduled(cron = "0 20 9 * * ?") + @Scheduled(cron = "0 10 1 * * ?") 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()){ //积分增加大于减少 @@ -65,14 +65,7 @@ .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); customerPointMapper.updateById(customerPoint); diff --git a/src/main/java/com/mzl/flower/service/point/CustomerPointService.java b/src/main/java/com/mzl/flower/service/point/CustomerPointService.java index 04800ee..a75a7a9 100644 --- a/src/main/java/com/mzl/flower/service/point/CustomerPointService.java +++ b/src/main/java/com/mzl/flower/service/point/CustomerPointService.java @@ -85,13 +85,15 @@ if(POINT_CHANGE_TYPE.add.name().equals(detail.getChangeType())){ point.setTotalPoint(point.getTotalPoint() + detail.getPoint()); }else if(POINT_CHANGE_TYPE.reduce.name().equals(detail.getChangeType())){ - if(point.getTotalPoint()!= null && point.getTotalPoint()!=0 && point.getTotalPoint()>= detail.getPoint()){ - point.setTotalPoint(point.getTotalPoint() - detail.getPoint()); + Integer balancePoint = point.getTotalPoint() - point.getUsedPoint()-point.getExpiredPoint();//可用积分 + balancePoint = balancePoint.intValue()>0?balancePoint.intValue():0; + if(balancePoint.intValue() >= detail.getPoint().intValue()){ + point.setUsedPoint(point.getUsedPoint() + detail.getPoint()); }else{ //积分不足,直接清0 - point.setTotalPoint(0); - detail.setPoint(point.getTotalPoint()); - detail.setRemarks(detail.getRemarks()+",积分不足,扣除剩余积分"+point.getTotalPoint()); + point.setUsedPoint(point.getUsedPoint() + balancePoint); + detail.setPoint(balancePoint); + detail.setRemarks(detail.getRemarks()+",积分不足,扣除积分"+balancePoint); } } if(isAdd){ diff --git a/src/main/resources/mapper/point/CustomerPointDetailMapper.xml b/src/main/resources/mapper/point/CustomerPointDetailMapper.xml index 6e4689e..6c228fb 100644 --- a/src/main/resources/mapper/point/CustomerPointDetailMapper.xml +++ b/src/main/resources/mapper/point/CustomerPointDetailMapper.xml @@ -32,6 +32,9 @@ and p.record_date <= #{lastYear} ]]> </if> + <if test="userId!=null and userId!=''"> + and p.user_id = #{userId} + </if> GROUP BY p.user_id, p.customer_id diff --git "a/src/main/\345\256\232\346\227\266\344\273\273\345\212\241\350\257\264\346\230\216.txt" "b/src/main/\345\256\232\346\227\266\344\273\273\345\212\241\350\257\264\346\230\216.txt" index f6775e5..4f7d204 100644 --- "a/src/main/\345\256\232\346\227\266\344\273\273\345\212\241\350\257\264\346\230\216.txt" +++ "b/src/main/\345\256\232\346\227\266\344\273\273\345\212\241\350\257\264\346\230\216.txt" @@ -6,4 +6,5 @@ 6、计算上月供应商销售数量:每月1日凌晨执行一次 7、自动收货:每隔1小时执行一次 8、结算:每日凌晨0点钟执行 -9、确认转账:每隔10分钟执行一次 \ No newline at end of file +9、确认转账:每隔10分钟执行一次 +10、统计过期积分:凌晨1:10执行一次 \ No newline at end of file -- Gitblit v1.9.3