刘俊驰 1 rok temu
rodzic
commit
1e19d13719

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/TenantAlbumMusicMapper.java

@@ -32,4 +32,9 @@ public interface TenantAlbumMusicMapper extends BaseMapper<TenantAlbumMusic> {
      * @param tenantId 机构ID
      */
     List<Long> selectMusicIdsByTenantIds(@Param("tenantId") Long tenantId);
+
+    /**
+     * 获取专辑可使用的曲目
+     */
+    List<TenantAlbumMusic> getByAlbumAndEnable(@Param("tenantAlbumIds") List<Long> tenantAlbumIds);
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java

@@ -256,7 +256,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
 //                    .multiply(BigDecimal.valueOf(tenantAlbumContent.getBuyMultiple())).setScale(2, RoundingMode.HALF_UP);
 
             tenantdivMap.merge(tenantAlbumContent.getTenantId(), userPaymentOrder.getActualPrice(), BigDecimal::add);
-//            tenantdivMap.merge(-1L, tenantAmount, BigDecimal::subtract);
+            tenantdivMap.put(-1L, BigDecimal.ZERO);
 
         } else {
 

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumServiceImpl.java

@@ -265,7 +265,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                 // 判断购买次数
                 if (tenantGroupAlbum.getBuyTimesFlag()) {
                     List<Long> studentTenantAlbumNum = userOrderDao.getStudentTenantAlbumNum(student.getUserId(), Lists.newArrayList(tenantGroupAlbum.getId()));
-                    if (CollectionUtils.isNotEmpty(studentTenantAlbumNum) && studentTenantAlbumNum.size() >tenantGroupAlbum.getBuyTimes()) {
+                    if (CollectionUtils.isNotEmpty(studentTenantAlbumNum) && studentTenantAlbumNum.size() >= tenantGroupAlbum.getBuyTimes()) {
                         log.error("订单创建前检测,学生购买机构专辑,机构小组专辑购买次数超过限制,userId={},tenantGroupAlbumId={},buyTimes={}", orderGoodsInfo.getUserId(), orderGoodsInfo.getTenantGroupAlbumId(), tenantGroupAlbum.getBuyTimes());
                         throw new BizException("购买次数超过限制");
                     }
@@ -312,7 +312,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                         orderGoodsInfo.getBizId(), tenantAlbumContent.getPurchaseType());
                     throw new BizException("专辑不支持当前周期");
                 }
-                Optional<TenantAlbumWrapper.TenantAlbumPurchaseJson> first = tenantAlbumPurchaseJsons.stream().filter(o -> o.getPurchaseType().equals(tenantAlbumContent.getPurchaseType())).findFirst();
+                Optional<TenantAlbumWrapper.TenantAlbumPurchaseJson> first = tenantAlbumPurchaseJsons.stream().filter(o -> o.getType().equals(tenantAlbumContent.getPurchaseType())).findFirst();
                 if (!first.isPresent()) {
                     log.error("订单创建前检测,机构购买机构专辑,专辑周期不支持,userId={},bizId={},purchaseType={}", orderGoodsInfo.getUserId(),
                         orderGoodsInfo.getBizId(), tenantAlbumContent.getPurchaseType());
@@ -324,7 +324,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                 actualPrice = tenantAlbumPurchaseJson.getPrice();
                 userOrderDetail.setMerchId(0L);
                 tenantAlbumContent.setTenantId(tenantStaff.getTenantId());
-                tenantAlbumContent.setBuyCycle(tenantAlbumContent.getBuyCycle()*tenantAlbumContent.getBuyMultiple());
+                tenantAlbumContent.setBuyCycle(tenantAlbumContent.getBuyMultiple());
                 break;
             }
         }

+ 30 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantGroupAlbumServiceImpl.java

@@ -5,9 +5,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.UserOrderDao;
 import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.entity.TenantAlbumMusic;
 import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.SubjectTypeEnum;
+import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMusicMapper;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
 import com.yonge.cooleshow.biz.dal.service.TenantStaffService;
 import com.yonge.toolset.base.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
@@ -20,6 +24,7 @@ import com.yonge.cooleshow.biz.dal.mapper.TenantGroupAlbumMapper;
 import com.yonge.cooleshow.biz.dal.service.TenantGroupAlbumService;
 
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -39,6 +44,9 @@ public class TenantGroupAlbumServiceImpl extends ServiceImpl<TenantGroupAlbumMap
     @Autowired
     private UserOrderDao userOrderDao;
 
+    @Autowired
+    private TenantAlbumMusicMapper tenantAlbumMusicMapper;
+
 	/**
      * 查询详情
      * @param id 详情ID
@@ -111,6 +119,28 @@ public class TenantGroupAlbumServiceImpl extends ServiceImpl<TenantGroupAlbumMap
         if (CollectionUtils.isEmpty(buyAlbumInfo)) {
             return buyAlbumInfo;
         }
+        // 查询专辑可用的分类的曲目数量
+        // 机构专辑ID集合
+        List<Long> tenantAlbumIds = buyAlbumInfo.stream().map(TenantGroupAlbumWrapper.BuyTenantAlbum::getId).collect(Collectors.toList());
+
+        List<TenantAlbumMusic> list = tenantAlbumMusicMapper.getByAlbumAndEnable(tenantAlbumIds);
+        // 根据专辑ID分组 在根据声部分类 分组
+        Map<Long, Map<SubjectTypeEnum, Long>> map = list.stream()
+            .collect(Collectors.groupingBy(TenantAlbumMusic::getTenantAlbumId, Collectors.groupingBy(TenantAlbumMusic::getSubjectType,Collectors.counting())));
+
+        for (TenantGroupAlbumWrapper.BuyTenantAlbum buyTenantAlbum : buyAlbumInfo) {
+            Map<SubjectTypeEnum, Long> subjectTypeEnumLongMap = map.get(buyTenantAlbum.getId());
+            if (subjectTypeEnumLongMap != null) {
+                buyTenantAlbum.setMusicCounts(subjectTypeEnumLongMap.getOrDefault(SubjectTypeEnum.MUSIC,0L).intValue());
+                buyTenantAlbum.setEnsembleCounts(subjectTypeEnumLongMap.getOrDefault(SubjectTypeEnum.ENSEMBLE,0L).intValue());
+                buyTenantAlbum.setSubjectCounts(subjectTypeEnumLongMap.getOrDefault(SubjectTypeEnum.SUBJECT,0L).intValue());
+            } else {
+                buyTenantAlbum.setMusicCounts(0);
+                buyTenantAlbum.setEnsembleCounts(0);
+                buyTenantAlbum.setSubjectCounts(0);
+            }
+            buyTenantAlbum.setMusicNum(buyTenantAlbum.getMusicCounts() + buyTenantAlbum.getEnsembleCounts()+buyTenantAlbum.getSubjectCounts());
+        }
 
         // 如果学生购买 判断购买次数
         if (clientType == ClientEnum.STUDENT) {

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantAlbumWrapper.java

@@ -381,7 +381,7 @@ public class TenantAlbumWrapper {
     public static class TenantAlbumPurchaseJson {
 
         @ApiModelProperty("采购周期类型")
-        private String purchaseType;
+        private String type;
 
         @ApiModelProperty("金额")
         private BigDecimal price;

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantGroupAlbumWrapper.java

@@ -227,6 +227,15 @@ public class TenantGroupAlbumWrapper {
         private String purchaseJson;
 
 
+        @ApiModelProperty("合奏曲目数量")
+        private Integer EnsembleCounts;
+
+        @ApiModelProperty("小曲目数量")
+        private Integer MusicCounts;
+
+        @ApiModelProperty("声部曲目数")
+        private Integer SubjectCounts;
+
         @ApiModelProperty("机构小组专辑ID ,学生购买需传参")
         private Long tenantGroupAlbumId;
 

+ 14 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantAlbumMusicMapper.xml

@@ -30,7 +30,7 @@
 		FROM music_sheet m
         left join tenant_album_music t on t.music_sheet_id_ = m.id_
         <where>
-            m.state_ = true and m.del_flag_ = false and t.del_flag_ = 0
+            m.state_ = true and m.del_flag_ = 0 and t.del_flag_ = 0
             <if test="param.musicTagId != null ">
                 and find_in_set(#{param.musicTagId},m.music_subject_)
             </if>
@@ -87,4 +87,17 @@
         left join music_sheet t2 on t2.id_ = t.music_sheet_id_
         where t2.state_ = 1 and t2.del_flag_ = 0 and t2.audit_version_ = 0 and t1.tenant_id_ = #{tenantId}
     </select>
+
+    <select id="getByAlbumAndEnable" resultType="com.yonge.cooleshow.biz.dal.entity.TenantAlbumMusic">
+        select
+        t.*
+        from tenant_album_music t
+        inner join music_sheet t1 on t.music_sheet_id_ = t1.id_
+        where
+        t.del_flag_ = 0 and t1.state_ = 1 and t1.del_flag_ = 0
+        and t.tenant_album_id_ in
+        <foreach collection="tenantAlbumIds" item="item" index="index" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+    </select>
 </mapper>