From f4d3dd1e4964297648f1b7bb80470d70f1b8fcec Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期三, 04 六月 2025 11:41:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoAccountServiceImpl.java | 22 ++
framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoForm.java | 4
framework/src/main/java/cn/lili/modules/lmk/domain/query/AuthorVideoQuery.java | 22 ++
framework/src/main/resources/mapper/lmk/VideoAccountMapper.xml | 41 ++++
framework/src/main/java/cn/lili/utils/COSUtil.java | 16 -
config/application.yml | 1
buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java | 28 ++
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java | 87 +++++++
framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java | 7
framework/src/main/java/cn/lili/modules/lmk/service/VideoAccountService.java | 17 +
framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoAccountVO.java | 60 ++++++
framework/src/main/java/cn/lili/modules/lmk/mapper/VideoAccountMapper.java | 21 ++
framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java | 1
framework/src/main/java/cn/lili/cos/COSConfigProperty.java | 11 +
framework/src/main/resources/mapper/lmk/VideoMapper.xml | 95 +++++++++
framework/src/main/java/cn/lili/modules/lmk/domain/entity/VideoAccount.java | 30 +++
framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoHomePageInfoForm.java | 28 ++
framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java | 13 +
framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java | 37 +++
framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java | 43 ++++
20 files changed, 556 insertions(+), 28 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..659c7e7 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,8 @@
import cn.lili.group.Update;
import cn.lili.group.Add;
import cn.lili.modules.lmk.domain.form.VideoFootPrintForm;
+import cn.lili.modules.lmk.domain.form.VideoHomePageInfoForm;
+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;
@@ -68,7 +70,7 @@
@GetMapping("/recommend")
@ApiOperation(value = "瑙嗛鎺ㄨ崘", notes = "瑙嗛鎺ㄨ崘")
- public Result recommendVideo(AbsQuery query) {
+ public Result recommendVideo(VideoQuery query) {
return videoService.recommendVideo(query);
}
@@ -77,4 +79,28 @@
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);
+ }
+
+ @GetMapping("/author-collect-video-page")
+ @ApiOperation(value = "鑾峰彇瑙嗛涓婚〉浣滆�呮敹钘忕殑瑙嗛鍒嗛〉", notes = "鑾峰彇瑙嗛涓婚〉浣滆�呮敹钘忕殑瑙嗛鍒嗛〉")
+ public Result getAuthorCollectVideoPage(AuthorVideoQuery query) {
+ return videoService.getAuthorCollectVideoPage(query);
+ }
+
+ @PostMapping("/home-page-info-edit")
+ @ApiOperation(value = "淇濆瓨瑙嗛涓婚〉鐨勪釜浜轰俊鎭慨鏀�", notes = "淇濆瓨瑙嗛涓婚〉鐨勪釜浜轰俊鎭慨鏀�")
+ public Result homePageInfoEdit(@RequestBody @Validated VideoHomePageInfoForm form) {
+ return videoService.homePageInfoEdit(form);
+ }
}
diff --git a/config/application.yml b/config/application.yml
index 70c7d2a..03aca44 100644
--- a/config/application.yml
+++ b/config/application.yml
@@ -324,6 +324,7 @@
durationSeconds: 1800 # STS涓存椂璁块棶鍑瘉鏈夋晥鏈燂紝鍗曚綅绉掞紝榛樿1800s锛屼富璐﹀彿鏈�闀�2灏忔椂锛屽瓙璐﹀彿(ARM鐢ㄦ埛)36灏忔椂
bucket: lmk-1308069279
region: ap-chengdu
+ endpoint: https://lmk-1308069279.cos.ap-chengdu.myqcloud.com # 璁块棶鍩熷悕
urlExpireMinute: 360 # 棰勭鍚島rl鏈夋晥鏃堕棿(鍒嗛挓)
actions: # sts鐨勬潈闄�
- cos:ListMultipartUploads
diff --git a/framework/src/main/java/cn/lili/cos/COSConfigProperty.java b/framework/src/main/java/cn/lili/cos/COSConfigProperty.java
index 70c5f4f..4b9a2cd 100644
--- a/framework/src/main/java/cn/lili/cos/COSConfigProperty.java
+++ b/framework/src/main/java/cn/lili/cos/COSConfigProperty.java
@@ -30,6 +30,9 @@
/** bucket鍚嶇О */
private String bucket;
+ /** 璁块棶鍩熷悕 */
+ private String endpoint;
+
/** 棰勭鍚島rl杩囨湡鏃堕棿锛堝垎閽燂級 */
private Integer urlExpireMinute;
@@ -102,4 +105,12 @@
public void setUrlExpireMinute(Integer urlExpireMinute) {
this.urlExpireMinute = urlExpireMinute;
}
+
+ public String getEndpoint() {
+ return endpoint;
+ }
+
+ public void setEndpoint(String endpoint) {
+ this.endpoint = endpoint;
+ }
}
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/form/VideoForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoForm.java
index cccd50b..bcf2858 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoForm.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoForm.java
@@ -38,6 +38,10 @@
@ApiModelProperty("鏍囬")
private String title;
+ @ApiModelProperty("瑙嗛灏侀潰")
+ @NotBlank(message = "瑙嗛灏侀潰涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ private String cover;
+
@ApiModelProperty("瑙嗛鏍囩")
@Length(max = 5, message = "鏈�澶氬彧鑳芥坊鍔犱簲涓爣绛�")
private List<WxVideoTagForm> tags = new ArrayList<>(2);
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoHomePageInfoForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoHomePageInfoForm.java
new file mode 100644
index 0000000..3f044bb
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/VideoHomePageInfoForm.java
@@ -0,0 +1,28 @@
+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;
+
+/**
+ * @author锛歺p
+ * @date锛�2025/6/3 20:09
+ */
+@Data
+@ApiModel("瑙嗛涓婚〉涓汉淇℃伅淇敼")
+public class VideoHomePageInfoForm {
+
+ @ApiModelProperty("涓�х鍚�")
+ private String motto;
+
+ @NotBlank(message = "鏄电О涓嶈兘涓虹┖")
+ @ApiModelProperty("鏄电О")
+ private String nickName;
+
+ @NotBlank(message = "澶村儚涓嶈兘涓虹┖")
+ @ApiModelProperty("澶村儚")
+ private String avatar;
+
+}
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/query/VideoQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoQuery.java
index df533f0..ac1a18d 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
@@ -18,5 +18,12 @@
@Data
@ApiModel(value = "Video鏌ヨ鍙傛暟", description = "瑙嗛鍐呭鏌ヨ鍙傛暟")
public class VideoQuery extends AbsQuery {
+
+ @ApiModelProperty("浣滆�卛d")
+ private String authorId;
+
+ @ApiModelProperty("瑙嗛鏉ユ簮锛歳ecommend鎺ㄨ崘銆乤uthor鏌愪綔鑰呯殑瑙嗛銆乧ollect鏌愪綔鑰呮敹钘忕殑瑙嗛")
+ private String videoFrom;
+
}
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/domain/vo/WxVideoVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java
index 3600fa2..9a7a98e 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java
@@ -35,6 +35,7 @@
/** 鍥剧墖灏侀潰 */
@ApiModelProperty("鍥剧墖灏侀潰")
private String coverUrl;
+ private String coverFileKey;
/** 瑙嗛鍦板潃 */
@ApiModelProperty("瑙嗛鍦板潃")
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..cbb9fe8 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,44 @@
* @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);
+
+ /**
+ * 鑾峰彇瑙嗛涓婚〉浣滆�呮敹钘忕殑瑙嗛鍒嗛〉
+ *
+ * @param page
+ * @param query
+ */
+ IPage getAuthorCollectVideoPage(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..b13cb9b 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,8 +1,8 @@
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;
import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -118,8 +118,9 @@
* 灏忕▼搴忕鐨勮棰戞帹鑽愭帴鍙�
*
* @return
+ * @param query
*/
- Result recommendVideo(AbsQuery query);
+ Result recommendVideo(VideoQuery query);
/**
* 鎵归噺鏇存柊瑙嗛鏀惰棌鏁伴噺
@@ -142,4 +143,36 @@
* @return
*/
Result saveViewRecord(VideoFootPrintForm form);
+
+ /**
+ * 鑾峰彇瑙嗛涓婚〉浣滆�呬俊鎭�
+ *
+ * @param authorId
+ * @return
+ */
+ Result getAuthorInfo(String authorId);
+
+ /**
+ * 鑾峰彇瑙嗛涓婚〉浣滆�呰棰戝垎椤�
+ *
+ * @param query
+ * @return
+ */
+ Result getAuthorVideoPage(AuthorVideoQuery query);
+
+ /**
+ * 鑾峰彇瑙嗛涓婚〉浣滆�呮敹钘忚棰戝垎椤�
+ *
+ * @param query
+ * @return
+ */
+ Result getAuthorCollectVideoPage(AuthorVideoQuery query);
+
+ /**
+ * 淇濆瓨瑙嗛涓婚〉鐨勪釜浜轰俊鎭慨鏀�
+ *
+ * @param form
+ * @return
+ */
+ Result homePageInfoEdit(VideoHomePageInfoForm form);
}
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..a15a912 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,11 +1,9 @@
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;
-import cn.lili.modules.lmk.domain.entity.VideoTagRef;
+import cn.lili.modules.lmk.domain.entity.*;
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;
@@ -13,10 +11,11 @@
import cn.lili.modules.lmk.enums.general.ViewTypeEnum;
import cn.lili.modules.lmk.service.*;
import cn.lili.modules.member.entity.dos.FootPrint;
+import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.service.FootprintService;
+import cn.lili.modules.member.service.MemberService;
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.base.Result;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
@@ -55,6 +54,8 @@
private final COSUtil cosUtil;
private final FootprintService footprintService;
private final MySubscribeService mySubscribeService;
+ private final MemberService memberService;
+ private final VideoAccountService videoAccountService;
/**
* 娣诲姞
@@ -153,6 +154,7 @@
Video video = VideoForm.getEntityByForm(form, null);
video.setAuthorId(UserContext.getCurrentUserId());
video.setStatus(VideoStatusEnum.AUDITING.getValue());
+ video.setCoverUrl(form.getCover());
baseMapper.insert(video);
// 2.澶勭悊鏍囩
List<VideoTagRef> videoTagRefs = form.getTags().stream().map(tag -> {
@@ -196,7 +198,7 @@
// 3. 鑾峰彇瑙嗛涓存椂璁块棶鍦板潃銆佽缃棰戞爣绛�
page.getRecords().forEach(v -> {
v.setTagList(tagMap.get(v.getId()));
-// v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
+ v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverUrl()));
});
}
return Result.ok().data(page.getRecords()).total(page.getTotal());
@@ -259,10 +261,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)
@@ -278,6 +296,7 @@
v.setTagList(tagMap.get(v.getId()));
v.setCollected(CollectionUtils.isNotEmpty(collectMap.get(v.getId())));
v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
+ v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey()));
v.setSubscribeThisAuthor(subscribes.contains(v.getAuthorId()));
});
}
@@ -315,4 +334,56 @@
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);
+ for (WxVideoVO vo : page.getRecords()) {
+ vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey()));
+ vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoUrl()));
+ }
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ @Override
+ public Result getAuthorCollectVideoPage(AuthorVideoQuery query) {
+ IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class);
+ baseMapper.getAuthorCollectVideoPage(page, query);
+ for (WxVideoVO vo : page.getRecords()) {
+ vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey()));
+ vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoUrl()));
+ vo.setCollected(Boolean.TRUE);
+ }
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Result homePageInfoEdit(VideoHomePageInfoForm form) {
+ new LambdaUpdateChainWrapper<>(memberService.getBaseMapper())
+ .eq(Member::getId, UserContext.getCurrentUserId())
+ .set(Member::getNickName, form.getNickName())
+ .set(Member::getFace, form.getAvatar())
+ .update();
+ new LambdaUpdateChainWrapper<>(videoAccountService.getBaseMapper())
+ .eq(VideoAccount::getUserId, UserContext.getCurrentUserId())
+ .set(VideoAccount::getMotto, form.getMotto())
+ .update();
+ return Result.ok("淇濆瓨鎴愬姛");
+ }
}
diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
index 469bfba..ddcd129 100644
--- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
@@ -22,6 +22,8 @@
import cn.lili.modules.connect.entity.Connect;
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
import cn.lili.modules.connect.service.ConnectService;
+import cn.lili.modules.lmk.domain.entity.VideoAccount;
+import cn.lili.modules.lmk.service.VideoAccountService;
import cn.lili.modules.member.aop.annotation.PointLogPoint;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dto.*;
@@ -47,6 +49,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
@@ -105,6 +108,9 @@
*/
@Autowired
private Cache cache;
+
+ @Autowired
+ private VideoAccountService videoAccountService;
@Override
public Member findByUsername(String userName) {
@@ -310,6 +316,11 @@
member.setId(SnowFlake.getIdStr());
//淇濆瓨浼氬憳
this.save(member);
+ // 鍚屾椂鏂板涓�涓棰戣处鍙�
+ VideoAccount videoAccount = new VideoAccount();
+ videoAccount.setUserId(member.getId());
+ videoAccountService.save(videoAccount);
+
UserContext.settingInviter(member.getId(), cache);
// 鍙戦�佷細鍛樻敞鍐屼俊鎭�
applicationEventPublisher.publishEvent(new TransactionCommitSendMQEvent("new member register", rocketmqCustomProperties.getMemberTopic(),
@@ -844,4 +855,4 @@
}
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/main/java/cn/lili/utils/COSUtil.java b/framework/src/main/java/cn/lili/utils/COSUtil.java
index 23a2c23..41e525b 100644
--- a/framework/src/main/java/cn/lili/utils/COSUtil.java
+++ b/framework/src/main/java/cn/lili/utils/COSUtil.java
@@ -224,21 +224,7 @@
* @return
*/
public String getPreviewUrl(String fileKey) {
- COSClient cosClient = this.initClient();
- // 璁剧疆绛惧悕杩囨湡鏃堕棿(鍙��), 鑻ユ湭杩涜璁剧疆鍒欓粯璁や娇鐢� ClientConfig 涓殑绛惧悕杩囨湡鏃堕棿(1灏忔椂)
- // 杩欓噷璁剧疆绛惧悕鍦ㄥ崐涓皬鏃跺悗杩囨湡
- Date expirationDate = new Date(System.currentTimeMillis() + cosConfigProperty.getUrlExpireMinute() * 60 * 1000);
- // 濉啓鏈璇锋眰鐨勫弬鏁帮紝闇�涓庡疄闄呰姹傜浉鍚岋紝鑳藉闃叉鐢ㄦ埛绡℃敼姝ょ鍚嶇殑 HTTP 璇锋眰鐨勫弬鏁�
- Map<String, String> params = new HashMap<String, String>();
- // 濉啓鏈璇锋眰鐨勫ご閮紝闇�涓庡疄闄呰姹傜浉鍚岋紝鑳藉闃叉鐢ㄦ埛绡℃敼姝ょ鍚嶇殑 HTTP 璇锋眰鐨勫ご閮�
- Map<String, String> headers = new HashMap<String, String>();
- // 璇锋眰鐨� HTTP 鏂规硶锛屼笂浼犺姹傜敤 PUT锛屼笅杞借姹傜敤 GET锛屽垹闄よ姹傜敤 DELETE
- HttpMethodName method = HttpMethodName.GET;
- URL url = cosClient.generatePresignedUrl(cosConfigProperty.getBucket(), fileKey, expirationDate, method, headers, params);
- System.out.println(url.toString());
- // 纭鏈繘绋嬩笉鍐嶄娇鐢� cosClient 瀹炰緥涔嬪悗锛屽叧闂嵆鍙�
- cosClient.shutdown();
- return url.toString();
+ return cosConfigProperty.getEndpoint() + "/" + fileKey;
}
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..066d815 100644
--- a/framework/src/main/resources/mapper/lmk/VideoMapper.xml
+++ b/framework/src/main/resources/mapper/lmk/VideoMapper.xml
@@ -31,7 +31,7 @@
<result column="author_id" property="authorId" />
<result column="authorName" property="authorName" />
<result column="authorAvatar" property="authorAvatar" />
- <result column="cover_url" property="coverUrl" />
+ <result column="cover_url" property="coverFileKey" />
<result column="video_file_key" property="videoFileKey" />
<result column="video_fit" property="videoFit" />
<result column="title" property="title" />
@@ -197,4 +197,97 @@
</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.goods_id,
+ LV.goods_view_num,
+ LV.goods_order_num,
+ LV.recommend,
+ LV.status,
+ LV.play_num,
+ LV.comment_num,
+ LV.collect_num,
+ LV.weight,
+ LV.audit_pass_time,
+ LV.update_time,
+ LV.id,
+ LM.nick_name as authorName,
+ LM.face as authorAvatar
+ FROM
+ lmk_video LV
+ LEFT JOIN li_member LM ON LV.author_id = LM.id
+ WHERE
+ LV.delete_flag = 0 AND LV.status = '1' AND LV.author_id = #{query.authorId}
+ ORDER BY
+ LV.collect_num DESC
+ </select>
+
+ <select id="getAuthorCollectVideoPage" resultMap="WxResultMap">
+ SELECT
+ LV.author_id,
+ LV.cover_url,
+ LV.video_fit,
+ LV.video_duration,
+ 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.comment_num,
+ LV.collect_num,
+ LV.weight,
+ LV.audit_pass_time,
+ LV.update_time,
+ LV.id,
+ LM.nick_name as authorName,
+ LM.face as authorAvatar
+ FROM
+ lmk_my_collect LMC
+ INNER JOIN lmk_video LV ON LMC.ref_id = LV.id AND LV.delete_flag = 0 AND LV.status = '1'
+ LEFT JOIN li_member LM ON LV.author_id = LM.id
+ WHERE
+ LMC.delete_flag = 0 AND LMC.user_id = #{query.authorId} AND LMC.collect_type = 'video'
+ ORDER BY
+ LMC.create_time DESC
+ </select>
+
</mapper>
--
Gitblit v1.8.0