陶杰
2024-09-02 1c8b2509fe7d990fd0b9f9ed6b338c6203d54758
Merge remote-tracking branch 'origin/master-v2' into master-v2
已修改5个文件
33 ■■■■ 文件已修改
src/main/java/com/mzl/flower/mapper/point/CustomerPointDetailMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/schedule/PointScheduleService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/point/CustomerPointService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/point/CustomerPointDetailMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/定时任务说明.txt 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
}
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);
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){
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
src/main/定时任务说明.txt
@@ -6,4 +6,5 @@
6、计算上月供应商销售数量:每月1日凌晨执行一次
7、自动收货:每隔1小时执行一次
8、结算:每日凌晨0点钟执行
9、确认转账:每隔10分钟执行一次
9、确认转账:每隔10分钟执行一次
10、统计过期积分:凌晨1:10执行一次