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