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);