Sfoglia il codice sorgente

Merge branch 'online' of http://git.dayaedu.com/yonge/cooleshow into courseware_search_1211

zouxuan 6 mesi fa
parent
commit
e10786fc7c
17 ha cambiato i file con 356 aggiunte e 16 eliminazioni
  1. 6 4
      cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetCbsController.java
  2. 16 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetCbsController.java
  3. 17 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetCbsController.java
  4. 0 1
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java
  5. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/CourseCoursewareSearch.java
  6. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  7. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java
  8. 15 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseCoursewareServiceImpl.java
  9. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  10. 137 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  11. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java
  12. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  13. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  14. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java
  15. 112 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/MusicSheetWrapper.java
  16. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseCoursewareMapper.xml
  17. 4 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

+ 6 - 4
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetCbsController.java

@@ -184,10 +184,12 @@ public class MusicSheetCbsController extends BaseController {
         cbsMusicSheet.setBizId(id);
 
         // 设置查询机构 还是平台数据
-        if (StringUtils.isNotBlank(providerType) && SourceTypeEnum.PLATFORM.name().equals(providerType)) {
-            tenantAlbumId = null;
-        } else {
-            tenantAlbumId = StringUtils.isBlank(tenantAlbumId) ? null : "1";
+        if (StringUtils.isBlank(tenantAlbumId) && StringUtils.isNotBlank(providerType)) {
+            if (SourceTypeEnum.PLATFORM.name().equals(providerType)) {
+                tenantAlbumId = null;
+            } else {
+                tenantAlbumId = "1";
+            }
         }
 
         MusicSheetVo.MusicSheetDetail musicSheetDetail = JSON.parseObject(JSON.toJSONString(cbsMusicSheet), MusicSheetVo.MusicSheetDetail.class);

+ 16 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetCbsController.java

@@ -181,4 +181,20 @@ public class MusicSheetCbsController extends BaseController {
         IPage<MusicSheetWrapper.MusicSheetCloud> musicSheetCloudIPage = musicSheetService.cloudPage(query);
         return HttpResponseResult.succeed(PageUtil.pageInfo(musicSheetCloudIPage));
     }
+
+
+    /**
+     * 查询单条
+     */
+    @PostMapping("/detailSmall")
+    @ApiOperation(value = "详情")
+    public HttpResponseResult<MusicSheetWrapper.MusicSheetDetail> detailSmall(@RequestBody MusicSheetWrapper.MusicSheetDetailQuery query) {
+
+        SysUser sysUser = sysUserService.getUser();
+        query.setClient(ClientEnum.STUDENT);
+
+
+        return succeed(musicSheetService.detailSmall(query,sysUser));
+    }
+
 }

+ 17 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetCbsController.java

@@ -33,6 +33,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.validation.Valid;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -187,4 +188,20 @@ public class MusicSheetCbsController extends BaseController {
         IPage<MusicSheetWrapper.MusicSheetCloud> musicSheetCloudIPage = musicSheetService.cloudPage(query);
         return HttpResponseResult.succeed(PageUtil.pageInfo(musicSheetCloudIPage));
     }
+
+
+
+    /**
+     * 查询单条
+     */
+    @PostMapping("/detailSmall")
+    @ApiOperation(value = "详情")
+    public HttpResponseResult<MusicSheetWrapper.MusicSheetDetail> detailSmall(@RequestBody MusicSheetWrapper.MusicSheetDetailQuery query) {
+
+        SysUser sysUser = sysUserService.getUser();
+        query.setClient(ClientEnum.TEACHER);
+
+
+        return succeed(musicSheetService.detailSmall(query,sysUser));
+    }
 }

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

@@ -95,7 +95,6 @@ public class MusicSheetController extends BaseController {
         return succeed(detail);
     }
 
-
     @GetMapping("/detailUse/{id}")
     @ApiOperation(value = "是否可使用")
     public HttpResponseResult<MusicSheetWrapper.MusicUse> detailUse(@ApiParam(value = "曲谱编号", required = true) @PathVariable("id") String id,

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

@@ -43,6 +43,16 @@ public class CourseCoursewareSearch extends QueryInfo{
 	@ApiModelProperty(value = "用户类型 STUDENT,TEACHER ",hidden = true)
 	private ClientEnum clientType;
 
+	private boolean vipFlag;
+
+	public boolean isVipFlag() {
+		return vipFlag;
+	}
+
+	public void setVipFlag(boolean vipFlag) {
+		this.vipFlag = vipFlag;
+	}
+
 	public String getIdAndName() {
 		return idAndName;
 	}

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

@@ -435,4 +435,10 @@ public interface MusicSheetService extends IService<MusicSheet> {
     CbsMusicSheetWrapper.MusicSheet cbsDetail(Long cbsMusicSheetId);
 
     IPage<MusicSheetWrapper.MusicSheetCloud> cloudPage(MusicSheetWrapper.MusicSheetCloudQuery query);
+
+    /**
+     * 获取简单的曲谱详情
+     *
+     */
+    MusicSheetWrapper.MusicSheetDetail detailSmall(MusicSheetWrapper.MusicSheetDetailQuery query,SysUser sysUser);
 }

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java

@@ -250,4 +250,6 @@ public interface UserOrderService extends IService<UserOrder> {
      *  计算畅学卡优惠
      */
     void discountCard(UserPaymentOrderWrapper.OrderGoodsInfo orderGoodsInfo);
+
+    void updateOrderBizId(String subOrderNo, Long groupId);
 }

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

@@ -11,11 +11,9 @@ import com.yonge.cooleshow.biz.dal.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.EVipType;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
-import com.yonge.cooleshow.biz.dal.service.CourseCoursewareService;
-import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
-import com.yonge.cooleshow.biz.dal.service.SysUserService;
-import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
@@ -24,6 +22,7 @@ import com.yonge.toolset.base.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -47,6 +46,9 @@ public class CourseCoursewareServiceImpl extends ServiceImpl<CourseCoursewareDao
     @Resource
     private TenantAlbumMusicService tenantAlbumMusicService;
 
+    @Autowired
+    private TeacherService teacherService;
+
 	@Override
     public CourseCoursewareVo detail(Long id) {
         return baseMapper.detail(id);
@@ -54,6 +56,15 @@ public class CourseCoursewareServiceImpl extends ServiceImpl<CourseCoursewareDao
     
     @Override
     public IPage<CourseCoursewareVo> selectPage(IPage<CourseCoursewareVo> page, CourseCoursewareSearch query){
+
+        // 如果是老师 判断vip
+        if (query.getClientType().equals(ClientEnum.TEACHER)) {
+            TeacherVo detail = teacherService.detail(query.getUserId());
+            if (detail != null) {
+                query.setVipFlag(detail.getUserVip().getVipType() != EVipType.NOT_VIP);
+            }
+        }
+
         IPage<CourseCoursewareVo> courseCoursewareVoIPage = page.setRecords(baseMapper.selectPage(page, query));
         List<CourseCoursewareVo> records = courseCoursewareVoIPage.getRecords();
         if (CollectionUtils.isEmpty(records)) {

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

@@ -2769,6 +2769,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 baseMapper.addCourseGroup(scheduleDto);
                 Long groupId = scheduleDto.getGroupId();
 
+                // 更新订单bizId
+                userOrderService.updateOrderBizId(orderGoodsInfo.getSubOrderNo(), groupId);
+
                 BigDecimal subjectPrice = teacherSubjectPrice.getSubjectPrice();
 
                 //每课实际价格

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

@@ -56,6 +56,7 @@ import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -150,6 +151,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
     @Resource
     private OpenFeignClientConfigProperties openFeignClientConfigProperties;
 
+    @Autowired
+    private SysUserService sysUserService;
+
     @Value("${openfeign-client.app-id:1745637981387108354}")
     public Long applicationId;
 
@@ -1175,7 +1179,39 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
 
     @Override
     public IPage<TeacherMusicSheetVo> selectTeacherPage(IPage<TeacherMusicSheetVo> page, TeacherMusicSheetSearch query) {
-        return page.setRecords(baseMapper.selectTeacherPage(page, query));
+        IPage<TeacherMusicSheetVo> teacherMusicSheetVoIPage = page.setRecords(baseMapper.selectTeacherPage(page, query));
+        List<TeacherMusicSheetVo> records = teacherMusicSheetVoIPage.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+           return teacherMusicSheetVoIPage;
+        }
+        // 曲目ID
+        List<String> musicIds = records.stream().map(TeacherMusicSheetVo::getMusicSheetId).collect(Collectors.toList());
+
+        List<MusicSheetAuthRecord> list = musicSheetAuthRecordService.lambdaQuery()
+                .in(MusicSheetAuthRecord::getMusicSheetId, musicIds)
+                .eq(MusicSheetAuthRecord::getAuditState, AuthStatusEnum.PASS)
+                .orderByAsc(MusicSheetAuthRecord::getId)
+                .list();
+        if (CollectionUtils.isNotEmpty(list)) {
+            Map<Long, MusicSheetAuthRecord> musicSheetAuthRecordMap = list.stream().collect(Collectors.toMap(MusicSheetAuthRecord::getMusicSheetId, Function.identity(), (o, n) -> n));
+            // 审核人 ID集合
+            List<Long> auditUserIds = list.stream().map(MusicSheetAuthRecord::getVerifyUserId).collect(Collectors.toList());
+            Map<Long, com.yonge.cooleshow.biz.dal.entity.SysUser> mapByIds = sysUserService.getMapByIds(auditUserIds);
+            for (TeacherMusicSheetVo record : records) {
+                MusicSheetAuthRecord musicSheetAuthRecord = musicSheetAuthRecordMap.get(Long.parseLong(record.getMusicSheetId()));
+                if (musicSheetAuthRecord != null && musicSheetAuthRecord.getVerifyUserId() != null) {
+                    com.yonge.cooleshow.biz.dal.entity.SysUser sysUser = mapByIds.get(musicSheetAuthRecord.getVerifyUserId());
+                    if (sysUser != null) {
+                        record.setAuditName(sysUser.getUsername());
+                    }
+
+                }
+            }
+        }
+
+
+        return teacherMusicSheetVoIPage;
+
     }
 
     @Override
@@ -2631,7 +2667,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
 
 
     /**
-     * @param musicSheetId 业务端曲目ID
+     *
      * @return CbsMusicSheetWrapper.MusicSheet
      */
     @Override
@@ -2697,6 +2733,105 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         return musicSheetCloudIPage;
     }
 
+
+    /**
+     * 获取简单的曲谱详情
+     *
+     */
+    @Override
+    public MusicSheetWrapper.MusicSheetDetail detailSmall(MusicSheetWrapper.MusicSheetDetailQuery query,SysUser sysUser) {
+        // 曲目信息
+        MusicSheet musicSheet = musicSheetService.getDao().get(query.getMusicSheetId());
+        if (Objects.isNull(musicSheet)) {
+            throw new BizException("曲目信息不存在");
+        }
+        if (musicSheet.getCbsMusicSheetId() ==null) {
+            throw new BizException("曲目信息异常");
+        }
+
+        // 设置查询机构 还是平台数据
+        if (StringUtils.isBlank(query.getTenantAlbumId()) && StringUtils.isNotBlank(query.getProviderType())) {
+            if (SourceTypeEnum.PLATFORM.name().equals(query.getProviderType())) {
+                query.setTenantAlbumId(null);
+            } else {
+                query.setTenantAlbumId("-1");
+            }
+        }
+
+        CbsMusicSheetWrapper.MusicSheet cbsMusicSheet = musicSheetService.cbsDetail(musicSheet.getCbsMusicSheetId());
+        cbsMusicSheet.setBizId(query.getMusicSheetId());
+
+        MusicSheetWrapper.MusicSheetDetail musicSheetDetail = JSON.parseObject(JSON.toJSONString(cbsMusicSheet), MusicSheetWrapper.MusicSheetDetail.class);
+        musicSheetDetail.setId(query.getMusicSheetId().toString());
+
+        MusicSheetDetailVo detail = musicSheetService.detail(query.getMusicSheetId().toString(), sysUser,query.getClient(), query.getTenantAlbumId());
+        if (detail != null) {
+            // 设置曲目付费类型
+            musicSheetDetail.setPaymentType(detail.getPaymentType());
+            // 设置业务端曲目分类
+            musicSheetDetail.setScoreType(detail.getScoreType());
+            musicSheetDetail.setIsConvertibleScore(detail.getNotation() ==YesOrNoEnum.YES);
+            musicSheetDetail.setPlay(detail.getPlay());
+            musicSheetDetail.setMusicPrice(detail.getMusicPrice());
+            musicSheetDetail.setFavorite(detail.getFavorite());
+            musicSheetDetail.setFavoriteCount(detail.getFavoriteCount());
+            musicSheetDetail.setCoursewareId(detail.getCoursewareId());
+            musicSheetDetail.setCoursewareStatus(detail.getCoursewareStatus());
+            musicSheetDetail.setOrderStatus(detail.getOrderStatus());
+            musicSheetDetail.setUserName(detail.getUserName());
+            musicSheetDetail.setMusicSubject(detail.getMusicSubject());
+        }
+        musicSheetDetail.setFavoriteCount(musicSheet.getFavoriteCount());
+        //获取曲目专辑数量
+        musicSheetDetail.setAlbumNums(musicSheetService.getDao().selectMusicAlbumNum(query.getMusicSheetId()));
+        musicSheetDetail.setExquisiteFlag(musicSheet.getExquisiteFlag());
+        musicSheetDetail.setMusicSubject(musicSheet.getMusicSubject());
+        musicSheetDetail.setUserId(musicSheet.getUserId());
+
+        //mp3Url 如果是合奏 取伴奏,
+        if (musicSheetDetail.getMusicSheetType() == EMusicSheetType.CONCERT) {
+            if (CollectionUtils.isNotEmpty(cbsMusicSheet.getMusicSheetAccompanimentList())) {
+                Optional<CbsMusicSheetWrapper.MusicSheetAccompaniment> first = cbsMusicSheet.getMusicSheetAccompanimentList().stream()
+                        .filter(o -> o.getAudioPlayType() == EAudioPlayType.PLAY).collect(Collectors.toList()).stream().findFirst();
+                first.ifPresent(musicSheetAccompaniment -> musicSheetDetail.setMp3Url(musicSheetAccompaniment.getAudioFileUrl()));
+            }
+        } else if (CollectionUtils.isNotEmpty(cbsMusicSheet.getMusicSheetSoundList())) {
+            musicSheetDetail.setMusicSheetSoundList(new ArrayList<>());
+            // 按乐器取原音 有乐器按乐器来,没乐器用声部,都不匹配取第一个
+            List<CbsMusicSheetWrapper.MusicSheetSound> sheetSoundList = cbsMusicSheet.getMusicSheetSoundList().stream()
+                    .filter(o -> o.getAudioPlayType() == EAudioPlayType.PLAY)
+                    .collect(Collectors.toList());
+            if (query.getInstrumentId() !=null) {
+                Optional<CbsMusicSheetWrapper.MusicSheetSound> first =sheetSoundList.stream()
+                        .filter(o->StringUtils.isNotBlank(o.getMusicalInstrumentId()))
+                        .filter(o -> o.getMusicalInstrumentId().equals(query.getInstrumentId().toString())).findFirst();
+                if (first.isPresent()) {
+                    musicSheetDetail.setMp3Url(first.get().getAudioFileUrl());
+                    musicSheetDetail.setMusicSheetSoundList(Collections.singletonList(first.get()));
+                }
+            } else if (query.getSubjectId() != null){
+                Subject subject = subjectService.get(query.getSubjectId());
+                if (subject != null && subject.getInstrumentId() !=null) {
+                    Optional<CbsMusicSheetWrapper.MusicSheetSound> first = sheetSoundList.stream()
+                            .filter(o->StringUtils.isNotBlank(o.getMusicalInstrumentId()))
+                            .filter(o -> o.getMusicalInstrumentId().equals(subject.getInstrumentId().toString())).findFirst();
+                    if (first.isPresent()) {
+                        musicSheetDetail.setMp3Url(first.get().getAudioFileUrl());
+                        musicSheetDetail.setMusicSheetSoundList(Collections.singletonList(first.get()));
+                    }
+                }
+            }
+            if (CollectionUtils.isEmpty(musicSheetDetail.getMusicSheetSoundList()) && CollectionUtils.isNotEmpty(sheetSoundList)) {
+                Optional<CbsMusicSheetWrapper.MusicSheetSound> first = sheetSoundList.stream().findFirst();
+                if (first.isPresent()) {
+                    musicSheetDetail.setMp3Url(first.get().getAudioFileUrl());
+                    musicSheetDetail.setMusicSheetSoundList(Collections.singletonList(first.get()));
+                }
+            }
+        }
+        return musicSheetDetail;
+    }
+
     private Map<Long,MusicSheet> getMapByCbsIds(List<Long> cbsMusicSheetIds) {
         if (CollectionUtils.isEmpty(cbsMusicSheetIds)) {
             return new HashMap<>();

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

@@ -989,6 +989,9 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         }
 
         BigDecimal amount = tenantdivMap.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add);
+        if (amount.compareTo(BigDecimal.ZERO) <= 0) {
+            return;
+        }
         boolean tenantEnterFlag = false;
         //  执行分账
         TenantMember tenantMember = null;
@@ -1044,6 +1047,10 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
     }
 
     private void teacherShare(UserOrderDetailVo userPaymentOrder, BigDecimal shareFee) {
+
+        if (shareFee.compareTo(BigDecimal.ZERO) <= 0) {
+            return;
+        }
         //获取账期时间
         Date accountPeriodTime = userOrderService.getAccountPeriodTime(userPaymentOrder);
         AccountBizTypeEnum bizTypeEnum;

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

@@ -440,6 +440,13 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
         teacherHomeVo.setUserVip(vipCardRecordService.userVipInfo(teacherHomeVo.getUserId(), ClientEnum.TEACHER));
 
+        // 添加乐器ID信息,由声部转为乐器
+        if (StringUtils.isNotBlank(teacherHomeVo.getSubjectId())) {
+            List<Long> subjectIds = Arrays.stream(teacherHomeVo.getSubjectId().split(",")).map(Long::parseLong).collect(Collectors.toList());
+            List<Subject> subjects = subjectService.findBySubjectByIdList(subjectIds);
+            List<String> instrumentIds = subjects.stream().map(Subject::getInstrumentId).filter(Objects::nonNull).map(String::valueOf).collect(Collectors.toList());
+            teacherHomeVo.setInstrumentId(String.join(",", instrumentIds));
+        }
 
         if (YesOrNoEnum.YES.equals(teacher.getMusicianFlag())) {
             teacherHomeVo.setMusicianAuthStatus(AuthStatusEnum.PASS);

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

@@ -1669,4 +1669,13 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         }
     }
 
+    @Override
+    @Transactional
+    public void updateOrderBizId(String subOrderNo, Long groupId) {
+        userOrderDetailService.lambdaUpdate()
+                .eq(UserOrderDetail::getSubOrderNo, subOrderNo)
+                .set(UserOrderDetail::getBizId, groupId)
+                .update();
+    }
+
 }

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java

@@ -106,6 +106,10 @@ public class TeacherHomeVo extends Teacher implements Serializable {
     @ApiModelProperty("客服数量")
     private Integer customerServiceNum;
 
+
+    @ApiModelProperty(value = "总控乐器ID")
+    private String instrumentId;
+
     public String getTenantName() {
         return tenantName;
     }

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

@@ -11,7 +11,6 @@ import com.dayaedu.cbs.common.enums.music.*;
 import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
-import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment;
 import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
@@ -1063,4 +1062,116 @@ public class MusicSheetWrapper {
             return JSON.parseObject(json, MusicSheetQuery.class);
         }
     }
+
+    @Data
+    public  static class MusicSheetDetailQuery {
+
+        @ApiModelProperty("曲谱ID")
+        @NotNull(message = "曲谱ID不能为空")
+        private Long musicSheetId;
+
+        @ApiModelProperty("机构专辑ID")
+        private String tenantAlbumId;
+
+        @ApiModelProperty("数据提供方")
+        private String providerType;
+
+        @ApiModelProperty("乐器ID")
+        private Long instrumentId;
+
+        @ApiModelProperty("声部ID")
+        private Long subjectId;
+
+        private ClientEnum client;
+
+    }
+
+
+    @Data
+    public  static class MusicSheetDetail {
+
+
+        @ApiModelProperty("收藏0:否,1:是")
+        private YesOrNoEnum favorite;
+
+        @ApiModelProperty(value = "收藏数")
+        private Integer favoriteCount;
+
+        @ApiModelProperty("课件id")
+        private Long coursewareId;
+
+        @ApiModelProperty("是否为课件")
+        private YesOrNoEnum coursewareStatus = YesOrNoEnum.NO;
+
+        @ApiModelProperty(value = "精品标志(0:否;1:是)")
+        private YesOrNoEnum exquisiteFlag;
+
+        @ApiModelProperty("订单状态(WAIT_PAY:待支付;PAYING:支付中,PAID:已付款)")
+        private OrderStatusEnum orderStatus;
+
+        @ApiModelProperty("是否能播放(0:否,1:是) 学生端进入小酷Ai判断 试用/完整 播放")
+        private YesOrNoEnum play;
+
+        @ApiModelProperty("单曲专辑数")
+        private Long albumNums;
+
+        @ApiModelProperty(value = "曲谱价格")
+        private java.math.BigDecimal musicPrice;  //曲谱价格
+        @ApiModelProperty(value = "收费类型(FREE:免费;VIP:会员;CHARGE:单曲收费)")
+        private String paymentType;
+
+        @ApiModelProperty("播放模式(MIDI;MP3)")
+        private EMusicPlayMode playMode;
+
+        @ApiModelProperty(value = "MP3原声音频文件URL")
+        private String mp3Url;  //
+
+        @ApiModelProperty("谱面类型")
+        private String scoreType;
+        @ApiModelProperty("上传老师名称")
+        private String userName;
+
+        @ApiModelProperty(value = "曲谱来源(平台用户ID或者是老师ID)")
+        private Long userId;  //曲谱来源(平台用户ID或者是老师ID)
+
+        @ApiModelProperty("声部Id")
+        private String musicSubject;
+        @ApiModelProperty("是否可转谱(0:否; 1:是)")
+        private Boolean isConvertibleScore;
+
+// 上面业务逻辑字段
+
+        @ApiModelProperty("主键")
+        private String id;
+        @ApiModelProperty("曲目封面图")
+        private String musicCover;
+        @ApiModelProperty("曲目名称")
+        private String name;
+
+
+        @ApiModelProperty("是否总谱渲染")
+        private Boolean isScoreRender;
+        @ApiModelProperty("多声轨选择")
+        private String multiTracksSelection;
+        @ApiModelProperty("曲目类型(SINGLE:单曲 CONCERT:合奏)")
+        private EMusicSheetType musicSheetType;
+        @ApiModelProperty("曲目原音")
+        private List<CbsMusicSheetWrapper.MusicSheetSound> musicSheetSoundList;
+
+        @ApiModelProperty("五线谱PDF文件")
+        private String musicPdfUrl;
+        @ApiModelProperty("首调PDF文件")
+        private String firstPdfUrl;
+        @ApiModelProperty("固定调PDF文件")
+        private String jianPdfUrl;
+        @ApiModelProperty("演奏是否默认展示总谱渲染")
+        private Boolean defaultScoreRender;
+
+        @ApiModelProperty("来源类型/作者属性(PLATFORM: 平台; ORG: 机构; PERSON: 个人)")
+        private EMusicSourceType sourceType;
+        @ApiModelProperty("作曲人/音乐人")
+        private String composer;
+
+
+    }
 }

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

@@ -63,7 +63,7 @@
                 or  EXISTS (select mspr.music_sheet_id_ from music_sheet_purchase_record mspr
                 left join album_music_relate amr on amr.album_id_ = mspr.music_sheet_id_
                 where mspr.student_id_ = t.user_id_ and mspr.order_status_ = 'PAID' and mspr.purchase_type_ = 'ALBUM' and amr.music_sheet_id_ = ms.id_ and mspr.client_type_ = 'TEACHER' )
-                or (ms.payment_type_ like '%VIP%' and  EXISTS(select 1 from teacher t1 where t1.user_id_ = t.user_id_ and t1.membership_end_time_ > now()))
+                or (ms.payment_type_ like '%VIP%' and  #{param.vipFlag} = 1)
                 )
             </if>
         </where>

+ 4 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -722,10 +722,10 @@
         ,ms.music_price_ as musicPrice
         ,ms.create_time_ as createTime
         ,ms.audit_status_ as auditStatus
-        ,su.username_ as auditName
+<!--        ,su.username_ as auditName-->
         from music_sheet ms
-        left join music_sheet_auth_record msar on ms.id_ = msar.music_sheet_id_
-        left join sys_user su on msar.verify_user_id_ = su.id_
+<!--        left join music_sheet_auth_record msar on ms.id_ = msar.music_sheet_id_-->
+<!--        left join sys_user su on msar.verify_user_id_ = su.id_-->
         <where>
             <if test="param.idAndName != null and param.idAndName != ''">
                 and (ms.id_ like concat('%',#{param.idAndName} ,'%')
@@ -734,6 +734,7 @@
             </if>
             <if test="param.teacherId != null">
                 and ms.create_by_ = #{param.teacherId} and ms.source_type_ = 'TEACHER'
+                and ms.audit_status_ = 'PASS'
             </if>
             <if test="param.startTime != null">
                 and ms.create_time_ &gt; #{param.startTime}