From 2502b12e05029149f0cd5aea6c25bc419520cc4f Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 03 六月 2025 11:43:24 +0800
Subject: [PATCH] 视频主页部分接口
---
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoAccountServiceImpl.java | 22 +++
framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoAccountVO.java | 60 ++++++++++
framework/src/main/java/cn/lili/modules/lmk/domain/query/AuthorVideoQuery.java | 22 +++
framework/src/main/java/cn/lili/modules/lmk/mapper/VideoAccountMapper.java | 21 +++
framework/src/main/resources/mapper/lmk/VideoMapper.xml | 55 +++++++++
framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoAccount.java | 30 +++++
framework/src/main/resources/mapper/lmk/VideoAccountMapper.xml | 41 ++++++
buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java | 13 ++
framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java | 17 ++
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java | 22 +++
framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java | 35 +++++
framework/src/main/java/cn/lili/modules/lmk/service/VideoAccountService.java | 17 ++
12 files changed, 355 insertions(+), 0 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 9fb330c..f9ad281 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
@@ -4,6 +4,7 @@
import cn.lili.group.Update;
import cn.lili.group.Add;
import cn.lili.modules.lmk.domain.form.VideoFootPrintForm;
+import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
import cn.lili.modules.member.entity.dos.FootPrint;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -77,4 +78,16 @@
public Result saveViewRecord(@RequestBody VideoFootPrintForm form) {
return videoService.saveViewRecord(form);
}
+
+ @GetMapping("/author-info/{authorId}")
+ @ApiOperation(value = "鑾峰彇瑙嗛涓婚〉浣滆�呬俊鎭�", notes = "鑾峰彇瑙嗛涓婚〉浣滆�呬俊鎭�")
+ public Result getAuthorInfo(@PathVariable("authorId") String authorId) {
+ return videoService.getAuthorInfo(authorId);
+ }
+
+ @GetMapping("/author-video-page")
+ @ApiOperation(value = "鑾峰彇瑙嗛涓婚〉浣滆�呰棰戝垎椤�", notes = "鑾峰彇瑙嗛涓婚〉浣滆�呰棰戝垎椤�")
+ public Result getAuthorVideoPage(AuthorVideoQuery query) {
+ return videoService.getAuthorVideoPage(query);
+ }
}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoAccount.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoAccount.java
new file mode 100644
index 0000000..afb3c5d
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoAccount.java
@@ -0,0 +1,30 @@
+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-06-03
+ */
+@Data
+@TableName("lmk_video_account")
+public class VideoAccount extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("user_id")
+ /** memberId */
+ private String userId;
+
+ @TableField("motto")
+ /** 搴у彸閾� */
+ private String motto;
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/AuthorVideoQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/AuthorVideoQuery.java
new file mode 100644
index 0000000..c0f168e
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/AuthorVideoQuery.java
@@ -0,0 +1,22 @@
+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;
+
+/**
+ * 瑙嗛鍐呭鏌ヨ
+ *
+ * @author xp
+ * @since 2025-05-16
+ */
+@Data
+@ApiModel(value = "Video鏌ヨ鍙傛暟", description = "瑙嗛鍐呭鏌ヨ鍙傛暟")
+public class AuthorVideoQuery extends AbsQuery {
+
+ @ApiModelProperty("浣滆�卛d")
+ private String authorId;
+
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoAccountVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoAccountVO.java
new file mode 100644
index 0000000..979e899
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoAccountVO.java
@@ -0,0 +1,60 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.modules.lmk.domain.entity.VideoAccount;
+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-06-03
+ */
+@Data
+@ApiModel(value = "瑙嗛璐﹀彿淇℃伅鍝嶅簲鏁版嵁", description = "瑙嗛璐﹀彿淇℃伅鍝嶅簲鏁版嵁")
+public class VideoAccountVO extends AbsVo {
+
+ /** memberId */
+ @ApiModelProperty("memberId")
+ private String userId;
+
+ @ApiModelProperty("鏄电О")
+ private String nickName;
+
+ @ApiModelProperty("澶村儚")
+ private String avatar;
+
+ /** 搴у彸閾� */
+ @ApiModelProperty("搴у彸閾�")
+ private String motto;
+
+ @ApiModelProperty("绮変笣鏁�")
+ private Long fansNum;
+
+ @ApiModelProperty("鍏虫敞鏁�")
+ private Long subNum;
+
+ @ApiModelProperty("鑾疯禐鏁�")
+ private Long likeNum;
+
+ @ApiModelProperty("鏄惁鏄嚜宸辨煡鐪嬭嚜宸辩殑涓婚〉")
+ private Boolean self;
+
+ @ApiModelProperty("鏄惁鍏虫敞浜�")
+ private Boolean hasSub;
+
+ public static VideoAccountVO getVoByEntity(@NonNull VideoAccount entity, VideoAccountVO vo) {
+ if(vo == null) {
+ vo = new VideoAccountVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoAccountMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoAccountMapper.java
new file mode 100644
index 0000000..f9244cb
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoAccountMapper.java
@@ -0,0 +1,21 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.VideoAccount;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.lili.modules.lmk.domain.vo.VideoAccountVO;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 瑙嗛璐﹀彿淇℃伅 Mapper 鎺ュ彛
+ *
+ * @author xp
+ * @since 2025-06-03
+ */
+@Mapper
+public interface VideoAccountMapper extends BaseMapper<VideoAccount> {
+
+
+}
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 28854b7..0839f17 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,8 +1,11 @@
package cn.lili.modules.lmk.mapper;
import cn.lili.modules.lmk.domain.entity.Video;
+import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO;
+import cn.lili.modules.lmk.domain.vo.VideoAccountVO;
+import cn.lili.modules.lmk.domain.vo.WxVideoVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.lili.modules.lmk.domain.vo.VideoVO;
@@ -61,4 +64,36 @@
* @param numList
*/
void updateCommentNumBatch(@Param("list") List<CollectTypeNumVO> numList);
+
+ /**
+ * 瑙嗛涓婚〉浣滆�呬俊鎭�
+ *
+ * @param authorId
+ * @return
+ */
+ VideoAccountVO getAuthorInfo(@Param("authorId") String authorId, @Param("currentUserId") String currentUserId);
+
+ /**
+ * 鑾峰彇浣滆�呯殑鎵�鏈夎棰慽d
+ *
+ * @param authorId
+ * @return
+ */
+ List<String> getVideoIdsByAuthor(@Param("authorId") String authorId);
+
+ /**
+ * 鑾峰彇浣滆�呮墍鏈夎棰戠殑鏀惰棌鏁颁箣鍜�
+ *
+ * @param videoIds
+ * @return
+ */
+ Long countAuthorVideoCollectNum(@Param("videoIds") List<String> videoIds);
+
+ /**
+ * 鑾峰彇瑙嗛涓婚〉-浣滆�呰棰戠殑鍒嗛〉
+ *
+ * @param page
+ * @param query
+ */
+ IPage getAuthorVideoPage(IPage page, @Param("query") AuthorVideoQuery query);
}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/VideoAccountService.java b/framework/src/main/java/cn/lili/modules/lmk/service/VideoAccountService.java
new file mode 100644
index 0000000..63355e3
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/VideoAccountService.java
@@ -0,0 +1,17 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.modules.lmk.domain.entity.VideoAccount;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.lili.base.Result;
+import java.util.List;
+
+/**
+ * 瑙嗛璐﹀彿淇℃伅 鏈嶅姟绫�
+ *
+ * @author xp
+ * @since 2025-06-03
+ */
+public interface VideoAccountService extends IService<VideoAccount> {
+
+
+}
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 38011b9..de396a9 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
@@ -3,6 +3,7 @@
import cn.lili.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;
import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -142,4 +143,20 @@
* @return
*/
Result saveViewRecord(VideoFootPrintForm form);
+
+ /**
+ * 鑾峰彇瑙嗛涓婚〉浣滆�呬俊鎭�
+ *
+ * @param authorId
+ * @return
+ */
+ Result getAuthorInfo(String authorId);
+
+ /**
+ * 鑾峰彇瑙嗛涓婚〉浣滆�呰棰戝垎椤�
+ *
+ * @param query
+ * @return
+ */
+ Result getAuthorVideoPage(AuthorVideoQuery query);
}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoAccountServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoAccountServiceImpl.java
new file mode 100644
index 0000000..b7bddd1
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoAccountServiceImpl.java
@@ -0,0 +1,22 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.modules.lmk.domain.entity.VideoAccount;
+import cn.lili.modules.lmk.mapper.VideoAccountMapper;
+import cn.lili.modules.lmk.service.VideoAccountService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 瑙嗛璐﹀彿淇℃伅 鏈嶅姟瀹炵幇绫�
+ *
+ * @author xp
+ * @since 2025-06-03
+ */
+@Service
+@RequiredArgsConstructor
+public class VideoAccountServiceImpl extends ServiceImpl<VideoAccountMapper, VideoAccount> implements VideoAccountService {
+
+ private final VideoAccountMapper videoAccountMapper;
+
+}
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 bf978a9..fcc57e9 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
@@ -6,6 +6,7 @@
import cn.lili.modules.lmk.domain.entity.VideoTag;
import cn.lili.modules.lmk.domain.entity.VideoTagRef;
import cn.lili.modules.lmk.domain.form.*;
+import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
import cn.lili.modules.lmk.domain.vo.*;
import cn.lili.modules.lmk.enums.general.TagCreateTypeEnum;
@@ -315,4 +316,25 @@
footprintService.saveFootprint(footPrint);
return Result.ok();
}
+
+ @Override
+ public Result getAuthorInfo(String authorId) {
+ VideoAccountVO vo = baseMapper.getAuthorInfo(authorId, UserContext.getCurrentUserId());
+ vo.setSelf(authorId.equals(UserContext.getCurrentUserId()));
+ // 鏌ヨ鑾疯禐鏁�
+ List<String> videoIds = baseMapper.getVideoIdsByAuthor(authorId);
+ if (CollectionUtils.isNotEmpty(videoIds)) {
+ vo.setLikeNum(baseMapper.countAuthorVideoCollectNum(videoIds));
+ } else {
+ vo.setLikeNum(0L);
+ }
+ return Result.ok().data(vo);
+ }
+
+ @Override
+ public Result getAuthorVideoPage(AuthorVideoQuery query) {
+ IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class);
+ baseMapper.getAuthorVideoPage(page, query);
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
}
diff --git a/framework/src/main/resources/mapper/lmk/VideoAccountMapper.xml b/framework/src/main/resources/mapper/lmk/VideoAccountMapper.xml
new file mode 100644
index 0000000..d16f805
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/VideoAccountMapper.xml
@@ -0,0 +1,41 @@
+<?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.VideoAccountMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.VideoAccountVO">
+ <id column="id" property="id"/>
+ <result column="user_id" property="userId" />
+ <result column="motto" property="motto" />
+ </resultMap>
+
+
+
+
+
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ LVA.user_id,
+ LVA.motto,
+ LVA.id
+ FROM
+ lmk_video_account LVA
+ WHERE
+ LVA.id = #{id} AND LVA.delete_flag = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ LVA.user_id,
+ LVA.motto,
+ LVA.id
+ FROM
+ lmk_video_account LVA
+ WHERE
+ LVA.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 be18336..7964dd8 100644
--- a/framework/src/main/resources/mapper/lmk/VideoMapper.xml
+++ b/framework/src/main/resources/mapper/lmk/VideoMapper.xml
@@ -197,4 +197,59 @@
</foreach>
</update>
+
+ <select id="getAuthorInfo" resultType="cn.lili.modules.lmk.domain.vo.VideoAccountVO">
+ SELECT
+ LM.id as userId,
+ LM.nick_name as nickName,
+ LM.face as avatar,
+ LVA.motto,
+ (SELECT COUNT(*) FROM lmk_my_subscribe WHERE subscribe_user_id = #{authorId} AND delete_flag = 0) as fansNum,
+ (SELECT COUNT(*) FROM lmk_my_subscribe WHERE user_id = #{authorId} AND delete_flag = 0) as subNum,
+ (SELECT CASE
+ WHEN id IS NOT NULL THEN 1
+ ELSE 0
+ END
+ FROM lmk_my_subscribe WHERE user_id = #{currentUserId} AND subscribe_user_id = #{authorId} AND delete_flag = 0) as hasSub
+ FROM
+ li_member LM
+ LEFT JOIN lmk_video_account LVA ON LM.id = LVA.user_id
+ WHERE
+ LM.id = #{authorId} AND LM.delete_flag = 0
+ </select>
+
+ <select id="getVideoIdsByAuthor" parameterType="string" resultType="string">
+ SELECT id FROM lmk_video WHERE author_id = #{authorId} AND delete_flag = 0 AND status = '1'
+ </select>
+
+ <select id="countAuthorVideoCollectNum" resultType="long">
+ SELECT COUNT(*) FROM lmk_my_collect WHERE collect_type = 'video' AND delete_flag = 0 AND ref_id IN <foreach
+ collection="videoIds" open="(" close=")" separator="," item="videoId">#{videoId}</foreach>
+ </select>
+
+ <select id="getAuthorVideoPage" resultMap="WxResultMap">
+ SELECT
+ LV.author_id,
+ LV.cover_url,
+ LV.video_fit,
+ LV.video_duration,
+ LV.video_file_key,
+ LV.title,
+ LV.recommend,
+ LV.status,
+ LV.play_num,
+ LV.comment_num,
+ LV.collect_num,
+ LV.weight,
+ LV.audit_pass_time,
+ LV.update_time,
+ LV.id
+ FROM
+ lmk_video LV
+ WHERE
+ LV.delete_flag = 0 AND LV.status = '1' AND LV.author_id = #{query.authorId}
+ ORDER BY
+ LV.collect_num DESC
+ </select>
+
</mapper>
--
Gitblit v1.8.0