buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java
@@ -69,7 +69,7 @@ @GetMapping("/recommend") @ApiOperation(value = "视频推荐", notes = "视频推荐") public Result recommendVideo(AbsQuery query) { public Result recommendVideo(VideoQuery query) { return videoService.recommendVideo(query); } framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java
@@ -18,5 +18,12 @@ @Data @ApiModel(value = "Video查询参数", description = "视频内容查询参数") public class VideoQuery extends AbsQuery { @ApiModelProperty("作者id") private String authorId; @ApiModelProperty("视频来源:recommend推荐、author某作者的视频、collect某作者收藏的视频") private String videoFrom; } framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
@@ -1,6 +1,5 @@ package cn.lili.modules.lmk.service; import cn.lili.base.AbsQuery; import cn.lili.modules.lmk.domain.entity.Video; import cn.lili.modules.lmk.domain.form.*; import cn.lili.modules.lmk.domain.query.AuthorVideoQuery; @@ -119,8 +118,9 @@ * 小程序端的视频推荐接口 * * @return * @param query */ Result recommendVideo(AbsQuery query); Result recommendVideo(VideoQuery query); /** * 批量更新视频收藏数量 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
@@ -1,6 +1,5 @@ package cn.lili.modules.lmk.service.impl; import cn.lili.base.AbsQuery; import cn.lili.common.security.context.UserContext; import cn.lili.modules.lmk.domain.entity.VideoAuditRecord; import cn.lili.modules.lmk.domain.entity.VideoTag; @@ -261,10 +260,26 @@ } @Override public Result recommendVideo(AbsQuery query) { public Result recommendVideo(VideoQuery query) { // 推荐算法: 1. 根据用户的收藏视频的标签 2. 根据用户关注的作者的其它视频 3. 根据用户的观看记录(观看时长较长的、重复观看次数较多的) 4. 基于相似用户的观看行为来给该用户推荐 IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class); baseMapper.recommendVideo(page); switch (query.getVideoFrom()) { case "recommend": baseMapper.recommendVideo(page); break; case "author": AuthorVideoQuery query1 = new AuthorVideoQuery(); query1.setAuthorId(query.getAuthorId()); baseMapper.getAuthorVideoPage(page, query1); break; case "collect": AuthorVideoQuery query2 = new AuthorVideoQuery(); query2.setAuthorId(query.getAuthorId()); baseMapper.getAuthorVideoPage(page, query2); break; default: break; } if (page.getTotal() > 0) { List<String> videoIds = page.getRecords().stream().map(WxVideoVO::getId).collect(Collectors.toList()); Map<String, List<SimpleVideoTagVO>> tagMap = videoTagRefService.getTagsByVideoIds(videoIds)