KKSU
2025-01-08 89384e54b9a4e5f7fc22a24c5d2ca2650549c297
feat(mall): 添加活动过期自动下架功能

- 新增 overtimeActivity 方法,定时检查并下架过期的活动
- 优化 ApiMallNewsServiceImpl 中的支付方式处理逻辑
- 修改 MallGoodsQueryDto 中的 activityId 字段注释
- 移除 ProfitJob 中的冗余代码和未使用的定时任务方法
3 files modified
88 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/dto/MallGoodsQueryDto.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java 82 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java 4 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/MallGoodsQueryDto.java
@@ -36,7 +36,7 @@
    @ApiModelProperty(value = "是否套餐 1-普通商品 2-积分商品 3-活动商品 ", example = "2")
    private Integer isNormal;
    @ApiModelProperty(value = "是否套餐 1-普通商品 2-积分商品 3-活动商品 ", example = "2")
    @ApiModelProperty(value = "活动ID ", example = "2")
    private Long activityId;
    @ApiModelProperty(value = "1-付费商品 2-积分商品")
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -1,30 +1,18 @@
package cc.mrbird.febs.mall.quartz;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.mall.entity.MallMember;
import cc.mrbird.febs.mall.entity.MallMoneyFlow;
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IMemberProfitService;
import cc.mrbird.febs.mall.service.impl.CommonService;
import cc.mrbird.febs.common.enumerates.YesOrNoOrIngEnum;
import cc.mrbird.febs.mall.entity.MallActivity;
import cc.mrbird.febs.mall.mapper.MallActivityMapper;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
/**
@@ -37,43 +25,29 @@
public class ProfitJob {
    @Autowired
    private IMemberProfitService memberProfitService;
    private MallActivityMapper mallActivityMapper;
//    /**
//     * 代理分红
//     */
//    @Scheduled(cron = "0 30 0 * * ?")
//    public void profitJob() {
//        memberProfitService.agentProfit(null);
//    }
//
//    @Scheduled(cron = "0 30 1 * * ?")
//    public void storeAndDirectorJob() {
//        memberProfitService.storeAndDirectorProfit(null);
//    }
//
//    /**
//     * 感恩奖
//     */
//    @Scheduled(cron = "0 0 1 * * ?")
//    public void thankfulJob() {
//        memberProfitService.thankfulProfit(null);
//    }
//
//
//    /**
//     * 静态分红
//     */
//    @Scheduled(cron = "0 0 0 * * ?")
//    public void staticProfitJob() {
//        memberProfitService.staticProfit(null);
//    }
//
//    /**
//     * 排名奖 每月1号
//     */
//    @Scheduled(cron = "0 30 0 1 * ?")
//    public void rankJob() {
//        memberProfitService.rankProfit();
//    }
    /**
     * 一分钟运行一次
     *      结束活动
     */
    @Scheduled(cron = "0 0/1 * * * ? ")
    public void overtimeActivity() {
        DateTime date = DateUtil.date();
        List<MallActivity> mallActivities =
                mallActivityMapper.selectList(
                        new LambdaQueryWrapper<MallActivity>()
                                .eq(MallActivity::getState, YesOrNoOrIngEnum.YES.getValue())
                                .ge(MallActivity::getEndTime, date)
                );
        if(CollUtil.isEmpty(mallActivities)){
            return;
        }
        mallActivities.forEach(mallActivity -> {
                mallActivity.setState(YesOrNoOrIngEnum.NO.getValue());
                mallActivityMapper.updateById(mallActivity);
        });
    }
}
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java
@@ -8,6 +8,7 @@
import cc.mrbird.febs.mall.service.IApiMallNewsService;
import cc.mrbird.febs.mall.vo.NewsListVo;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -66,9 +67,10 @@
        );
        if(CollUtil.isNotEmpty(paymentMethodList)){
            paymentMethodList.forEach(item -> {
                if("1".equals(item.getIsJump()) && 1 == item.getIsInside()){
                if("1".equals(item.getIsJump()) && 1 == item.getIsInside() && StrUtil.isNotEmpty(item.getJumpUrl())){
                    String jumpUrl = item.getJumpUrl();
                    MallActivity mallActivity = mallActivityMapper.selectById(Long.parseLong(jumpUrl));
                    item.setActivityId(mallActivity.getId());
                }
            });