From 0d9214d780c5093165f566f3e6f0c60f5d8aead7 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 22 五月 2025 11:28:46 +0800
Subject: [PATCH] 视频管理功能

---
 framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoAuditRecordVO.java             |   43 +++
 framework/src/main/java/cn/lili/modules/lmk/domain/form/FileKey.java                      |   14 +
 framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoVO.java                        |   12 
 framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoAuditingForm.java            |   29 ++
 framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoAuditRecord.java           |   34 ++
 framework/src/main/java/cn/lili/modules/lmk/mapper/VideoAuditRecordMapper.java            |   24 +
 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java            |  100 +++++++
 framework/src/main/java/cn/lili/config/CorsConfig.java                                    |   25 +
 framework/src/main/resources/mapper/lmk/VideoTagRefMapper.xml                             |   12 
 framework/src/main/java/cn/lili/modules/lmk/domain/entity/Video.java                      |    4 
 framework/src/main/resources/mapper/lmk/VideoMapper.xml                                   |   56 +++
 framework/src/main/java/cn/lili/mybatis/mybatisplus/MyMetaObjectHandler.java              |   12 
 framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoRecommendForm.java           |   26 ++
 manager-api/src/main/java/cn/lili/controller/lmk/VideoController.java                     |   36 ++
 framework/src/main/java/cn/lili/modules/lmk/service/VideoTagService.java                  |    3 
 framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java                     |   46 +++
 framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java                       |   10 
 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagRefServiceImpl.java      |    8 
 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoAuditRecordServiceImpl.java |   23 +
 framework/src/main/java/cn/lili/modules/lmk/mapper/VideoTagRefMapper.java                 |    6 
 framework/src/main/java/cn/lili/modules/lmk/service/VideoAuditRecordService.java          |   15 +
 manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java                  |    4 
 framework/src/main/java/cn/lili/modules/lmk/domain/query/ManagerVideoQuery.java           |   33 ++
 framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoStatusEnum.java            |    2 
 framework/src/main/resources/mapper/lmk/VideoAuditRecordMapper.xml                        |   44 +++
 framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoDownForm.java                |   26 ++
 framework/src/main/java/cn/lili/modules/lmk/service/VideoTagRefService.java               |   11 
 common-api/src/main/java/cn/lili/controller/lmk/LmkFileController.java                    |   19 
 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java         |   19 +
 framework/src/main/java/cn/lili/modules/lmk/domain/vo/SimpleVideoTagVO.java               |   40 +++
 30 files changed, 691 insertions(+), 45 deletions(-)

diff --git a/common-api/src/main/java/cn/lili/controller/lmk/LmkFileController.java b/common-api/src/main/java/cn/lili/controller/lmk/LmkFileController.java
index 5dc9c51..501a4ea 100644
--- a/common-api/src/main/java/cn/lili/controller/lmk/LmkFileController.java
+++ b/common-api/src/main/java/cn/lili/controller/lmk/LmkFileController.java
@@ -1,6 +1,7 @@
 package cn.lili.controller.lmk;
 
 import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.form.FileKey;
 import cn.lili.modules.lmk.service.LmkFileService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -61,10 +62,10 @@
      * @param fileKey oss鏂囦欢鍚�
      * @return
      */
-    @Delete("/delete/{file_key}")
+    @Delete("/delete}")
     @ApiOperation(value = "鍒犻櫎鏌愪釜鏂囦欢")
-    public Result deleteObject(@PathVariable(value = "file_key") String fileKey) {
-        return lmkFileService.deleteObject(fileKey);
+    public Result deleteObject(@RequestBody FileKey fileKey) {
+        return lmkFileService.deleteObject(fileKey.getFileKey());
     }
 
     /**
@@ -85,10 +86,10 @@
      * @param fileKey
      * @return
      */
-    @GetMapping("/download/{file_key}")
+    @PostMapping("/download")
     @ApiOperation(value = "涓嬭浇鏂囦欢")
-    public void downloadFile(@PathVariable(value = "file_key") String fileKey, HttpServletResponse response) {
-        lmkFileService.downloadObject(fileKey, response);
+    public void downloadFile(@RequestBody FileKey fileKey, HttpServletResponse response) {
+        lmkFileService.downloadObject(fileKey.getFileKey(), response);
     }
 
     /**
@@ -97,10 +98,10 @@
      * @param fileKey
      * @return
      */
-    @GetMapping("/preview/{file_key}")
+    @PostMapping("/preview")
     @ApiOperation(value = "鑾峰彇鏂囦欢棰勮url(閾炬帴瀛樺湪鏃舵晥)")
-    public Result getPreviewUrl(@PathVariable(value = "file_key") String fileKey) {
-        return Result.ok().data(lmkFileService.getPreviewUrl(fileKey));
+    public Result getPreviewUrl(@RequestBody FileKey fileKey) {
+        return Result.ok().data(lmkFileService.getPreviewUrl(fileKey.getFileKey()));
     }
 
 
diff --git a/framework/src/main/java/cn/lili/config/CorsConfig.java b/framework/src/main/java/cn/lili/config/CorsConfig.java
new file mode 100644
index 0000000..04788ed
--- /dev/null
+++ b/framework/src/main/java/cn/lili/config/CorsConfig.java
@@ -0,0 +1,25 @@
+package cn.lili.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * 璺ㄥ煙閰嶇疆
+ *
+ * @author 29443
+ * @date 2022/4/16
+ */
+@Configuration
+public class CorsConfig implements WebMvcConfigurer {
+
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+
+        registry.addMapping("/**")
+                .allowedHeaders("*")
+                .allowedMethods("POST", "GET", "PUT", "DELETE")
+                .allowedOriginPatterns("*");
+    }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Video.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Video.java
index 6d6bb46..5956199 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Video.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Video.java
@@ -5,6 +5,8 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.Date;
+
 import lombok.Data;
 
 /**
@@ -77,7 +79,7 @@
 
     @TableField("audit_pass_time")
     /** 瀹℃牳閫氳繃鏃堕棿 */
-    private LocalDateTime auditPassTime;
+    private Date auditPassTime;
 
 
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoAuditRecord.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoAuditRecord.java
new file mode 100644
index 0000000..42a3ae8
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoAuditRecord.java
@@ -0,0 +1,34 @@
+package cn.lili.modules.lmk.domain.entity;
+
+import cn.lili.mybatis.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ * 瑙嗛瀹℃牳璁板綍
+ *
+ * @author xp
+ * @since 2025-05-22
+ */
+@Data
+@TableName("lmk_video_audit_record")
+public class VideoAuditRecord extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableField("video_id")
+    /** 瑙嗛id */
+    private String videoId;
+
+    @TableField("audit_success")
+    /** 瀹℃牳鏄惁閫氳繃 */
+    private Boolean auditSuccess;
+
+    @TableField("edit_suggestion")
+    /** 淇敼寤鸿(椹冲洖) */
+    private String editSuggestion;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileKey.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileKey.java
new file mode 100644
index 0000000..6b344d8
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileKey.java
@@ -0,0 +1,14 @@
+package cn.lili.modules.lmk.domain.form;
+
+import lombok.Data;
+
+/**
+ * @author锛歺p
+ * @date锛�2025/5/21 14:03
+ */
+@Data
+public class FileKey {
+
+    private String fileKey;
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoAuditingForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoAuditingForm.java
new file mode 100644
index 0000000..a8ec2aa
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoAuditingForm.java
@@ -0,0 +1,29 @@
+package cn.lili.modules.lmk.domain.form;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author锛歺p
+ * @date锛�2025/5/21 15:45
+ */
+@Data
+@ApiModel("瑙嗛瀹℃牳")
+public class VideoAuditingForm {
+
+    @NotBlank(message = "瑙嗛涓嶈兘涓虹┖")
+    @ApiModelProperty("瑙嗛id")
+    private String id;
+
+    @NotNull(message = "瀹℃牳缁撴灉涓嶈兘涓虹┖")
+    @ApiModelProperty("瀹℃牳缁撴灉")
+    private Boolean result;
+
+    @ApiModelProperty("瀹℃牳涓嶉�氳繃鍘熷洜")
+    private String reason;
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoDownForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoDownForm.java
new file mode 100644
index 0000000..7363ceb
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoDownForm.java
@@ -0,0 +1,26 @@
+package cn.lili.modules.lmk.domain.form;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author锛歺p
+ * @date锛�2025/5/21 15:45
+ */
+@Data
+@ApiModel("瑙嗛涓嬫灦")
+public class VideoDownForm {
+
+    @NotBlank(message = "瑙嗛涓嶈兘涓虹┖")
+    @ApiModelProperty("瑙嗛id")
+    private String id;
+
+    @NotBlank(message = "涓嬫灦鍘熷洜涓嶈兘涓虹┖")
+    @ApiModelProperty("涓嬫灦鍘熷洜")
+    private String reason;
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoRecommendForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoRecommendForm.java
new file mode 100644
index 0000000..1f5e771
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoRecommendForm.java
@@ -0,0 +1,26 @@
+package cn.lili.modules.lmk.domain.form;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author锛歺p
+ * @date锛�2025/5/21 15:45
+ */
+@Data
+@ApiModel("瑙嗛棣栭〉鎺ㄨ崘璁剧疆")
+public class VideoRecommendForm {
+
+    @NotBlank(message = "瑙嗛涓嶈兘涓虹┖")
+    @ApiModelProperty("瑙嗛id")
+    private String id;
+
+    @NotNull(message = "棣栭〉鎺ㄨ崘涓嶈兘涓虹┖")
+    @ApiModelProperty("鎺ㄨ崘涓庡惁")
+    private Boolean recommend;
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/ManagerVideoQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ManagerVideoQuery.java
new file mode 100644
index 0000000..09a5b83
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ManagerVideoQuery.java
@@ -0,0 +1,33 @@
+package cn.lili.modules.lmk.domain.query;
+
+import cn.lili.base.AbsQuery;
+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 ManagerVideoQuery extends AbsQuery {
+
+    @ApiModelProperty("鏍囬")
+    private String title;
+
+    @ApiModelProperty("瑙嗛鏍囩")
+    private List<String> tagList;
+
+    @ApiModelProperty("浣滆��")
+    private String authorId;
+
+    @ApiModelProperty("鐘舵��")
+    private String status;
+
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/SimpleVideoTagVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/SimpleVideoTagVO.java
new file mode 100644
index 0000000..87c6671
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/SimpleVideoTagVO.java
@@ -0,0 +1,40 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.VideoTag;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+/**
+ * 瑙嗛鏍囩灞曠ず
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Data
+@ApiModel(value = "瑙嗛鏍囩鍝嶅簲鏁版嵁", description = "瑙嗛鏍囩鍝嶅簲鏁版嵁")
+public class SimpleVideoTagVO {
+
+    @ApiModelProperty("鏍囩id")
+    private String id;
+
+    /** 鏍囩鍚嶇О */
+    @ApiModelProperty("鏍囩鍚嶇О")
+    private String tagName;
+
+    @ApiModelProperty(hidden = true)
+    private String videoId;
+
+
+    public static SimpleVideoTagVO getVoByEntity(@NonNull VideoTag entity, SimpleVideoTagVO vo) {
+        if(vo == null) {
+            vo = new SimpleVideoTagVO();
+        }
+        BeanUtils.copyProperties(entity, vo);
+        return vo;
+    }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoAuditRecordVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoAuditRecordVO.java
new file mode 100644
index 0000000..9d827fc
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoAuditRecordVO.java
@@ -0,0 +1,43 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.VideoAuditRecord;
+import java.util.List;
+import org.springframework.lang.NonNull;
+import org.springframework.beans.BeanUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * 瑙嗛瀹℃牳璁板綍灞曠ず
+ *
+ * @author xp
+ * @since 2025-05-22
+ */
+@Data
+@ApiModel(value = "瑙嗛瀹℃牳璁板綍鍝嶅簲鏁版嵁", description = "瑙嗛瀹℃牳璁板綍鍝嶅簲鏁版嵁")
+public class VideoAuditRecordVO extends AbsVo {
+
+    /** 瑙嗛id */
+    @ApiModelProperty("瑙嗛id")
+    private String videoId;
+
+    /** 瀹℃牳鏄惁閫氳繃 */
+    @ApiModelProperty("瀹℃牳鏄惁閫氳繃")
+    private Boolean auditSuccess;
+
+    /** 淇敼寤鸿(椹冲洖) */
+    @ApiModelProperty("淇敼寤鸿(椹冲洖)")
+    private String editSuggestion;
+
+    public static VideoAuditRecordVO getVoByEntity(@NonNull VideoAuditRecord entity, VideoAuditRecordVO vo) {
+        if(vo == null) {
+            vo = new VideoAuditRecordVO();
+        }
+        BeanUtils.copyProperties(entity, vo);
+        return vo;
+    }
+
+}
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 77801db..8f82ae3 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
@@ -2,13 +2,14 @@
 
 import cn.lili.base.AbsVo;
 import cn.lili.modules.lmk.domain.entity.Video;
-import java.util.List;
-import org.springframework.lang.NonNull;
-import org.springframework.beans.BeanUtils;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
 import java.util.Date;
+import java.util.List;
 
 /**
  * 瑙嗛鍐呭灞曠ず
@@ -23,6 +24,7 @@
     /** 浣滆�卛d */
     @ApiModelProperty("浣滆�卛d")
     private String authorId;
+    private String authorName;
 
     /** 鍥剧墖灏侀潰 */
     @ApiModelProperty("鍥剧墖灏侀潰")
@@ -31,6 +33,10 @@
     /** 瑙嗛鍦板潃 */
     @ApiModelProperty("瑙嗛鍦板潃")
     private String videoFileKey;
+    private String videoUrl;
+
+    @ApiModelProperty("瑙嗛鏍囩")
+    private List<SimpleVideoTagVO> tagList;
 
     /** 瑙嗛濉厖妯″紡 */
     @ApiModelProperty("瑙嗛濉厖妯″紡")
diff --git a/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoStatusEnum.java b/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoStatusEnum.java
index 054913a..855cf1b 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoStatusEnum.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoStatusEnum.java
@@ -12,7 +12,7 @@
 @Getter
 public enum VideoStatusEnum {
 
-    AUDITING("99", "瀹℃牳涓�"),
+    AUDITING("99", "寰呭鏍�"),
     PUBLISHED("1", "宸插彂甯�"),
     DISABLE("0", "宸蹭笅鏋�"),
     REJECT("-1", "瀹℃牳鏈�氳繃"),
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoAuditRecordMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoAuditRecordMapper.java
new file mode 100644
index 0000000..98f6954
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoAuditRecordMapper.java
@@ -0,0 +1,24 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.VideoAuditRecord;
+import cn.lili.modules.lmk.domain.vo.VideoAuditRecordVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 瑙嗛瀹℃牳璁板綍 Mapper 鎺ュ彛
+ *
+ * @author xp
+ * @since 2025-05-22
+ */
+@Mapper
+public interface VideoAuditRecordMapper extends BaseMapper<VideoAuditRecord> {
+
+    /**
+     * id鏌ユ壘瑙嗛瀹℃牳璁板綍
+     * @param id
+     * @return
+     */
+    VideoAuditRecordVO getById(Integer id);
+
+}
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 33a8bd5..e49d338 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
@@ -1,6 +1,7 @@
 package cn.lili.modules.lmk.mapper;
 
 import cn.lili.modules.lmk.domain.entity.Video;
+import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import cn.lili.modules.lmk.domain.vo.VideoVO;
@@ -24,11 +25,18 @@
      * @param id
      * @return
      */
-    VideoVO getById(Integer id);
+    VideoVO getById(String id);
 
     /**
     *  鍒嗛〉
     */
     IPage getPage(IPage page, @Param("query") VideoQuery query);
 
+    /**
+     * 绠$悊绔垎椤�
+     *
+     * @param page
+     * @param query
+     */
+    IPage managerPage(IPage page, @Param("query") ManagerVideoQuery query);
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoTagRefMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoTagRefMapper.java
index 7548bf6..a1aa583 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoTagRefMapper.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoTagRefMapper.java
@@ -1,8 +1,13 @@
 package cn.lili.modules.lmk.mapper;
 
 import cn.lili.modules.lmk.domain.entity.VideoTagRef;
+import cn.lili.modules.lmk.domain.vo.SimpleVideoTagVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 瑙嗛鏍囩涓棿琛� Mapper 鎺ュ彛
@@ -14,4 +19,5 @@
 public interface VideoTagRefMapper extends BaseMapper<VideoTagRef> {
 
 
+    List<SimpleVideoTagVO> getTagsByVideoIds(@Param("videoIds") List<String> videoIds);
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/VideoAuditRecordService.java b/framework/src/main/java/cn/lili/modules/lmk/service/VideoAuditRecordService.java
new file mode 100644
index 0000000..c9737fb
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/VideoAuditRecordService.java
@@ -0,0 +1,15 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.VideoAuditRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 瑙嗛瀹℃牳璁板綍 鏈嶅姟绫�
+ *
+ * @author xp
+ * @since 2025-05-22
+ */
+public interface VideoAuditRecordService extends IService<VideoAuditRecord> {
+
+
+}
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 583109b..1464d39 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
@@ -1,6 +1,10 @@
 package cn.lili.modules.lmk.service;
 
 import cn.lili.modules.lmk.domain.entity.Video;
+import cn.lili.modules.lmk.domain.form.VideoAuditingForm;
+import cn.lili.modules.lmk.domain.form.VideoDownForm;
+import cn.lili.modules.lmk.domain.form.VideoRecommendForm;
+import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
 import com.baomidou.mybatisplus.extension.service.IService;
 import cn.lili.base.Result;
 import cn.lili.modules.lmk.domain.form.VideoForm;
@@ -55,7 +59,7 @@
      * @param id
      * @return
      */
-    Result detail(Integer id);
+    Result detail(String id);
 
     /**
      * 鍒楄〃
@@ -70,4 +74,44 @@
      * @return
      */
     Result publish(VideoForm form);
+
+    /**
+     * 骞冲彴绔棰戝垎椤�
+     *
+     * @param query
+     * @return
+     */
+    Result managerPage(ManagerVideoQuery query);
+
+    /**
+     * 棣栭〉鎺ㄨ崘璁剧疆
+     *
+     * @param form
+     * @return
+     */
+    Result recommendSet(VideoRecommendForm form);
+
+    /**
+     * 瀹℃牳
+     *
+     * @param form
+     * @return
+     */
+    Result auditing(VideoAuditingForm form);
+
+    /**
+     * 涓婃灦
+     *
+     * @param id
+     * @return
+     */
+    Result up(String id);
+
+    /**
+     * 涓嬫灦
+     *
+     * @param form
+     * @return
+     */
+    Result down(VideoDownForm form);
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/VideoTagRefService.java b/framework/src/main/java/cn/lili/modules/lmk/service/VideoTagRefService.java
index a07e767..0a4f6bb 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/VideoTagRefService.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/VideoTagRefService.java
@@ -1,7 +1,11 @@
 package cn.lili.modules.lmk.service;
 
 import cn.lili.modules.lmk.domain.entity.VideoTagRef;
+import cn.lili.modules.lmk.domain.vo.SimpleVideoTagVO;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 瑙嗛鏍囩涓棿琛� 鏈嶅姟绫�
@@ -11,5 +15,12 @@
  */
 public interface VideoTagRefService extends IService<VideoTagRef> {
 
+    /**
+     * 鏌ュ嚭杩欎簺瑙嗛鎵�鏈夌殑鏍囩
+     *
+     * @param videoIds
+     * @return
+     */
+    List<SimpleVideoTagVO> getTagsByVideoIds(List<String> videoIds);
 
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/VideoTagService.java b/framework/src/main/java/cn/lili/modules/lmk/service/VideoTagService.java
index 0395373..fd5dc6b 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/VideoTagService.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/VideoTagService.java
@@ -61,8 +61,9 @@
     /**
      * 鍒楄〃
      * @return
+     * @param tagName
      */
-    Result all();
+    Result all(String tagName);
 
     /**
      * 鎺ㄨ崘鏍囩
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoAuditRecordServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoAuditRecordServiceImpl.java
new file mode 100644
index 0000000..dd6c353
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoAuditRecordServiceImpl.java
@@ -0,0 +1,23 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.modules.lmk.domain.entity.VideoAuditRecord;
+import cn.lili.modules.lmk.mapper.VideoAuditRecordMapper;
+import cn.lili.modules.lmk.service.VideoAuditRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 瑙嗛瀹℃牳璁板綍 鏈嶅姟瀹炵幇绫�
+ *
+ * @author xp
+ * @since 2025-05-22
+ */
+@Service
+@RequiredArgsConstructor
+public class VideoAuditRecordServiceImpl extends ServiceImpl<VideoAuditRecordMapper, VideoAuditRecord> implements VideoAuditRecordService {
+
+    private final VideoAuditRecordMapper videoAuditRecordMapper;
+
+
+}
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 f2f75a8..b6a53a8 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
@@ -1,20 +1,24 @@
 package cn.lili.modules.lmk.service.impl;
 
 import cn.lili.common.security.context.UserContext;
-import cn.lili.modules.lmk.domain.entity.LmkFile;
+import cn.lili.modules.lmk.domain.entity.VideoAuditRecord;
 import cn.lili.modules.lmk.domain.entity.VideoTag;
 import cn.lili.modules.lmk.domain.entity.VideoTagRef;
+import cn.lili.modules.lmk.domain.form.VideoAuditingForm;
+import cn.lili.modules.lmk.domain.form.VideoDownForm;
+import cn.lili.modules.lmk.domain.form.VideoRecommendForm;
+import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
+import cn.lili.modules.lmk.domain.vo.SimpleVideoTagVO;
 import cn.lili.modules.lmk.enums.general.TagCreateTypeEnum;
 import cn.lili.modules.lmk.enums.general.VideoStatusEnum;
-import cn.lili.modules.lmk.service.LmkFileService;
-import cn.lili.modules.lmk.service.VideoTagRefService;
-import cn.lili.modules.lmk.service.VideoTagService;
+import cn.lili.modules.lmk.service.*;
+import cn.lili.utils.COSUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import cn.lili.modules.lmk.domain.entity.Video;
 import cn.lili.modules.lmk.mapper.VideoMapper;
-import cn.lili.modules.lmk.service.VideoService;
 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.VideoForm;
 import cn.lili.modules.lmk.domain.vo.VideoVO;
@@ -27,8 +31,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -45,6 +48,8 @@
     private final VideoTagService videoTagService;
     private final VideoTagRefService videoTagRefService;
     private final LmkFileService lmkFileService;
+    private final VideoAuditRecordService videoAuditRecordService;
+    private final COSUtil cosUtil;
 
     /**
      * 娣诲姞
@@ -114,9 +119,12 @@
      * @return
      */
     @Override
-    public Result detail(Integer id) {
+    public Result detail(String id) {
         VideoVO vo = baseMapper.getById(id);
         Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+        List<SimpleVideoTagVO> tags = videoTagRefService.getTagsByVideoIds(Arrays.asList(id));
+        vo.setTagList(tags);
+        vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey()));
         return Result.ok().data(vo);
     }
 
@@ -168,4 +176,80 @@
         lmkFileService.addByForm(form.getFileInfo());
         return Result.ok("鍙戝竷鎴愬姛锛岃棰戝鏍镐腑~");
     }
+
+
+    @Override
+    public Result managerPage(ManagerVideoQuery query) {
+        IPage<VideoVO> page = PageUtil.getPage(query, VideoVO.class);
+        // 1. 鍏堟煡鍑鸿棰戜俊鎭�
+        baseMapper.managerPage(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()));
+            });
+        }
+        return Result.ok().data(page.getRecords()).total(page.getTotal());
+    }
+
+    @Override
+    public Result recommendSet(VideoRecommendForm form) {
+        new LambdaUpdateChainWrapper<>(baseMapper)
+                .eq(Video::getId, form.getId())
+                .set(Video::getRecommend, form.getRecommend())
+                .update();
+        return Result.ok("璁剧疆鎴愬姛");
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result auditing(VideoAuditingForm form) {
+        Video video = baseMapper.selectById(form.getId());
+        if (Objects.isNull(video)) {
+            throw new RuntimeException("瑙嗛涓嶅瓨鍦�");
+        }
+        // 1. 娣诲姞瀹℃牳璁板綍
+        VideoAuditRecord auditRecord = new VideoAuditRecord();
+        auditRecord.setVideoId(form.getId());
+        auditRecord.setAuditSuccess(form.getResult());
+        if (!form.getResult()) {
+            auditRecord.setEditSuggestion(form.getReason());
+        }
+        videoAuditRecordService.save(auditRecord);
+        // 2. 淇敼瑙嗛鐘舵��
+        if (form.getResult()) {
+            video.setStatus(VideoStatusEnum.PUBLISHED.getValue());
+            video.setAuditPassTime(new Date());
+        } else {
+            video.setStatus(VideoStatusEnum.REJECT.getValue());
+        }
+        baseMapper.updateById(video);
+        return Result.ok();
+    }
+
+
+    @Override
+    public Result up(String id) {
+        new LambdaUpdateChainWrapper<>(baseMapper)
+                .eq(Video::getId, id)
+                .set(Video::getStatus, VideoStatusEnum.PUBLISHED.getValue())
+                .update();
+        return Result.ok("涓婃灦鎴愬姛");
+    }
+
+
+    @Override
+    public Result down(VideoDownForm form) {
+        new LambdaUpdateChainWrapper<>(baseMapper)
+                .eq(Video::getId, form.getId())
+                .set(Video::getStatus, VideoStatusEnum.DISABLE.getValue())
+                .update();
+        // TODO 灏嗕笅鏋跺師鍥犱互閫氱煡鐨勬柟寮忓憡鐭ョ敤鎴�
+        return Result.ok("涓嬫灦鎴愬姛");
+    }
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagRefServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagRefServiceImpl.java
index b727397..9ea83e2 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagRefServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagRefServiceImpl.java
@@ -1,11 +1,15 @@
 package cn.lili.modules.lmk.service.impl;
 
 import cn.lili.modules.lmk.domain.entity.VideoTagRef;
+import cn.lili.modules.lmk.domain.vo.SimpleVideoTagVO;
 import cn.lili.modules.lmk.mapper.VideoTagRefMapper;
 import cn.lili.modules.lmk.service.VideoTagRefService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 瑙嗛鏍囩涓棿琛� 鏈嶅姟瀹炵幇绫�
@@ -20,4 +24,8 @@
     private final VideoTagRefMapper videoTagRefMapper;
 
 
+    @Override
+    public List<SimpleVideoTagVO> getTagsByVideoIds(List<String> videoIds) {
+        return baseMapper.getTagsByVideoIds(videoIds);
+    }
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java
index baa1946..85474dd 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java
@@ -1,6 +1,7 @@
 package cn.lili.modules.lmk.service.impl;
 
 import cn.lili.modules.lmk.domain.query.WxVideoTagQuery;
+import cn.lili.modules.lmk.domain.vo.SimpleVideoTagVO;
 import cn.lili.modules.lmk.enums.general.TagCreateTypeEnum;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import cn.lili.modules.lmk.domain.entity.VideoTag;
@@ -12,6 +13,7 @@
 import cn.lili.modules.lmk.domain.form.VideoTagForm;
 import cn.lili.modules.lmk.domain.vo.VideoTagVO;
 import cn.lili.modules.lmk.domain.query.VideoTagQuery;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import lombok.RequiredArgsConstructor;
 import cn.lili.utils.PageUtil;
@@ -115,12 +117,21 @@
     /**
      * 鍒楄〃
      * @return
+     * @param tagName
      */
     @Override
-    public Result all() {
-        List<VideoTag> entities = baseMapper.selectList(null);
-        List<VideoTagVO> vos = entities.stream()
-                .map(entity -> VideoTagVO.getVoByEntity(entity, null))
+    public Result all(String tagName) {
+        List<VideoTag> entities = new LambdaQueryChainWrapper<>(baseMapper)
+                .select(VideoTag::getId, VideoTag::getTagName)
+                .like(StringUtils.isNotBlank(tagName), VideoTag::getTagName, tagName)
+                .orderByDesc(VideoTag::getUseNum)
+                .list();
+        List<SimpleVideoTagVO> vos = entities.stream()
+                .map(entity -> {
+                    SimpleVideoTagVO vo = new SimpleVideoTagVO();
+                    BeanUtils.copyProperties(entity, vo);
+                    return vo;
+                })
                 .collect(Collectors.toList());
         return Result.ok().data(vos);
     }
diff --git a/framework/src/main/java/cn/lili/mybatis/mybatisplus/MyMetaObjectHandler.java b/framework/src/main/java/cn/lili/mybatis/mybatisplus/MyMetaObjectHandler.java
index a273f8e..63783c3 100644
--- a/framework/src/main/java/cn/lili/mybatis/mybatisplus/MyMetaObjectHandler.java
+++ b/framework/src/main/java/cn/lili/mybatis/mybatisplus/MyMetaObjectHandler.java
@@ -22,13 +22,19 @@
         AuthUser authUser = UserContext.getCurrentUser();
         if (authUser != null) {
             this.setFieldValByName("createBy", authUser.getUsername(), metaObject);
+            this.setFieldValByName("updateBy", authUser.getUsername(), metaObject);
         } else {
 
             this.setFieldValByName("createBy", "SYSTEM", metaObject);
+            this.setFieldValByName("updateBy", "SYSTEM", metaObject);
         }
         //鏈夊垱寤烘椂闂村瓧娈碉紝鍒囧瓧娈靛�间负绌�
+        Date now = new Date();
         if (metaObject.hasGetter("createTime")) {
-            this.setFieldValByName("createTime", new Date(), metaObject);
+            this.setFieldValByName("createTime",now , metaObject);
+        }
+        if (metaObject.hasGetter("updateTime")) {
+            this.setFieldValByName("updateTime", now, metaObject);
         }
         //鏈夊�硷紝鍒欏啓鍏�
         if (metaObject.hasGetter("deleteFlag")) {
@@ -51,7 +57,9 @@
         if (authUser != null) {
             this.setFieldValByName("updateBy", authUser.getUsername(), metaObject);
         }
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        if (metaObject.hasGetter("updateTime")) {
+            this.setFieldValByName("updateTime", new Date(), metaObject);
+        }
     }
 }
 
diff --git a/framework/src/main/resources/mapper/lmk/VideoAuditRecordMapper.xml b/framework/src/main/resources/mapper/lmk/VideoAuditRecordMapper.xml
new file mode 100644
index 0000000..538be83
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/VideoAuditRecordMapper.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.lili.modules.lmk.mapper.VideoAuditRecordMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.VideoAuditRecordVO">
+        <id column="id" property="id"/>
+        <result column="video_id" property="videoId" />
+        <result column="audit_success" property="auditSuccess" />
+        <result column="edit_suggestion" property="editSuggestion" />
+    </resultMap>
+
+
+
+
+
+
+
+    <select id="getById" resultMap="BaseResultMap">
+        SELECT
+            LVAR.video_id,
+            LVAR.audit_success,
+            LVAR.edit_suggestion,
+            LVAR.id
+        FROM
+            lmk_video_audit_record LVAR
+        WHERE
+            LVAR.id = #{id} AND LVAR.delete_flag = 0
+    </select>
+
+
+    <select id="getPage" resultMap="BaseResultMap">
+        SELECT
+            LVAR.video_id,
+            LVAR.audit_success,
+            LVAR.edit_suggestion,
+            LVAR.id
+        FROM
+            lmk_video_audit_record LVAR
+        WHERE
+            LVAR.delete_flag = 0
+    </select>
+
+</mapper>
diff --git a/framework/src/main/resources/mapper/lmk/VideoMapper.xml b/framework/src/main/resources/mapper/lmk/VideoMapper.xml
index de55ef3..417ca5e 100644
--- a/framework/src/main/resources/mapper/lmk/VideoMapper.xml
+++ b/framework/src/main/resources/mapper/lmk/VideoMapper.xml
@@ -6,6 +6,7 @@
     <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.VideoVO">
         <id column="id" property="id"/>
         <result column="author_id" property="authorId" />
+        <result column="authorName" property="authorName" />
         <result column="cover_url" property="coverUrl" />
         <result column="video_file_key" property="videoFileKey" />
         <result column="video_fit" property="videoFit" />
@@ -20,12 +21,8 @@
         <result column="comment_num" property="commentNum" />
         <result column="weight" property="weight" />
         <result column="audit_pass_time" property="auditPassTime" />
+        <result column="update_time" property="updateTime" />
     </resultMap>
-
-
-
-
-
 
 
     <select id="getById" resultMap="BaseResultMap">
@@ -45,9 +42,12 @@
             LV.comment_num,
             LV.weight,
             LV.audit_pass_time,
-            LV.id
+            LV.update_time,
+            LV.id,
+            LM.nick_name as authorName
         FROM
             lmk_video LV
+                LEFT JOIN li_member LM ON LV.author_id = LM.id
         WHERE
             LV.id = #{id} AND LV.delete_flag = 0
     </select>
@@ -70,11 +70,53 @@
             LV.comment_num,
             LV.weight,
             LV.audit_pass_time,
-            LV.id
+            LV.update_time,
+            LV.id,
+            LM.nick_name as authorName
         FROM
             lmk_video LV
+                LEFT JOIN li_member LM ON LV.author_id = LM.id
         WHERE
             LV.delete_flag = 0
     </select>
 
+
+    <select id="managerPage" resultMap="BaseResultMap">
+        SELECT
+            LV.author_id,
+            LV.cover_url,
+            LV.video_fit,
+            LV.video_file_key,
+            LV.title,
+            LV.goods_id,
+            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.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
+            <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/framework/src/main/resources/mapper/lmk/VideoTagRefMapper.xml b/framework/src/main/resources/mapper/lmk/VideoTagRefMapper.xml
index 95bafd6..07b8fdd 100644
--- a/framework/src/main/resources/mapper/lmk/VideoTagRefMapper.xml
+++ b/framework/src/main/resources/mapper/lmk/VideoTagRefMapper.xml
@@ -9,7 +9,17 @@
         <result column="video_tag_id" property="videoTagId" />
     </resultMap>
 
-
+    <select id="getTagsByVideoIds" resultType="cn.lili.modules.lmk.domain.vo.SimpleVideoTagVO">
+        SELECT
+            LVTR.video_id,
+            LVT.id,
+            LVT.tag_name AS tagName
+        FROM
+            lmk_video_tag_ref LVTR
+            JOIN lmk_video_tag LVT ON LVTR.video_tag_id = LVT.id
+        WHERE
+            LVTR.video_id IN <foreach collection="videoIds" open="(" item="videoId" close=")" separator=",">#{videoId}</foreach>
+    </select>
 
 
 </mapper>
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/VideoController.java b/manager-api/src/main/java/cn/lili/controller/lmk/VideoController.java
index 48a84ca..de00a7a 100644
--- a/manager-api/src/main/java/cn/lili/controller/lmk/VideoController.java
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/VideoController.java
@@ -2,6 +2,10 @@
 
 import cn.lili.group.Update;
 import cn.lili.group.Add;
+import cn.lili.modules.lmk.domain.form.VideoAuditingForm;
+import cn.lili.modules.lmk.domain.form.VideoDownForm;
+import cn.lili.modules.lmk.domain.form.VideoRecommendForm;
+import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.security.access.prepost.PreAuthorize;
 import lombok.RequiredArgsConstructor;
@@ -56,15 +60,15 @@
         return videoService.remove(ids);
     }
 
-    @GetMapping("/page")
+    @PostMapping("/page")
     @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
-    public Result page(VideoQuery query) {
-        return videoService.page(query);
+    public Result page(@RequestBody ManagerVideoQuery query) {
+        return videoService.managerPage(query);
     }
 
     @GetMapping("/{id}")
     @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
-    public Result detail(@PathVariable("id") Integer id) {
+    public Result detail(@PathVariable("id") String id) {
         return videoService.detail(id);
     }
 
@@ -73,4 +77,28 @@
     public Result list() {
         return videoService.all();
     }
+
+    @PutMapping("/recommend")
+    @ApiOperation(value = "棣栭〉鎺ㄨ崘璁剧疆", notes = "棣栭〉鎺ㄨ崘璁剧疆")
+    public Result recommendSet(@RequestBody @Validated VideoRecommendForm form) {
+        return videoService.recommendSet(form);
+    }
+
+    @PostMapping("/auditing")
+    @ApiOperation(value = "瀹℃牳", notes = "瀹℃牳")
+    public Result auditing(@RequestBody @Validated VideoAuditingForm form) {
+        return videoService.auditing(form);
+    }
+
+    @PostMapping("/up/{id}")
+    @ApiOperation(value = "涓婃灦", notes = "涓婃灦")
+    public Result up(@PathVariable("id") String id) {
+        return videoService.up(id);
+    }
+
+    @PostMapping("/down")
+    @ApiOperation(value = "涓嬫灦", notes = "涓嬫灦")
+    public Result down(@RequestBody @Validated VideoDownForm form) {
+        return videoService.down(form);
+    }
 }
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java b/manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java
index c8c9a11..3c4c400 100644
--- a/manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java
@@ -70,7 +70,7 @@
 
     @GetMapping("/list")
     @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃")
-    public Result list() {
-        return videoTagService.all();
+    public Result list(String tagName) {
+        return videoTagService.all(tagName);
     }
 }

--
Gitblit v1.8.0