From ae2f87e9ac4e81e6479c726634411f4634d494f4 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期四, 03 七月 2025 16:08:48 +0800 Subject: [PATCH] 相似视频 --- framework/src/main/java/cn/lili/modules/lmk/domain/form/FileInfoForm.java | 4 + framework/src/main/resources/mapper/lmk/VideoMapper.xml | 45 +++++++++++++++ buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java | 6 ++ framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java | 1 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java | 16 +++- framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java | 21 ++++++ framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java | 10 +++ framework/src/main/java/cn/lili/modules/lmk/domain/query/GoodsSimilarlyQuery.java | 27 +++++++++ 8 files changed, 123 insertions(+), 7 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java index 8078d3f..9881fd1 100644 --- a/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java +++ b/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java @@ -148,4 +148,10 @@ public Result esSearch(VideoEsQuery query) { return videoService.esSearch(query); } + + @PostMapping("/goods/similarly") + @ApiOperation(value = "鎸傜浉鍚屽晢鍝佺殑瑙嗛", notes = "鎸傜浉鍚屽晢鍝佺殑瑙嗛") + public Result goodsSimilarly(@RequestBody VideoQuery query) { + return videoService.recommendVideo(query); + } } diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileInfoForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileInfoForm.java index eebf1e0..20890a2 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileInfoForm.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/FileInfoForm.java @@ -28,4 +28,8 @@ @ApiModelProperty("鏂囦欢鍘熷鍚�") private String originalFileName; + private String url; + + private String cover; + } diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/GoodsSimilarlyQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/GoodsSimilarlyQuery.java new file mode 100644 index 0000000..fa27d6e --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/GoodsSimilarlyQuery.java @@ -0,0 +1,27 @@ +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锛歺p + * @date锛�2025/7/2 10:08 + */ +@Data +@ApiModel("鐩稿悓鍟嗗搧瑙嗛") +public class GoodsSimilarlyQuery extends AbsQuery { + + // TODO 鏌ヨ鎸備簡鍚屼竴鍟嗗搧鐨勮棰戜笉搴旇鍖哄垎鏄帹鑽愯棰戣繕鏄ぇ鍋ュ悍锛岃瀛楁鍙槸鍏堝啓鍦ㄨ繖锛屾殏鏃朵笉鐢� + @ApiModelProperty("瑙嗛绫诲瀷") + private String videoType; + + @ApiModelProperty("鍟嗗搧id锛岃繖閲岀敤鍟嗗搧id鑰屼笉鏄痵kuId") + private List<String> goodsIds; + + @ApiModelProperty("褰撳墠鐨勮棰慽d锛屾煡璇㈡椂鐩存帴鎺掗櫎璇ヨ棰�") + private String currentVideoId; +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java index 3aa3b2a..23800fd 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java @@ -21,11 +21,16 @@ @ApiModel(value = "Video鏌ヨ鍙傛暟", description = "瑙嗛鍐呭鏌ヨ鍙傛暟") public class VideoQuery extends AbsQuery { + /* ----------------------------- author鏌愪綔鑰呯殑瑙嗛銆乧ollect鏌愪綔鑰呮敹钘忕殑瑙嗛銆乴ike鏌愪綔鑰呯偣璧炵殑瑙嗛 ------------------------------- */ @ApiModelProperty("浣滆�卛d") private String authorId; - @ApiModelProperty("瑙嗛鏉ユ簮锛歳ecommend鎺ㄨ崘銆乤uthor鏌愪綔鑰呯殑瑙嗛銆乧ollect鏌愪綔鑰呮敹钘忕殑瑙嗛銆乴ike鏌愪綔鑰呯偣璧炵殑瑙嗛") + @ApiModelProperty("瑙嗛鏉ユ簮锛歳ecommend鎺ㄨ崘銆乤uthor鏌愪綔鑰呯殑瑙嗛銆乧ollect鏌愪綔鑰呮敹钘忕殑瑙嗛銆乴ike鏌愪綔鑰呯偣璧炵殑瑙嗛銆乻earch鎼滅储銆乬oodsSimilarly鏌ユ寕鍚屼竴鍟嗗搧鐨勮棰�") private String videoFrom; + + + + /** * @see cn.lili.modules.lmk.enums.general.VideoTypeEnum @@ -33,7 +38,21 @@ @ApiModelProperty("瑙嗛绫诲瀷锛氳棰戙�佸ぇ鍋ュ悍銆佺鍘紝榛樿涓嶄紶鏌ヨ棰�") private String videoType = VideoTypeEnum.VIDEO.getValue(); + + + + + + + /* ----------------------------- search鎼滅储 ------------------------------- */ @ApiModelProperty("鎼滅储瑙嗛鐨勫叧閿瘝") private String keyword; + + /* ----------------------------- goodsSimilarly鏌ユ寕鍚屼竴鍟嗗搧鐨勮棰� ------------------------------- */ + @ApiModelProperty("鍟嗗搧id锛岃繖閲岀敤鍟嗗搧id鑰屼笉鏄痵kuId") + private List<String> goodsIds; + + @ApiModelProperty("褰撳墠鐨勮棰慽d锛屾煡璇㈡椂鐩存帴鎺掗櫎璇ヨ棰�") + private String currentVideoId; } 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 252babb..8aa2612 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 @@ -41,7 +41,7 @@ IPage managerPage(IPage page, @Param("query") ManagerVideoQuery query); /** - * 鏌ュ嚭5涓帹鑽愯棰� + * 鏌ユ帹鑽愯棰� * * @return */ @@ -155,4 +155,12 @@ * @return */ List<VideoIndex> getEsPage(@Param("start") int start, @Param("pageSize") int pageSize); + + /** + * 鏌ヨ鎸備簡鍚屼竴鍟嗗搧鐨勮棰� + * + * @param page + * @param goodsSimilarlyQuery + */ + IPage goodsSimilarlyPage(IPage page, @Param("query") GoodsSimilarlyQuery goodsSimilarlyQuery); } 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 2592ed4..2dbf275 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 @@ -297,4 +297,5 @@ * @return */ Result esSearch(VideoEsQuery query); + } 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 ad439e9..4f22dc3 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 @@ -492,11 +492,16 @@ baseMapper.getAuthorLikeVideoPage(page, query3); break; case "search": // 鍔犺浇es鎼滅储瑙嗛 - VideoEsQuery query4 = new VideoEsQuery(); - BeanUtils.copyProperties(query, query4); - query4.setPageNumber((int) query.getPageNumber()); - query4.setPageSize((int) query.getPageSize()); - return this.esSearch(query4); + VideoEsQuery videoEsQuery = new VideoEsQuery(); + BeanUtils.copyProperties(query, videoEsQuery); + videoEsQuery.setPageNumber((int) query.getPageNumber()); + videoEsQuery.setPageSize((int) query.getPageSize()); + return this.esSearch(videoEsQuery); + case "goodsSimilarly": + GoodsSimilarlyQuery goodsSimilarlyQuery = new GoodsSimilarlyQuery(); + BeanUtils.copyProperties(query, goodsSimilarlyQuery); + baseMapper.goodsSimilarlyPage(page, goodsSimilarlyQuery); + break; default: break; } @@ -1210,4 +1215,5 @@ }).collect(Collectors.toList()); return Result.ok().data(vos).total(searchHits.getTotalHits()); } + } diff --git a/framework/src/main/resources/mapper/lmk/VideoMapper.xml b/framework/src/main/resources/mapper/lmk/VideoMapper.xml index e9b22bf..c0482ca 100644 --- a/framework/src/main/resources/mapper/lmk/VideoMapper.xml +++ b/framework/src/main/resources/mapper/lmk/VideoMapper.xml @@ -243,6 +243,51 @@ ORDER BY LV.create_time DESC </select> + + <select id="goodsSimilarlyPage" resultMap="WxResultMap"> + 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.comment_num, + LV.collect_num, + LV.thumbs_up_num, + LV.weight, + LV.audit_pass_time, + LV.update_time, + LV.create_time, + LV.video_content_type, + LV.video_type, + LV.video_imgs, + LV.id, + CASE + WHEN LM.nick_name IS NOT NULL THEN LM.nick_name + WHEN LM.nick_name IS NULL THEN (SELECT nick_name FROM li_admin_user WHERE id = LV.author_id) + ELSE '' + END as authorName, + CASE + WHEN LM.face IS NOT NULL THEN LM.face + WHEN LM.face IS NULL THEN (SELECT avatar FROM li_admin_user WHERE id = LV.author_id) + ELSE '' + END as authorAvatar + FROM + lmk_video LV + INNER JOIN lmk_video_goods LVG ON LVG.video_id = LV.id AND LVG.goods_id in <foreach collection="query.goodsIds" open="(" item="goodsId" close=")" separator=",">#{goodsId}</foreach> + LEFT JOIN li_member LM ON LV.author_id = LM.id + WHERE + LV.delete_flag = 0 AND LV.status = '1' AND LV.id != #{query.currentVideoId} + ORDER BY + LV.create_time DESC + </select> + <select id="recommendHealthVideo" resultMap="WxResultMap"> SELECT LV.author_id, -- Gitblit v1.8.0