From 09310a5a6da2ffccc17f460244fb9a09ec3ff68b Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期一, 25 八月 2025 17:55:13 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 manager-api/src/main/java/cn/lili/controller/lmk/PrizeActivityController.java          |   13 ++++
 buyer-api/src/main/java/cn/lili/controller/lmk/PopupController.java                    |   46 +++++++++++++++
 framework/src/main/java/cn/lili/modules/lmk/domain/entity/PrizeActivity.java           |    6 +
 framework/src/main/resources/mapper/lmk/PrizeActivityMapper.xml                        |    4 +
 framework/src/main/java/cn/lili/modules/lmk/domain/vo/PrizeActivityVO.java             |    5 +
 framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeActivityServiceImpl.java |   62 ++++++++++++++++++++
 framework/src/main/java/cn/lili/modules/lmk/service/PrizeActivityService.java          |    8 ++
 7 files changed, 140 insertions(+), 4 deletions(-)

diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/PopupController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/PopupController.java
new file mode 100644
index 0000000..c3c2ba0
--- /dev/null
+++ b/buyer-api/src/main/java/cn/lili/controller/lmk/PopupController.java
@@ -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();
+    }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/PrizeActivity.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/PrizeActivity.java
index 78589dc..558b021 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/PrizeActivity.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/PrizeActivity.java
@@ -58,5 +58,9 @@
      /** 鏄惁寮�鍚椿鍔� */
     private String enableStatus;
 
-
+    @TableField("popup")
+    /**
+     * 鏄惁鏄脊绐楁椿鍔�
+     */
+    private Boolean popup;
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/PrizeActivityVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/PrizeActivityVO.java
index a8338c8..d67b066 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/PrizeActivityVO.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/PrizeActivityVO.java
@@ -60,6 +60,11 @@
 
     private String activityImgUrl;
 
+    //鏄惁鑳借缃鍝�
+    private boolean canSet;
+
+    //鏄惁鏄脊绐楁椿鍔�
+    private Boolean popup;
 
     public static PrizeActivityVO getVoByEntity(@NonNull PrizeActivity entity, PrizeActivityVO vo) {
         if(vo == null) {
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/PrizeActivityService.java b/framework/src/main/java/cn/lili/modules/lmk/service/PrizeActivityService.java
index 0c957e0..24abac8 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/PrizeActivityService.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/PrizeActivityService.java
@@ -17,6 +17,14 @@
  */
 public interface PrizeActivityService extends IService<PrizeActivity> {
 
+    Result getPopup();
+    /**
+     * 璁剧疆寮圭獥娲诲姩
+     * @param id
+     * @return
+     */
+    Result popup(String id);
+
     Result publishPrizeActivity(String id);
     /**
      * 娣诲姞
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeActivityServiceImpl.java
index 0b5e08f..9ca5f23 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeActivityServiceImpl.java
+++ b/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.domain.vo.PrizeDetailVO;
 import cn.lili.modules.lmk.enums.general.PrizeActivityStatusEnum;
@@ -12,10 +11,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;
@@ -24,6 +27,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -41,6 +45,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鐨勬椿鍔ㄤ负寮圭獥娲诲姩锛屽皢鍏朵粬娲诲姩鐨勫脊绐楃姸鎬佹敼涓篺alse.
+        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) {
@@ -84,6 +127,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("娣诲姞鎴愬姛");
     }
@@ -136,8 +180,23 @@
     public Result page(PrizeActivityQuery query) {
         IPage<PrizeActivityVO> page = PageUtil.getPage(query, PrizeActivityVO.class);
         baseMapper.getPage(page, query);
+        //
 
         for (PrizeActivityVO vo : page.getRecords()) {
+            Object data = activityRefPrizeService.getActivityRefPrizeByActivityId(vo.getId()).get("data");
+
+            if (data instanceof List<?>) {
+                List<?> rawList = (List<?>) data;
+                List<ActivityRefPrizeInfoVO> list = new ArrayList<>();
+                for (Object item : rawList) {
+                    if (item instanceof ActivityRefPrizeInfoVO) {
+                        list.add((ActivityRefPrizeInfoVO) item);
+                    }
+                }
+                vo.setCanSet(CollectionUtils.isEmpty(list));
+                // 浣跨敤 list
+            }
+
             if (StringUtils.isNotBlank(vo.getActivityCover())){
                 vo.setActivityCoverUrl(cOSUtil.getPreviewUrl(vo.getActivityCover()));
             }
@@ -159,7 +218,6 @@
         Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
         return Result.ok().data(vo);
     }
-
     /**
      * 鍒楄〃
      * @return
diff --git a/framework/src/main/resources/mapper/lmk/PrizeActivityMapper.xml b/framework/src/main/resources/mapper/lmk/PrizeActivityMapper.xml
index 204c4fa..c4cee58 100644
--- a/framework/src/main/resources/mapper/lmk/PrizeActivityMapper.xml
+++ b/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
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/PrizeActivityController.java b/manager-api/src/main/java/cn/lili/controller/lmk/PrizeActivityController.java
index d32b54e..4448ec2 100644
--- a/manager-api/src/main/java/cn/lili/controller/lmk/PrizeActivityController.java
+++ b/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);

--
Gitblit v1.8.0