Browse Source

调整专辑付费流程

Eric 2 years ago
parent
commit
72b6081dc3

+ 9 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityEvaluationRecordServiceImpl.java

@@ -277,15 +277,19 @@ public class ActivityEvaluationRecordServiceImpl extends ServiceImpl<ActivityEva
             // 学生声部信息
             Student student = studentMapper.selectOne(Wrappers.<Student>lambdaQuery().eq(Student::getUserId, userId));
 
-            long subjectId = 0;
-            if (Objects.nonNull(student.getSubjectId())) {
-                subjectId = Long.parseLong(student.getSubjectId().split(",")[0]);
+            String userSubject = "";
+            if (Objects.nonNull(student) && Objects.nonNull(student.getSubjectId())) {
+                long subjectId = Long.parseLong(student.getSubjectId().split(",")[0]);
+
+                Subject subject = subjectService.get(subjectId);
+
+                // 学生声部信息
+                userSubject = Optional.ofNullable(subject).map(Subject::getName).orElse("");
             }
-            Subject subject = subjectService.get(subjectId);
 
             if (Objects.nonNull(userRanking)) {
 
-                userRanking.setUserSubject(Optional.ofNullable(subject).map(Subject::getName).orElse(""));
+                userRanking.setUserSubject(userSubject);
             }
 
         } else {

+ 15 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import java.text.MessageFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -130,7 +131,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
             query.setSubjectIds(musicAlbum.getSubjectId());
 
             // 判断专辑收费类型;非免费类型,只能添加平台曲目
-            if (!ChargeTypeEnum.FREE.match(musicAlbum.getPaymentType())) {
+            /*if (!ChargeTypeEnum.FREE.match(musicAlbum.getPaymentType())) {
 
                 // 曲目来源
                 query.setSourceType(SourceTypeEnum.PLATFORM);
@@ -143,7 +144,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
                     query.setChargeType(ChargeTypeEnum.valueOf(musicAlbum.getPaymentType()));
                 }
 
-            }
+            }*/
         }
 
         IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectAlbumDetailPage(page,query);
@@ -162,7 +163,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         }
 
         // 付费专辑,需要校验是否已存在购买记录
-        if (!ChargeTypeEnum.VIP.match(musicAlbum.getPaymentType())) {
+        /*if (!ChargeTypeEnum.VIP.match(musicAlbum.getPaymentType())) {
 
             // 统计付费专辑的购买数量
             Integer count = musicSheetPurchaseRecordMapper.selectCount(Wrappers.<MusicSheetPurchaseRecord>lambdaQuery()
@@ -172,7 +173,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
             if (Optional.ofNullable(count).orElse(0) > 0) {
                 throw new BizException("当前专辑已有购买记录");
             }
-        }
+        }*/
 
         List<Long> musicSheetIdList = StringUtil.toLongList(musicSheetIds);
         return albumMusicRelateService.delMusicSheet(albumId,musicSheetIdList);
@@ -238,14 +239,20 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
 
         // 非付费类型,已添加曲目或者已购买,不允许修改付费方式
         MusicAlbum album = getById(musicAlbum.getId());
+        if (Objects.isNull(album)) {
+            throw new BizException("无效的专辑ID");
+        }
+
+        // 专辑从免费修改为付费方式,需要判断当前免费单曲数量
         if (Objects.nonNull(musicAlbum.getPaymentType())
+                && ChargeTypeEnum.FREE.match(album.getPaymentType())
                 && !album.getPaymentType().equals(musicAlbum.getPaymentType())) {
 
-            Integer count = albumMusicRelateMapper.selectCount(Wrappers.<AlbumMusicRelate>lambdaQuery()
-                    .eq(AlbumMusicRelate::getAlbumId, musicAlbum.getId()));
+            Map<Long, Integer> collect = getBaseMapper().selectAlbumMusicSheetStatInfo(album.getId(), ChargeTypeEnum.FREE).stream()
+                    .collect(Collectors.toMap(StatGroupWrapper::getId, StatGroupWrapper::getTotal, (o, n) -> n));
 
-            if (Optional.ofNullable(count).orElse(0) > 0) {
-                throw new BizException("当前专辑已添加曲目");
+            if (collect.getOrDefault(album.getId(), 0) > 2) {
+                throw new BizException(MessageFormat.format("当前专辑免费单曲数为 {0}, 已超过免费数量", collect.get(album.getId())));
             }
         }