From 7c038921c9242db70ea751ac45f6cdc6c35e4a2e Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 15 七月 2025 14:59:07 +0800
Subject: [PATCH] 商家端活动申请

---
 manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java                 |    3 
 framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java               |    5 +
 framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java |    4 
 framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java          |    5 +
 framework/src/main/java/cn/lili/utils/HtmlUtil.java                                  |   23 +++++
 seller-api/src/main/java/cn/lili/controller/activity/StoreActivityController.java    |   66 ++++++++++++++++
 framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java              |    3 
 framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java    |   36 +++++++--
 framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java        |   16 +++-
 manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java             |   15 ---
 framework/src/main/resources/mapper/lmk/ActivityMapper.xml                           |   59 ++++++++++++++
 11 files changed, 208 insertions(+), 27 deletions(-)

diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java
index 4162815..ac452a3 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java
@@ -75,4 +75,7 @@
     @TableField("member_id")
     private String memberId;
 
+    @TableField("store_id")
+    private String storeId;
+
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java
index cbcb35a..8f6e870 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java
@@ -49,14 +49,14 @@
         return entity;
     }
 
-    public static ActivityAuditRecordForm getEntityByManagerBuildForm(@NotNull String activityId) {
+    public static ActivityAuditRecordForm getFormByManager(@NotNull String activityId) {
         ActivityAuditRecordForm form = new ActivityAuditRecordForm();
         form.setActivityId(activityId);
         form.setAudit(1);
         form.setRemarks(mangerBuild);
         return form;
     }
-    public static ActivityAuditRecordForm getEntityByBuyerBuildForm(@NotNull String activityId) {
+    public static ActivityAuditRecordForm getFormByBuyer(@NotNull String activityId) {
         ActivityAuditRecordForm form = new ActivityAuditRecordForm();
         form.setActivityId(activityId);
         form.setAudit(0);
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java
index 8509f1d..da07a71 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java
@@ -48,5 +48,10 @@
      */
     private String memberId;
 
+    /**
+     * 鐢宠浜掑姩鐨勫簵閾篿d
+     */
+    private String storeId;
+
 
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java
index 977a69e..c895d2e 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java
@@ -35,7 +35,10 @@
     */
     IPage getPage(IPage page, @Param("query") ActivityQuery query);
 
-
+    /**
+     *  鍟嗗绔鍒嗛〉
+     */
+    IPage storeGetPage(IPage page, @Param("query") ActivityQuery query);
 
 
     IPage getMembers(IPage page, @Param("query") ActivityMembersQuery query);
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java
index b32929a..2557297 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java
@@ -55,6 +55,7 @@
         entity.setPublish(false);
         //璁剧疆鐢宠浜篿d
         entity.setMemberId(UserContext.getCurrentUserId());
+        entity.setStoreId(UserContext.getCurrentUser().getStoreId());
         baseMapper.insert(entity);
         mangerSaveOrUpdate(isManager,entity);
         return Result.ok("娣诲姞鎴愬姛");
@@ -88,9 +89,9 @@
         //娣诲姞瀹℃牳璁板綍
         if (isManager){
             //鐩存帴閫氳繃
-            activityAuditRecordForm = ActivityAuditRecordForm.getEntityByManagerBuildForm(entity.getId());
+            activityAuditRecordForm = ActivityAuditRecordForm.getFormByManager(entity.getId());
         }else {
-            activityAuditRecordForm = ActivityAuditRecordForm.getEntityByBuyerBuildForm(entity.getId());
+            activityAuditRecordForm = ActivityAuditRecordForm.getFormByBuyer(entity.getId());
         }
         activityAuditRecordService.addOrUpdateAuditActivity(activityAuditRecordForm);
     }
@@ -98,9 +99,13 @@
     public Result remove(List<String> ids) {
         //鍒ゆ柇娲诲姩id鏄惁宸茬粡瀛樺湪鎶ュ悕浜哄憳
         for(String id : ids){
-            if(haveApplicationMembers(id)){
-                return Result.error("璇ユ椿鍔ㄦ棤娉曞垹闄わ紝宸插瓨鍦ㄦ姤鍚嶄汉鍛�");
+            if (isPublishActivity(id)){
+                return Result.error("瀛樺湪娲诲姩宸插彂甯冨垹闄ゅ墠璇蜂笅鏋惰娲诲姩锛�");
             }
+            if(haveApplicationMembers(id)){
+                return Result.error("瀛樺湪娲诲姩宸叉湁鎶ュ悕浜哄憳锛屾棤娉曞垹闄わ紒");
+            }
+
         }
         //鏈粡杩噐eturn鍒欏垹闄�
         for (String id : ids){
@@ -115,6 +120,12 @@
         activityMembersQuery.setId(id);
         return (long) activityMembersPage(activityMembersQuery).get("total") > 0;
     }
+    //鍒ゆ柇浜掑姩鏄惁鍙戝竷
+    public Boolean isPublishActivity(String id){
+        Activity activity = baseMapper.selectById(id);
+        return activity.getPublish();
+    }
+
     //鍒犻櫎娲诲姩鍚屾椂鍒犻櫎娲诲姩鐨勭浉鍏充俊鎭�
     public void delActivityAndInformation(String id){
         ActivityVO vo = baseMapper.getById(id);
@@ -128,9 +139,12 @@
     @Override
     public Result removeById(String id) {
         //鍏堝垽鏂椿鍔ㄦ槸鍚︽湁鎶ュ悕浜哄憳
+        if (isPublishActivity(id)){
+            return Result.error("璇ユ椿鍔ㄥ凡鍙戝竷鍒犻櫎鍓嶈涓嬫灦璇ユ椿鍔紒");
+        }
 
         if(haveApplicationMembers(id)){
-            return Result.error("璇ユ椿鍔ㄦ棤娉曞垹闄わ紝宸插瓨鍦ㄦ姤鍚嶄汉鍛�");
+            return Result.error("璇ユ椿鍔ㄥ凡鏈夋姤鍚嶄汉鍛橈紝鏃犳硶鍒犻櫎锛�");
         }
         //鍒犻櫎锛屽悓鏃跺垽鏂瀵硅薄鐨勫皝闈㈡槸鍚﹀瓨鍦� 锛屽瓨鍦ㄥ垯鍦ㄤ簯鏈嶅姟鍣ㄥ垹闄�
         delActivityAndInformation(id);
@@ -152,18 +166,24 @@
 
     @Override
     public Result getMyApplyActivityPage(ActivityQuery query){
-        System.out.println(query);
 
         //浼犲叆褰撳墠璇锋眰鐢ㄦ埛鐨刬d
-        query.setMemberId(UserContext.getCurrentUserId());
+        String storeId = UserContext.getCurrentUser().getStoreId();
+        if (storeId == null){
+            query.setMemberId(UserContext.getCurrentUserId());
+        }else {
+            query.setStoreId(storeId);
+        }
+
         //鏇村叿鐢ㄦ埛id鑾峰緱娲诲姩
         IPage<ActivityVO> page = PageUtil.getPage(query, ActivityVO.class);
-        baseMapper.getPage(page, query);
+        baseMapper.storeGetPage(page, query);
         for (ActivityVO vo : page.getRecords()) {
             if (!ActivityCoverTypeEnum.TEXT.getType().equals(vo.getCoverType())){
                 vo.setUrl(cOSUtil.getPreviewUrl(vo.getCover()));
             }
         }
+
         return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java
index 92011fc..9088686 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java
@@ -59,16 +59,24 @@
 
     @Override
     public Result remove(List<String> ids) {
+        for (String id : ids) {
+            if (isPublishNews(id)){
+                return Result.error("瀛樺湪鏂伴椈宸插彂甯冨垹闄ゅ墠璇蜂笅鏋惰鏂伴椈锛�");
+            }
+        }
+
         baseMapper.deleteBatchIds(ids);
         return Result.ok("鍒犻櫎鎴愬姛");
     }
-
+    public Boolean isPublishNews(String id){
+        News entity = baseMapper.selectById(id);
+        return entity.getPublish();
+    }
     @Override
     public Result removeById(String id) {
         //鍒ゆ柇鏄惁鍙戝竷鍙戝竷鍒欐彁绀哄厛涓嬫灦锛屽啀鍒犻櫎
-        News entity = baseMapper.selectById(id);
-        if(entity.getPublish()){
-            throw new RuntimeException("璇ユ柊闂诲凡鍙戝竷");
+        if(isPublishNews(id)){
+            return Result.error("璇ユ柊闂诲凡鍙戝竷鍒犻櫎鍓嶈涓嬫灦璇ユ柊闂伙紒");
         }
 
         baseMapper.deleteById(id);
diff --git a/framework/src/main/java/cn/lili/utils/HtmlUtil.java b/framework/src/main/java/cn/lili/utils/HtmlUtil.java
new file mode 100644
index 0000000..52e3326
--- /dev/null
+++ b/framework/src/main/java/cn/lili/utils/HtmlUtil.java
@@ -0,0 +1,23 @@
+package cn.lili.utils;
+
+
+/**
+ * lmk-shop-java
+ * 鏂板html澶勭悊
+ *
+ * @author : zxl
+ * @date : 2025-07-14 14:10
+ **/
+public class HtmlUtil {
+    public static String addVideoControls(String html) {
+        if (html == null || html.isEmpty()) {
+            return html;
+        }
+
+        // 鍖归厤鎵�鏈夋湭鍖呭惈 controls 灞炴�х殑 <video> 鏍囩
+        String regex = "<video\\b(?![^>]*\\bcontrols\\b)([^>]*)>";
+        String replacement = "<video controls=\"controls\"$1>";
+
+        return html.replaceAll(regex, replacement);
+    }
+}
diff --git a/framework/src/main/resources/mapper/lmk/ActivityMapper.xml b/framework/src/main/resources/mapper/lmk/ActivityMapper.xml
index 9382128..e651bc2 100644
--- a/framework/src/main/resources/mapper/lmk/ActivityMapper.xml
+++ b/framework/src/main/resources/mapper/lmk/ActivityMapper.xml
@@ -165,9 +165,68 @@
             <if test="query.audit == true" >AND LAAR.audit != 0</if>
             <if test="query.audit == false" >AND LAAR.audit = 0</if>
             <if test="query.memberId !=null and query.memberId !=''">And LA.member_id = #{query.memberId}</if>
+            <if test="query.storeId !=null and query.storeId !=''">And LA.store_id = #{query.storeId}</if>
             Order by LA.create_time DESC
     </select>
 
+    <select id="storeGetPage" resultMap="BaseResultMap">
+        SELECT
+        LA.id,
+        LA.activity_name,
+        LA.activity_type,
+        LA.report_start_time,
+        LA.report_end_time,
+        LA.start_time,
+        LA.end_time,
+        LA.status,
+        LA.recommend,
+        LA.cover,
+        LA.cover_type,
+        LA.limit_user_num,
+        LA.activity_location,
+        LA.activity_content,
+        LA.publish,
+        LAAR.audit as auditStatus
+        FROM
+        lmk_activity LA
+        LEFT JOIN
+        (
+        SELECT
+        activity_id,
+        audit,
+        create_time
+        FROM (
+        SELECT
+        activity_id,
+        audit,
+        create_time,
+        ROW_NUMBER() OVER (PARTITION BY activity_id ORDER BY create_time DESC) AS rn
+        FROM
+        lmk_activity_audit_record
+        WHERE
+        delete_flag = 0
+        ) t
+        WHERE
+        rn = 1
+        ) LAAR ON LA.id = LAAR.activity_id
+        WHERE
+        LA.delete_flag = 0
+        <if test="query.activityName != null and query.activityName != ''">AND LA.activity_name LIKE CONCAT('%', #{query.activityName}, '%')</if>
+        <if test="query.activityType != null and query.activityType != ''">AND LA.activity_type LIKE CONCAT('%', #{query.activityType}, '%')</if>
+        <if test="query.recommend != null  and query.recommend != ''">AND LA.recommend = #{recommend}</if>
+        <if test="query.reportStartTime != null">AND LA.report_start_time >= #{query.reportStartTime}</if>
+        <if test="query.reportEndTime != null">AND LA.report_end_time &lt;= #{query.reportEndTime}</if>
+        <if test="query.memberId != null and query.memberId !=''">AND LA.member_id &lt;= #{query.memberId}</if>
+        <if test="query.audit == true" >AND LAAR.audit != 0</if>
+        <if test="query.audit == false" >AND LAAR.audit = 0</if>
+        <if test="query.memberId !=null and query.memberId !=''">And LA.member_id = #{query.memberId}</if>
+        <if test="query.storeId !=null and query.storeId !=''">And LA.store_id = #{query.storeId}</if>
+        Order by LA.create_time DESC
+    </select>
+
+
+
+
     <select id="getCanReportPage" resultMap="BaseResultMap">
         SELECT
             LA.id,
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java b/manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java
index 8ae3b7c..553f65e 100644
--- a/manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java
@@ -12,6 +12,7 @@
 import cn.lili.modules.lmk.service.ActivityAuditRecordService;
 import cn.lili.modules.lmk.service.ActivityService;
 import cn.lili.modules.lmk.service.CustomerBlackService;
+import cn.lili.utils.HtmlUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -47,25 +48,15 @@
     @PostMapping
     @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
     public Result add(@RequestBody ActivityForm form) {
-        form.setActivityContent(addVideoControls(form.getActivityContent()));
+        form.setActivityContent(HtmlUtil.addVideoControls(form.getActivityContent()));
         return activityService.add(form,true);
     }
 
-    public static String addVideoControls(String html) {
-        if (html == null || html.isEmpty()) {
-            return html;
-        }
 
-        // 鍖归厤鎵�鏈夋湭鍖呭惈 controls 灞炴�х殑 <video> 鏍囩
-        String regex = "<video\\b(?![^>]*\\bcontrols\\b)([^>]*)>";
-        String replacement = "<video controls=\"controls\"$1>";
-
-        return html.replaceAll(regex, replacement);
-    }
     @PutMapping
     @ApiOperation(value = "淇敼", notes = "淇敼")
     public Result update(@RequestBody  ActivityForm form) {
-        form.setActivityContent(addVideoControls(form.getActivityContent()));
+        form.setActivityContent(HtmlUtil.addVideoControls(form.getActivityContent()));
         return activityService.update(form,true);
     }
 
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java b/manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java
index 703546c..2cc7463 100644
--- a/manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java
@@ -9,6 +9,7 @@
 import cn.lili.modules.lmk.domain.query.ActivityQuery;
 import cn.lili.modules.lmk.domain.query.NewsQuery;
 import cn.lili.modules.lmk.service.NewsService;
+import cn.lili.utils.HtmlUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -36,12 +37,14 @@
     @PostMapping
     @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
     public Result add(@RequestBody @Validated(Add.class) NewsForm form) {
+        form.setContent(HtmlUtil.addVideoControls(form.getContent()));
         return newsService.add(form);
     }
 
     @PutMapping
     @ApiOperation(value = "淇敼", notes = "淇敼")
     public Result update(@RequestBody @Validated(Update.class) NewsForm form) {
+        form.setContent(HtmlUtil.addVideoControls(form.getContent()));
         return newsService.update(form);
     }
 
diff --git a/seller-api/src/main/java/cn/lili/controller/activity/StoreActivityController.java b/seller-api/src/main/java/cn/lili/controller/activity/StoreActivityController.java
new file mode 100644
index 0000000..ab0bd17
--- /dev/null
+++ b/seller-api/src/main/java/cn/lili/controller/activity/StoreActivityController.java
@@ -0,0 +1,66 @@
+package cn.lili.controller.activity;
+
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.ActivityForm;
+import cn.lili.modules.lmk.domain.query.ActivityQuery;
+import cn.lili.modules.lmk.service.ActivityService;
+import cn.lili.utils.HtmlUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * lmk-shop-java
+ * 鍟嗘埛绔椿鍔ㄦ帴鍙�
+ *
+ * @author : zxl
+ * @date : 2025-07-14 17:27
+ **/
+@Validated
+@RequiredArgsConstructor
+@Api(value = "鎴戠殑娲诲姩", tags = "鎴戠殑娲诲姩绠$悊")
+@RestController
+@RequestMapping("/store/lmk/activity")
+public class StoreActivityController {
+
+    private final ActivityService activityService;
+
+    @PostMapping("/add")
+    @ApiOperation(value = "鍟嗘埛绔柊澧炴椿鍔�", notes = "鍟嗘埛绔柊澧炴椿鍔�")
+    public Result addActivityByBuyer(@RequestBody ActivityForm form){
+        return activityService.add(form,false);
+    }
+
+    @GetMapping("/applyActivityPage")
+    @ApiOperation(value = "鐢ㄦ埛鐢宠娲诲姩鍒嗛〉", notes = "鐢ㄦ埛鐢宠娲诲姩鍒嗛〉")
+    public Result getMyApplyActivityPage(ActivityQuery query){
+        return activityService.getMyApplyActivityPage(query);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "淇敼", notes = "淇敼")
+    public Result update(@RequestBody  ActivityForm form) {
+        form.setActivityContent(HtmlUtil.addVideoControls(form.getActivityContent()));
+        return activityService.update(form,false);
+    }
+
+    @DeleteMapping("/{id}")
+    @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
+    public Result removeById(@PathVariable("id") String id) {
+        return activityService.removeById(id);
+    }
+
+    @DeleteMapping("/batch")
+    @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎")
+    public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) {
+        return activityService.remove(ids);
+    }
+
+
+}

--
Gitblit v1.8.0