Quellcode durchsuchen

学生端、老师端付费专辑显示调整

Eric vor 2 Jahren
Ursprung
Commit
a8a630c6af

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.*;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -162,4 +163,11 @@ public interface MusicSheetDao extends BaseMapper<MusicSheet> {
      */
     List<MusicSheetDetailVo> auditDetailList(@Param("originalMusicSheetId") Long originalMusicSheetId, @Param(
             "authMusicSheetId") Long authMusicSheetId);
+
+    /**
+     * 单曲数量统计
+     * @param musicIds 单曲ID
+     * @return List<StatGroupWrapper>
+     */
+    List<StatGroupWrapper> selectMusicAlbumStatInfo(@Param("musicIds") List<Long> musicIds);
 }

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java

@@ -53,6 +53,9 @@ public class MusicAlbumSearch extends QueryInfo{
     @ApiModelProperty("声部id,多个逗号隔开")
     private String subjectIds;
 
+    @ApiModelProperty("曲目ID")
+    private Long musicId;
+
     @ApiModelProperty(hidden = true)
     private List<Long> subjectIdList;
 
@@ -157,4 +160,12 @@ public class MusicAlbumSearch extends QueryInfo{
 	public void setClientId(String clientId) {
 		this.clientId = clientId;
 	}
+
+    public Long getMusicId() {
+        return musicId;
+    }
+
+    public void setMusicId(Long musicId) {
+        this.musicId = musicId;
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import java.text.MessageFormat;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -148,6 +149,12 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         }
 
         IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectAlbumDetailPage(page,query);
+
+        // 专辑曲目付费方式
+        List<String> paymentTypes = musicSheetVoIPage.getRecords().stream()
+                .flatMap(x -> Arrays.stream(x.getPaymentType().split(","))).distinct().collect(Collectors.toList());
+        albumDetailVo.setMusicPaymentTypes(paymentTypes);
+
         albumDetailVo.setMusicSheetList(PageUtil.pageInfo(musicSheetVoIPage));
 
         albumDetailVo.setMusicSheetCount((int) musicSheetVoIPage.getTotal());

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

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.*;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
+import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
 import com.yonge.cooleshow.common.enums.ActivityShareEnum;
 import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
@@ -31,13 +32,13 @@ import com.yonge.toolset.utils.easyexcel.ErrMsg;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 import com.yonge.toolset.utils.easyexcel.ExcelException;
 
+import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 
@@ -318,6 +319,21 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
     @Override
     public IPage<MusicSheetVo> selectStudentPage(IPage<MusicSheetVo> page, StudentMusicSheetSearch query, ClientEnum clientType) {
     	List<MusicSheetVo> records = baseMapper.selectStudentMusicPage(page, query, clientType);
+
+        if (CollectionUtils.isNotEmpty(records)) {
+
+            // 统计单曲归属专辑数
+            List<Long> musicIds = records.stream()
+                    .map(MusicSheet::getId).distinct().collect(Collectors.toList());
+
+            Map<Long, Integer> collect = getBaseMapper().selectMusicAlbumStatInfo(musicIds).stream()
+                    .collect(Collectors.toMap(StatGroupWrapper::getId, StatGroupWrapper::getTotal, (o, n) -> n));
+
+            for (MusicSheetVo item : records) {
+
+                item.setAlbumNums(collect.getOrDefault(item.getId(), 0));
+            }
+        }
     	
     	/*if(query.getMyself() != null && query.getMyself() == false){//首页
         	if(records == null || records.size() == 0){

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/AlbumDetailVo.java

@@ -62,6 +62,9 @@ public class AlbumDetailVo {
     @ApiModelProperty("专辑价格 ")
     private String paymentType;
 
+    @ApiModelProperty("专辑曲目付费方式")
+    private List<String> musicPaymentTypes;
+
 
     public String getSubjectId() {
         return subjectId;
@@ -201,4 +204,12 @@ public class AlbumDetailVo {
     public void setPaymentType(String paymentType) {
         this.paymentType = paymentType;
     }
+
+    public List<String> getMusicPaymentTypes() {
+        return musicPaymentTypes;
+    }
+
+    public void setMusicPaymentTypes(List<String> musicPaymentTypes) {
+        this.musicPaymentTypes = musicPaymentTypes;
+    }
 }

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetVo.java

@@ -38,6 +38,8 @@ public class MusicSheetVo extends MusicSheet {
     @ApiModelProperty("专辑中曲目的排序号")
     private Integer albumSortNumber;  //排序号
 
+    @ApiModelProperty("单曲专辑数")
+    private Integer albumNums;
 
     public Integer getAlbumSortNumber() {
         return albumSortNumber;
@@ -102,4 +104,12 @@ public class MusicSheetVo extends MusicSheet {
     public void setPlay(YesOrNoEnum play) {
         this.play = play;
     }
+
+    public Integer getAlbumNums() {
+        return albumNums;
+    }
+
+    public void setAlbumNums(Integer albumNums) {
+        this.albumNums = albumNums;
+    }
 }

+ 3 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicAlbumMapper.xml

@@ -208,6 +208,9 @@
        and amr.album_id_ = t.id_) as musicSheetCount
         ,if(t2.num >0,t2.num,0) as albumFavoriteCount
         from music_album t
+        <if test="query.musicId != null">
+            JOIN album_music_relate t1 ON (t.id_ = t1.album_id_ AND t1.music_sheet_id_ = #{query.musicId})
+        </if>
         left join (select count(1) as num,af.album_id_ from album_favorite af
             left join sys_user su on (af.user_id_ = su.id_ <if test="clientType != null"> AND af.client_type_ = #{clientType} </if>)
             where su.del_flag_ = 0 group by af.album_id_

+ 13 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -722,4 +722,17 @@
 
         order by msar.id_ desc
     </select>
+
+    <!--单曲专辑数量统计-->
+    <select id="selectMusicAlbumStatInfo" resultType="com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper">
+        SELECT t1.music_sheet_id_ AS id, COUNT(DISTINCT t1.id_) AS total
+        FROM album_music_relate t1 JOIN music_sheet t2 ON (t1.music_sheet_id_ = t2.id_)
+        <where>
+            <if test="musicIds != null">
+                AND t1.music_sheet_id_ IN (<foreach collection="musicIds" separator="," item="item">#{item}</foreach>)
+            </if>
+        </where>
+        GROUP BY t1.music_sheet_id_
+    </select>
+    <!--单曲专辑数量统计-->
 </mapper>