it_lv 1 개월 전
부모
커밋
df0e79daeb
1개의 변경된 파일48개의 추가작업 그리고 46개의 파일을 삭제
  1. 48 46
      第1章 专辑管理.md

+ 48 - 46
第1章 专辑管理.md

@@ -1024,19 +1024,19 @@ public class AlbumInfoApiController {
 
 
     /**
-     * TODO 该接口必须登录才能访问
-     * 内容创作者/运营人员保存专辑
+     * TODO 该接口登录才可以访问
+     * 内容创作者或者平台运营人员-保存专辑
      *
-     * @param albuminfo
+     * @param albumInfoVo 对象中属性需要进行合法验证,采用Validation框架进行校验
      * @return
      */
-    @Operation(summary = "内容创作者/运营人员保存专辑")
+    @Operation(summary = "内容创作者或者平台运营人员-保存专辑")
     @PostMapping("/albumInfo/saveAlbumInfo")
-    public Result saveAlbumInfo(@RequestBody AlbumInfo albuminfo) {
-        //1.获取当前登录用户ID-从ThreadLocal中获取用户ID 暂时固定为1
+    public Result saveAlbumInfo(@Validated @RequestBody AlbumInfoVo albumInfoVo) {
+        //1.动态获取用户ID
         Long userId = AuthContextHolder.getUserId();
-        //2.调用业务逻辑保存专辑
-        albumInfoService.saveAlbumInfo(albuminfo, userId);
+        //2.调用业务逻辑完成新增
+        albumInfoService.saveAlbumInfo(albumInfoVo, userId);
         return Result.ok();
     }
 }
@@ -1056,12 +1056,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface AlbumInfoService extends IService<AlbumInfo> {
 
     /**
-     * 内容创作者/运营人员保存专辑
-     *
-     * @param albuminfo 新增专辑信息
-     * @param userId 用户ID
+     * 内容创作者或者平台运营人员-保存专辑
+     * @param albumInfoVo
+     * @param userId
      */
-    void saveAlbumInfo(AlbumInfo albuminfo, Long userId);
+    void saveAlbumInfo(AlbumInfoVo albumInfoVo, Long userId);
 
     /**
      * 保存专辑统计信息
@@ -1113,48 +1112,51 @@ public class AlbumInfoServiceImpl extends ServiceImpl<AlbumInfoMapper, AlbumInfo
     @Autowired
     private AlbumStatMapper albumStatMapper;
 
-    /**
-     * 内容创作者/运营人员保存专辑
-     * * TODO 业务校验-验证内容安全
-     * * 1.封装专辑相关信息,保存一条记录到专辑信息表
-     * * 2.封装专辑标签关系集合,保存若干条记录到专辑标签关系表
-     * * 3.封装专辑统计信息,保存4条记录到专辑统计表
+        /**
+     * 内容创作者或者平台运营人员-保存专辑
      *
-     * @param albuminfo 新增专辑信息
-     * @param userId    用户ID
+     * @param albumInfoVo
+     * @param userId
      */
     @Override
-    @Transactional(rollbackFor = Exception.class) //默认RuntimeException跟Error回滚事务
-    public void saveAlbumInfo(AlbumInfo albuminfo, Long userId) {
-        //1.封装专辑相关信息,保存一条记录到专辑信息表
-        //1.1 设置用户ID
-        albuminfo.setUserId(userId);
-        //1.2 设置免费试听集数
-        albuminfo.setTracksForFree(5);
-        //1.3 设置专辑内容审核状态
-        albuminfo.setStatus(SystemConstant.ALBUM_STATUS_NO_PASS);
-        //1.4 保存专辑,获取专辑ID
-        albumInfoMapper.insert(albuminfo);
-        Long albumId = albuminfo.getId();
-        //2.封装专辑标签关系集合,保存若干条记录到专辑标签关系表
-        //2.1 获取入参中包含标签列表
-        List<AlbumAttributeValue> albumAttributeValueVoList = albuminfo.getAlbumAttributeValueVoList();
-        if (CollectionUtil.isNotEmpty(albumAttributeValueVoList)) {
-            //2.2 遍历标签列表封装专辑标签关系对象
-            for (AlbumAttributeValue albumAttributeValue : albumAttributeValueVoList) {
+    @Transactional(rollbackFor = Exception.class)
+    public void saveAlbumInfo(AlbumInfoVo albumInfoVo, Long userId) {
+        //1.保存专辑信息
+        //1.1 将专辑VO转为PO对象
+        AlbumInfo albumInfo = BeanUtil.copyProperties(albumInfoVo, AlbumInfo.class);
+
+        //1.2 为专辑属性赋值:用户ID,试听集数,审核状态
+        albumInfo.setUserId(userId);
+        String payType = albumInfo.getPayType();
+        if (ALBUM_PAY_TYPE_VIPFREE.equals(payType) || ALBUM_PAY_TYPE_REQUIRE.equals(payType)) {
+            //只需要对VIP免费或付费资源设置试听集
+            albumInfo.setTracksForFree(3);
+        }
+        albumInfo.setStatus(ALBUM_STATUS_NO_PASS);
+
+        //1.3 保存专辑,得到专辑ID
+        albumInfoMapper.insert(albumInfo);
+        Long albumId = albumInfo.getId();
+
+        //2.保存专辑标签关系信息
+        //2.1 获取VO中提交专辑标签关系集合
+        List<AlbumAttributeValueVo> albumAttributeValueVoList = albumInfoVo.getAlbumAttributeValueVoList();
+        if (CollUtil.isNotEmpty(albumAttributeValueVoList)) {
+            //2.2 为专辑标签关联专辑ID,"批量"新增专辑标签关系
+            for (AlbumAttributeValueVo albumAttributeValueVo : albumAttributeValueVoList) {
+                AlbumAttributeValue albumAttributeValue = BeanUtil.copyProperties(albumAttributeValueVo, AlbumAttributeValue.class);
                 albumAttributeValue.setAlbumId(albumId);
-                //2.3 保存专辑标签关系
                 albumAttributeValueMapper.insert(albumAttributeValue);
             }
         }
-        //3.封装专辑统计信息,保存4条记录到专辑统计表
-        this.saveAlbumInfoStat(albumId, SystemConstant.ALBUM_STAT_PLAY, 0);
-        this.saveAlbumInfoStat(albumId, SystemConstant.ALBUM_STAT_SUBSCRIBE, 0);
-        this.saveAlbumInfoStat(albumId, SystemConstant.ALBUM_STAT_BUY, 0);
-        this.saveAlbumInfoStat(albumId, SystemConstant.ALBUM_STAT_COMMENT, 0);
 
-        //4.TODO 业务校验 验证专辑内填写相关文本信息是否合法 根据审核结果设置审核状态
+        //3.初始化专辑统计信息
+        this.saveAlbumInfoStat(albumId, ALBUM_STAT_PLAY, 0);
+        this.saveAlbumInfoStat(albumId, ALBUM_STAT_SUBSCRIBE, 0);
+        this.saveAlbumInfoStat(albumId, ALBUM_STAT_BUY, 0);
+        this.saveAlbumInfoStat(albumId, ALBUM_STAT_COMMENT, 0);
 
+        //4.TODO 对专辑中文本内容进行审核  & 索引库ES中新增记录
     }
 
     /**