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