zxl
1 天以前 f0893131c84e18a40daa04b73c0573aac989f9d2
抽奖活动弹窗
6个文件已修改
1个文件已添加
128 ■■■■■ 已修改文件
buyer-api/src/main/java/cn/lili/controller/lmk/PopupController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/PrizeActivity.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/PrizeActivityVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/PrizeActivityService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeActivityServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/PrizeActivityMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/lmk/PrizeActivityController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
buyer-api/src/main/java/cn/lili/controller/lmk/PopupController.java
New file
@@ -0,0 +1,46 @@
package cn.lili.controller.lmk;
import cn.lili.base.Result;
import cn.lili.cache.Cache;
import cn.lili.common.security.context.UserContext;
import cn.lili.modules.lmk.service.PrizeActivityService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.TimeUnit;
/**
 * lmk-shop-java
 *
 * @author : zxl
 * @date : 2025-08-22 17:50
 **/
@RestController
@RequestMapping("/buyer/lmk/popup")
@RequiredArgsConstructor
public class PopupController {
    private final Cache cache;
    private final PrizeActivityService prizeActivityService;
    @GetMapping("/setPopupRedisTime")
    public Result setPopupRedisTime(){
        String id = UserContext.getCurrentUser().getId();
        Object o = cache.get(id);
        if (o == null){
            cache.put(id,id,10L, TimeUnit.SECONDS);
            return Result.ok().put("state",true);
        }else {
            return Result.ok().put("state",false);
        }
    }
    @GetMapping("/getPopupActivity")
    public Result getPopupActivity(){
        return prizeActivityService.getPopup();
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/entity/PrizeActivity.java
@@ -58,5 +58,9 @@
     /** 是否开启活动 */
    private String enableStatus;
    @TableField("popup")
    /**
     * 是否是弹窗活动
     */
    private Boolean popup;
}
framework/src/main/java/cn/lili/modules/lmk/domain/vo/PrizeActivityVO.java
@@ -60,8 +60,12 @@
    private String activityImgUrl;
    //是否能设置奖品
    private boolean canSet;
    //是否是弹窗活动
    private Boolean popup;
    public static PrizeActivityVO getVoByEntity(@NonNull PrizeActivity entity, PrizeActivityVO vo) {
        if(vo == null) {
            vo = new PrizeActivityVO();
framework/src/main/java/cn/lili/modules/lmk/service/PrizeActivityService.java
@@ -15,6 +15,14 @@
 */
public interface PrizeActivityService extends IService<PrizeActivity> {
    Result getPopup();
    /**
     * 设置弹窗活动
     * @param id
     * @return
     */
    Result popup(String id);
    Result publishPrizeActivity(String id);
    /**
     * 添加
framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeActivityServiceImpl.java
@@ -1,7 +1,6 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.lmk.domain.entity.ActivityRefPrize;
import cn.lili.modules.lmk.domain.vo.ActivityRefPrizeInfoVO;
import cn.lili.modules.lmk.enums.general.PrizeActivityStatusEnum;
import cn.lili.modules.lmk.service.ActivityRefPrizeService;
@@ -11,10 +10,14 @@
import cn.lili.modules.lmk.mapper.PrizeActivityMapper;
import cn.lili.modules.lmk.service.PrizeActivityService;
import cn.lili.base.Result;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.lili.modules.lmk.domain.form.PrizeActivityForm;
import cn.lili.modules.lmk.domain.vo.PrizeActivityVO;
import cn.lili.modules.lmk.domain.query.PrizeActivityQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import cn.lili.utils.PageUtil;
@@ -23,6 +26,7 @@
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -40,6 +44,45 @@
    private final PrizeActivityMapper prizeActivityMapper;
    private final COSUtil cOSUtil;
    @Override
    public Result getPopup() {
        //获得弹窗活动
        PrizeActivity prizeActivity = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(PrizeActivity::getDeleteFlag,Boolean.FALSE)
                .eq(PrizeActivity::getPopup,Boolean.TRUE)
                .one();
        PrizeActivityVO prizeActivityVO = new PrizeActivityVO();
        PrizeActivityVO vo = PrizeActivityVO.getVoByEntity(prizeActivity, prizeActivityVO);
        if (StringUtils.isNotBlank(vo.getActivityCover())){
            vo.setActivityCoverUrl(cOSUtil.getPreviewUrl(vo.getActivityCover()));
        }
        return Result.ok().data(prizeActivityVO);
    }
    @Override
    public Result popup(String id){
        //设置id的活动为弹窗活动,将其他活动的弹窗状态改为false.
        PrizeActivity prizeActivity = baseMapper.selectById(id);
        if (prizeActivity.getPopup()){
            prizeActivity.setPopup(Boolean.FALSE);
            prizeActivityMapper.updateById(prizeActivity);
            return Result.ok("取消弹窗活动成功!");
        }else {
            prizeActivity.setPopup(Boolean.TRUE);
            //修改其他活动的推荐状态后,修改该对象的修改状态
            prizeActivityMapper.updateById(prizeActivity);
            new LambdaUpdateChainWrapper<>(baseMapper).eq(PrizeActivity::getPopup,Boolean.TRUE)
                    .eq(PrizeActivity::getDeleteFlag,Boolean.FALSE)
                    .set(PrizeActivity::getPopup, Boolean.FALSE)
                    .ne(PrizeActivity::getId, prizeActivity.getId())
                    .set(PrizeActivity::getUpdateTime, new Date())
                    .update();
            return Result.ok("弹窗活动开启成功");
        }
    }
    @Override
    public Result publishPrizeActivity(String id) {
@@ -83,6 +126,7 @@
    public Result add(PrizeActivityForm form) {
        PrizeActivity entity = PrizeActivityForm.getEntityByForm(form, null);
        entity.setEnableStatus(PrizeActivityStatusEnum.OFF.name());
        entity.setPopup(Boolean.FALSE);
        baseMapper.insert(entity);
        return Result.ok("添加成功");
    }
@@ -173,7 +217,6 @@
        Assert.notNull(vo, "记录不存在");
        return Result.ok().data(vo);
    }
    /**
     * 列表
     * @return
framework/src/main/resources/mapper/lmk/PrizeActivityMapper.xml
@@ -14,6 +14,7 @@
        <result column="activity_img" property="activityImg" />
        <result column="activity_cover" property="activityCover" />
        <result column="enable_status" property="enableStatus" />
        <result column="popup" property="popup"/>
    </resultMap>
@@ -52,7 +53,8 @@
            LPA.activity_img,
            LPA.activity_cover,
            LPA.enable_status,
            LPA.id
            LPA.id,
            LPA.popup
        FROM
            lmk_prize_activity LPA
        WHERE
manager-api/src/main/java/cn/lili/controller/lmk/PrizeActivityController.java
@@ -2,18 +2,22 @@
import cn.lili.base.Result;
import cn.lili.cache.Cache;
import cn.lili.common.security.context.UserContext;
import cn.lili.modules.lmk.domain.form.ActivityRefPrizeForm;
import cn.lili.modules.lmk.domain.form.PrizeActivityForm;
import cn.lili.modules.lmk.domain.query.PrizeActivityQuery;
import cn.lili.modules.lmk.service.ActivityRefPrizeService;
import cn.lili.modules.lmk.service.PrizeActivityService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.Size;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
 * lmk-shop-java
@@ -31,6 +35,15 @@
    private final PrizeActivityService prizeActivityService;
    private final ActivityRefPrizeService activityRefPrizeService;
    @PutMapping("/popup/{id}")
    public Result popup(@PathVariable("id") String id){
        return prizeActivityService.popup(id);
    }
    @GetMapping
    public Result getPage(PrizeActivityQuery query){
        return prizeActivityService.page(query);