From b3bdc131a50234de457d1a7515758b2a169ba038 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期五, 13 六月 2025 11:08:08 +0800
Subject: [PATCH] insert insert 完成大健康后台页面接口(增删改查/上架/下架)

---
 framework/src/main/java/cn/lili/modules/lmk/domain/form/HealthVideoForm.java   |   54 ++++++++++
 framework/src/main/resources/mapper/lmk/VideoMapper.xml                        |   41 ++++++++
 manager-api/src/main/java/cn/lili/controller/lmk/HealthController.java         |   44 ++++++++
 framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java             |    4 
 framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java          |   30 ++++++
 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java |   57 +++++++++++
 framework/src/main/java/cn/lili/modules/lmk/domain/query/HealthVideoQuery.java |   39 +++++++
 framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java            |    9 +
 8 files changed, 277 insertions(+), 1 deletions(-)

diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/HealthVideoForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/HealthVideoForm.java
new file mode 100644
index 0000000..d372d82
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/HealthVideoForm.java
@@ -0,0 +1,54 @@
+package cn.lili.modules.lmk.domain.form;
+
+import cn.lili.common.security.context.UserContext;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.mybatis.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * 澶у仴搴疯棰戝唴瀹�
+ *
+ * @author wp
+ * @since 2025-06-12
+ */
+@Data
+@ApiModel(value = "澶у仴搴疯棰戝唴瀹�", description = "澶у仴搴疯棰戝唴瀹�")
+public class HealthVideoForm extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 浣滆�卛d */
+    @ApiModelProperty(value = "涓婚敭id")
+    private String id;
+
+    @ApiModelProperty(value = "鍥剧墖灏侀潰")
+    /** 鍥剧墖灏侀潰 */
+    @NotBlank(message = "灏侀潰鍥剧墖涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    private String coverUrl;
+
+    @TableField("video_file_key")
+    /** 瑙嗛鍦板潃 */
+    @NotBlank(message = "瑙嗛鍦板潃涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    private String videoFileKey;
+
+
+    /** 瑙嗛闀垮害(绉�) */
+//    @NotNull(message = "瑙嗛闀垮害涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    private Long videoDuration;
+
+    /** 瑙嗛鏍囬 */
+    @NotBlank(message = "鏍囬涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    private String title;
+
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/HealthVideoQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/HealthVideoQuery.java
new file mode 100644
index 0000000..47b29b2
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/HealthVideoQuery.java
@@ -0,0 +1,39 @@
+package cn.lili.modules.lmk.domain.query;
+
+import cn.lili.base.AbsQuery;
+import cn.lili.modules.lmk.enums.general.VideoTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 瑙嗛鍐呭鏌ヨ
+ *
+ * @author xp
+ * @since 2025-05-16
+ */
+@Data
+@ApiModel(value = "骞冲彴绔疺ideo鏌ヨ鍙傛暟", description = "瑙嗛鍐呭鏌ヨ鍙傛暟")
+public class HealthVideoQuery extends AbsQuery {
+
+    @ApiModelProperty("鏍囬")
+    private String title;
+
+    @ApiModelProperty("瑙嗛鏍囩")
+    private List<String> tagList;
+
+    @ApiModelProperty("浣滆��")
+    private String authorId;
+
+    @ApiModelProperty("鐘舵��")
+    private String status;
+
+    /**
+     * @see VideoTypeEnum
+     */
+    @ApiModelProperty("瑙嗛绫诲瀷锛氳棰戙�佸ぇ鍋ュ悍銆佺鍘紝榛樿涓嶄紶鏌ヨ棰�")
+    private String videoType = VideoTypeEnum.HEALTH.getValue();
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java
index fae271e..8c217e8 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java
@@ -30,6 +30,10 @@
     @ApiModelProperty("鍥剧墖灏侀潰")
     private String coverUrl;
 
+    /** 灏侀潰鏄剧ず鍦板潃 */
+    @ApiModelProperty("灏侀潰鏄剧ず鍦板潃")
+    private String coverShowUrl;
+
     /** 瑙嗛鍦板潃 */
     @ApiModelProperty("瑙嗛鍦板潃")
     private String videoFileKey;
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java
index 4b2675f..19e10ae 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java
@@ -2,6 +2,7 @@
 
 import cn.lili.modules.lmk.domain.entity.Video;
 import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
+import cn.lili.modules.lmk.domain.query.HealthVideoQuery;
 import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
 import cn.lili.modules.lmk.domain.query.VideoQuery;
 import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO;
@@ -112,4 +113,12 @@
      * @return
      */
     WxEditVideoVO wxDetail(@Param("id") String id);
+
+    /**
+     * 澶у仴搴疯棰戝垎椤�
+     *
+     * @param page
+     * @param query
+     */
+    IPage healthPage(IPage page, @Param("query") HealthVideoQuery query);
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java b/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
index 0a4b93d..8e600ac 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
@@ -3,6 +3,7 @@
 import cn.lili.modules.lmk.domain.entity.Video;
 import cn.lili.modules.lmk.domain.form.*;
 import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
+import cn.lili.modules.lmk.domain.query.HealthVideoQuery;
 import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
 import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -183,4 +184,33 @@
      * @return
      */
     Result wxDetail(String id);
+
+    /**
+     * 澶у仴搴疯棰戝彂甯�
+     *
+     * @param form
+     * @return
+     */
+    Result healthVideo(HealthVideoForm form);
+    /**
+     * 淇敼澶у仴搴疯棰�
+     *
+     * @param form
+     * @return
+     */
+    Result updateHealthVideo(HealthVideoForm form);
+    /**
+     * 澶у仴搴疯棰戝垪琛�
+     *
+     * @param query
+     * @return
+     */
+    Result healthPage(HealthVideoQuery query);
+    /**
+     * 鍒犻櫎澶у仴搴疯棰�
+
+     * @param id 涓婚敭id
+     * @return
+     */
+    Result delHealth(String id);
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
index a9875df..c2b7097 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
@@ -4,6 +4,7 @@
 import cn.lili.modules.lmk.domain.entity.*;
 import cn.lili.modules.lmk.domain.form.*;
 import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
+import cn.lili.modules.lmk.domain.query.HealthVideoQuery;
 import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
 import cn.lili.modules.lmk.domain.vo.*;
 import cn.lili.modules.lmk.enums.general.*;
@@ -413,4 +414,60 @@
         vo.setTags(tags);
         return Result.ok().data(vo);
     }
+
+    @Override
+    public Result healthVideo(HealthVideoForm form) {
+        Video video = new Video();
+        BeanUtils.copyProperties(form, video);
+        video.setAuthorId(UserContext.getCurrentUserId());
+        video.setVideoType(VideoTypeEnum.HEALTH.getValue());
+        //璁剧疆濉厖妯″紡 淇濇寔姣斾緥锛屽畬鏁存樉绀�
+        video.setVideoFit("contain");
+        video.setVideoContentType(VideoContentTypeEnum.VIDEO.getValue());
+        video.setStatus(VideoStatusEnum.PUBLISHED.getValue());
+        baseMapper.insert(video);
+        return Result.ok("娣诲姞鎴愬姛");
+    }
+
+    @Override
+    public Result healthPage(HealthVideoQuery query) {
+        IPage<VideoVO> page = PageUtil.getPage(query, VideoVO.class);
+        // 1. 鍏堟煡鍑鸿棰戜俊鎭�
+        baseMapper.healthPage(page, query);
+        // 2. 鍗曠嫭鏌ュ嚭鏍囩淇℃伅
+        if (page.getTotal() > 0) {
+            Map<String, List<SimpleVideoTagVO>> tagMap = videoTagRefService.getTagsByVideoIds(
+                    page.getRecords().stream().map(VideoVO::getId).collect(Collectors.toList())
+            ).stream().collect(Collectors.groupingBy(SimpleVideoTagVO::getVideoId));;
+            // 3. 鑾峰彇瑙嗛涓存椂璁块棶鍦板潃銆佽缃棰戞爣绛�
+            page.getRecords().forEach(v -> {
+                v.setTagList(tagMap.get(v.getId()));
+                v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
+                v.setCoverShowUrl(cosUtil.getPreviewUrl(v.getCoverUrl()));
+            });
+        }
+        return Result.ok().data(page.getRecords()).total(page.getTotal());
+    }
+
+    @Override
+    public Result updateHealthVideo(HealthVideoForm form) {
+        Video entity = baseMapper.selectById(form.getId());
+        Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+        BeanUtils.copyProperties(form, entity);
+        baseMapper.updateById(entity);
+        return Result.ok("淇敼鎴愬姛");
+    }
+
+    @Override
+    public Result delHealth(String id) {
+        Video entity = baseMapper.selectById(id);
+        Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+        String videoType = entity.getVideoType();
+        if (!VideoTypeEnum.HEALTH.getValue().equals(videoType)) {
+            log.error("鍒犻櫎闈炲ぇ鍋ュ悍瑙嗛瑙嗛id涓�------->"+id);
+            return Result.error("鍒犻櫎澶辫触");
+        }
+        baseMapper.deleteById(id);
+        return Result.ok("鍒犻櫎鎴愬姛");
+    }
 }
diff --git a/framework/src/main/resources/mapper/lmk/VideoMapper.xml b/framework/src/main/resources/mapper/lmk/VideoMapper.xml
index c9ae243..8a3e44e 100644
--- a/framework/src/main/resources/mapper/lmk/VideoMapper.xml
+++ b/framework/src/main/resources/mapper/lmk/VideoMapper.xml
@@ -350,5 +350,44 @@
         WHERE
             LV.delete_flag = 0 AND LV.id = #{id}
     </select>
-
+    <select id="healthPage" resultMap="BaseResultMap">
+        SELECT
+        LV.author_id,
+        LV.cover_url,
+        LV.video_fit,
+        LV.video_duration,
+        LV.video_file_key,
+        LV.title,
+        LV.goods_view_num,
+        LV.goods_order_num,
+        LV.recommend,
+        LV.status,
+        LV.play_num,
+        LV.collect_num,
+        LV.comment_num,
+        LV.weight,
+        LV.audit_pass_time,
+        LV.update_time,
+        LV.video_content_type,
+        LV.video_type,
+        LV.video_imgs,
+        LV.id,
+        LM.nick_name as authorName
+        FROM
+        lmk_video LV
+        LEFT JOIN li_member LM ON LV.author_id = LM.id
+        <if test="query.tagList != null and query.tagList.size > 0">
+            INNER JOIN (
+            SELECT DISTINCT video_id
+            FROM lmk_video_tag_ref
+            WHERE video_tag_id IN
+            <foreach collection="query.tagList" open="(" item="tagId" close=")" separator=",">#{tagId}</foreach>
+            ) AS LVT ON LV.id = LVT.video_id
+        </if>
+        WHERE
+        LV.delete_flag = 0 AND LV.video_type = #{query.videoType}
+        <if test="query.title != null and query.title != ''">AND LV.title LIKE CONCAT('%', #{query.title}, '%')</if>
+        <if test="query.authorId != null and query.authorId != ''">AND LV.author_id = #{query.authorId}</if>
+        <if test="query.status != null and query.status != ''">AND LV.status = #{query.status}</if>
+    </select>
 </mapper>
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/HealthController.java b/manager-api/src/main/java/cn/lili/controller/lmk/HealthController.java
new file mode 100644
index 0000000..f983a29
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/HealthController.java
@@ -0,0 +1,44 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.base.Result;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.modules.lmk.domain.form.HealthVideoForm;
+import cn.lili.modules.lmk.domain.query.HealthVideoQuery;
+import cn.lili.modules.lmk.service.VideoService;
+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.*;
+
+@Validated
+@RequiredArgsConstructor
+@Api(value = "澶у仴搴�", tags = "澶у仴搴�")
+@RestController
+@RequestMapping("/manager/lkm/health")
+public class HealthController {
+    private final VideoService videoService;
+
+    @PostMapping("/healthVideo")
+    @ApiOperation(value = "澶у仴搴疯棰戝彂甯�", notes = "澶у仴搴疯棰戝彂甯�")
+    public Result healthVideo(@RequestBody @Validated(Add.class) HealthVideoForm form) {
+        return videoService.healthVideo(form);
+    }
+    @PostMapping("/updateHealthVideo")
+    @ApiOperation(value = "澶у仴搴疯棰戝彂甯�", notes = "澶у仴搴疯棰戝彂甯�")
+    public Result updateHealthVideo(@RequestBody @Validated(Update.class) HealthVideoForm form) {
+        return videoService.updateHealthVideo(form);
+    }
+    @PostMapping("/page")
+    @ApiOperation(value = "澶у仴搴疯棰戝垪琛�", notes = "澶у仴搴疯棰戝垪琛�")
+    public Result page(@RequestBody HealthVideoQuery query) {
+        return videoService.healthPage(query);
+    }
+    //鍒犻櫎澶у帹绁炶棰�
+    @PostMapping("/del/{id}")
+    @ApiOperation(value = "鍒犻櫎澶у帹绁炶棰�", notes = "鍒犻櫎澶у帹绁炶棰�")
+    public Result delHealth(@PathVariable("id") String id) {
+        return videoService.delHealth(id);
+    }
+}

--
Gitblit v1.8.0