Browse Source

云教练关联曲目

刘俊驰 1 năm trước cách đây
mục cha
commit
a41397dc55

+ 1 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java

@@ -330,7 +330,7 @@ public class MusicSheetController extends BaseController {
     @GetMapping(value="/queryRelatedList")
     public HttpResponseResult<PageInfo<MusicSheetVo>> queryRelatedList(MusicSheetRelatedQueryInfo queryInfo) {
     	
-    	IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.queryRelatedList(PageUtil.getPage(queryInfo),queryInfo.getAlbumId(), queryInfo.getMusicSheetId());
+    	IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.queryRelatedList(PageUtil.getPage(queryInfo),queryInfo);
         return succeed(PageUtil.pageInfo(musicSheetVoIPage));
     }
 

+ 1 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -238,7 +238,7 @@ public class MusicSheetController extends BaseController {
     @GetMapping(value="/queryRelatedList")
     public HttpResponseResult<PageInfo<MusicSheetVo>> queryRelatedList(MusicSheetRelatedQueryInfo queryInfo) {
     	
-    	IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.queryRelatedList(PageUtil.getPage(queryInfo),queryInfo.getAlbumId(), queryInfo.getMusicSheetId());
+    	IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.queryRelatedList(PageUtil.getPage(queryInfo),queryInfo);
         return succeed(PageUtil.pageInfo(musicSheetVoIPage));
     }
 

+ 1 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/website/controller/MusicSheetController.java

@@ -177,7 +177,7 @@ public class MusicSheetController extends BaseController {
     @GetMapping(value="/queryRelatedList")
     public HttpResponseResult<PageInfo<MusicSheetVo>> queryRelatedList(MusicSheetRelatedQueryInfo queryInfo) {
     	
-    	IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.queryRelatedList(PageUtil.getPage(queryInfo),queryInfo.getAlbumId(), queryInfo.getMusicSheetId());
+    	IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.queryRelatedList(PageUtil.getPage(queryInfo), queryInfo);
         return succeed(PageUtil.pageInfo(musicSheetVoIPage));
     }
 }

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

@@ -8,7 +8,17 @@ public class MusicSheetRelatedQueryInfo extends QueryInfo {
 	
 	private Long musicSheetId;
 
-	public Long getAlbumId() {
+    private Long subjectId;
+
+    public Long getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Long subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public Long getAlbumId() {
 		return albumId;
 	}
 

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

@@ -106,6 +106,29 @@ public class MusicSheetSearch  extends QueryInfo{
     @ApiModelProperty("指定关联专辑的曲目排在最后")
     private Long sortByAlbumIdDesc;
 
+
+    @ApiModelProperty(value = "不包含曲目ID",hidden = true)
+    private List<Long> excludeMusicIds;
+
+    @ApiModelProperty(value = "必须要匹配声部ID")
+    private List<Long> mustMatchSubjectIds;
+
+    public List<Long> getExcludeMusicIds() {
+        return excludeMusicIds;
+    }
+
+    public void setExcludeMusicIds(List<Long> excludeMusicIds) {
+        this.excludeMusicIds = excludeMusicIds;
+    }
+
+    public List<Long> getMustMatchSubjectIds() {
+        return mustMatchSubjectIds;
+    }
+
+    public void setMustMatchSubjectIds(List<Long> mustMatchSubjectIds) {
+        this.mustMatchSubjectIds = mustMatchSubjectIds;
+    }
+
     public SourceTypeEnum getProviderType() {
         return providerType;
     }

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

@@ -45,7 +45,7 @@ public interface MusicSheetService extends IService<MusicSheet> {
 
     IPage<MusicSheetVoResult> selectCbsPage(IPage<MusicSheetVo> page, MusicSheetSearch query);
     
-    IPage<MusicSheetVo> queryRelatedList(IPage<MusicSheetVo> page, Long albumId, Long musicSheetId);
+    IPage<MusicSheetVo> queryRelatedList(IPage<MusicSheetVo> page, MusicSheetRelatedQueryInfo queryInfo);
 
     /**
      * 曲目状态修改 启用、停用

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

@@ -280,6 +280,12 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
             throw new BizException("会员卡已下架");
         }
 
+        // 判断会员剩余天数是否改变
+        VipCardRecordWrapper.UserVip userVip = vipCardRecordService.UserVipInfo(orderGoodsInfo.getUserId(), orderGoodsInfo.getPaymentClient());
+        if (!userVip.getVipEndDays().equals(orderGoodsInfo.getVipEndDays())) {
+            throw new BizException(999,"您当前VIP天数更新,请刷新后尝试");
+        }
+
         BigDecimal couponAmount = BigDecimal.ZERO;
         ActivityPlanVo activityPlanVo = activityPlanService.detail(orderGoodsInfo.getActivityId());
 

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

@@ -255,24 +255,34 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
     }
 
     @Override
-    public IPage<MusicSheetVo> queryRelatedList(IPage<MusicSheetVo> page, Long albumId, Long musicSheetId) {
+    public IPage<MusicSheetVo> queryRelatedList(IPage<MusicSheetVo> page, MusicSheetRelatedQueryInfo queryInfo) {
 
-        if (albumId == null) {
+        if (queryInfo.getAlbumId() == null) {
             // 查询专辑下的所有曲目
 
-            MusicSheet musicSheet = baseMapper.selectById(musicSheetId);
+            MusicSheet musicSheet = baseMapper.selectById(queryInfo.getMusicSheetId());
 
             if (musicSheet != null) {
                 MusicAlbumDetailSearch query = new MusicAlbumDetailSearch();
                 query.setMusicTagIds(musicSheet.getMusicTag());
                 query.setAuditVersion(musicSheet.getAuditVersion());
+                query.setMusicSheetType(musicSheet.getMusicSheetType());
+                if (queryInfo.getSubjectId() !=null) {
+                    query.setSubjectIdList(Lists.newArrayList(queryInfo.getSubjectId()));
+                }
+                query.setExcludeMusicIds(Lists.newArrayList(queryInfo.getMusicSheetId()));
+                if (StringUtils.isNotBlank(musicSheet.getMusicSubject())) {
+                    List<Long> subjectIds = Arrays.stream(musicSheet.getMusicSubject().split(",")).filter(StringUtils::isNotBlank).map(Long::parseLong).collect(Collectors.toList());
+                    query.setMustMatchSubjectIds(subjectIds);
+                }
                 return page.setRecords(baseMapper.selectPage(page, query));
             }
         } else {
             // 查询带有当前曲目标签的所有曲目
             MusicAlbumDetailSearch query = new MusicAlbumDetailSearch();
-            query.setId(albumId);
+            query.setId(queryInfo.getAlbumId());
             query.setType(2);
+            query.setExcludeMusicIds(Lists.newArrayList(queryInfo.getMusicSheetId()));
             return page.setRecords(baseMapper.selectAlbumDetailPage(page, query));
         }
         return null;
@@ -724,6 +734,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
                 detail.setOrderNo(musicSheetPurchaseRecord.getOrderNo());
                 if (OrderStatusEnum.PAID.getCode().equals(musicSheetPurchaseRecord.getOrderStatus().getCode())) {
                     detail.setPlay(YesOrNoEnum.YES);
+                    detail.setBuyed(true);
                     return;
                 }
             }
@@ -777,6 +788,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
                     .count();
             if (count > 0) {
                 detail.setPlay(YesOrNoEnum.YES);
+                detail.setBuyed(true);
                 return;
             }
         }
@@ -790,7 +802,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
                 List<Long> musicSheetIds = tenantAlbumMusicService.getMusicIdsByIds(tenantAlbumIds);
                 if (musicSheetIds.contains(detail.getId())) {
                     detail.setPlay(YesOrNoEnum.YES);
-                    return;
+                    detail.setBuyed(true);
                 }
             }
         } else if (ClientEnum.TEACHER == userType) {
@@ -800,7 +812,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
                 List<Long> musicSheetIds = tenantAlbumMusicService.getMusicIdsByTenantIds(teacher.getTenantId());
                 if (musicSheetIds.contains(detail.getId())) {
                     detail.setPlay(YesOrNoEnum.YES);
-                    return;
+                    detail.setBuyed(true);
                 }
             }
         }

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetDetailVo.java

@@ -28,6 +28,8 @@ public class MusicSheetDetailVo extends MusicSheet {
     @ApiModelProperty("是否能播放(0:否,1:是) 学生端进入小酷Ai判断 试用/完整 播放")
     private YesOrNoEnum play;
 
+    @ApiModelProperty("是否购买(0:否,1:是)")
+    private Boolean buyed = false;
 
     @ApiModelProperty("收藏0:否,1:是")
     private YesOrNoEnum favorite;

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/UserPaymentOrderWrapper.java

@@ -846,6 +846,8 @@ public class UserPaymentOrderWrapper {
         @ApiModelProperty("业务内容 ")
         private Object bizContent;
 
+        @ApiModelProperty(value = "vip剩余天数")
+        private Integer vipEndDays;
 
         @ApiModelProperty("商品数量 ")
         private Integer goodNum;

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

@@ -139,6 +139,18 @@
         </if>
         <where>
             1=1
+            <if test="param.excludeMusicIds != null and param.excludeMusicIds.size() != 0">
+                and t.id_ not in
+                <foreach collection="param.excludeMusicIds" separator="," item="item" open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="param.mustMatchSubjectIds != null and param.mustMatchSubjectIds.size() != 0">
+                and
+                <foreach collection="param.mustMatchSubjectIds" separator="and" item="item" open="(" close=")">
+                    find_in_set(#{item},t.music_subject_)
+                </foreach>
+            </if>
             <include refid="QueryInfo"/>
             <if test="param.auditStatus == null">
                 AND t.cbs_music_sheet_id_ IS NOT NULL
@@ -277,6 +289,12 @@
             <if test="param.chargeType != null">
                 and t.charge_type_ = #{param.chargeType}
             </if>
+            <if test="param.excludeMusicIds != null and param.excludeMusicIds.size() != 0">
+                and t.id_ not in
+                <foreach collection="param.excludeMusicIds" separator="," item="item" open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
             <if test="param.musicTagIds != null and param.musicTagIds != ''">
                 and
                 <foreach collection="param.musicTagIdList" separator="or" item="item"  open="(" close=")" >