|
@@ -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中新增记录
|
|
|
}
|
|
|
|
|
|
/**
|