Browse Source

解决冲突

liweifan 2 years ago
parent
commit
733240f55c
27 changed files with 679 additions and 270 deletions
  1. 11 8
      cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  2. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupDao.java
  3. 10 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicFavoriteDao.java
  4. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java
  5. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/StudentMusicSheetSearch.java
  6. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberService.java
  7. 0 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java
  8. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicFavoriteService.java
  9. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  10. 22 35
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberAuditServiceImpl.java
  11. 17 13
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberServiceImpl.java
  12. 11 29
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java
  13. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicFavoriteServiceImpl.java
  14. 60 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  15. 6 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysUserServiceImpl.java
  16. 23 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/AlbumDetailVo.java
  17. 47 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetWebsiteDetailVo.java
  18. 109 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherMusicSheetListVo.java
  19. 10 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  20. 5 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicFavoriteMapper.xml
  21. 3 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  22. 1 39
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/MusicAlbumController.java
  23. 36 119
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/MusicSheetController.java
  24. 89 0
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenMusicAlbumController.java
  25. 115 0
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenMusicSheetController.java
  26. 12 0
      cooleshow-user/user-website/src/main/resources/bootstrap-dev.yml
  27. 61 0
      cooleshow-user/user-website/src/main/resources/logback-spring.xml

+ 11 - 8
cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -69,14 +69,17 @@
 						and if(sni.offline_time_ is not null,sni.offline_time_ >= now(),1=1)
 					</if>
 				</if>
-				<choose>
-					<when test="platformType == 'WEBSITE'">
-						and sni.platform_type_ = #{platformType}
-					</when>
-					<when test="platformType == 'STUDENT'">
-						and sni.platform_type_ = #{platformType}
-					</when>
-				</choose>
+				<if test="type == 4">
+					<choose>
+						<when test="platformType == 'WEBSITE'">
+							and sni.platform_type_ = #{platformType}
+						</when>
+						<when test="platformType == 'STUDENT'">
+							and sni.platform_type_ = #{platformType}
+						</when>
+					</choose>
+				</if>
+
 
 			</if>
 			<if test="excludeIds!=null and excludeIds.size()>0">

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupDao.java

@@ -20,5 +20,8 @@ public interface ImGroupDao extends BaseMapper<ImGroup> {
 
     //获取指定用户的群聊列表
     List<ImGroupResultDto> queryTeacherFun(@Param("imGroupDto") ImGroupSearchDto imGroupSearchDto);
+
+    //更新群成员数量
+    void updateMemberNum(@Param("groupId") String groupId);
 }
 

+ 10 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicFavoriteDao.java

@@ -2,13 +2,22 @@ package com.yonge.cooleshow.biz.dal.dao;
 
 import com.yonge.cooleshow.biz.dal.entity.MusicFavorite;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * MusicFavoriteDao数据库访问类
+ *
  * @author yzp
- * @date 2022-03-25 23:46:28
  * @version v1.0
+ * @date 2022-03-25 23:46:28
  **/
 public interface MusicFavoriteDao extends BaseMapper<MusicFavorite> {
 
+    /**
+     * 曲目收藏数
+     *
+     * @param musicSheetId 曲目id
+     * @return
+     */
+    long selectMusicSheetFavoriteNum(@Param("musicSheetId") Long musicSheetId);
 }

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

@@ -37,10 +37,10 @@ public class MusicAlbumSearch extends QueryInfo{
     @ApiModelProperty(value = "排序规则,1:按收藏人数倒叙",hidden = true)
     private Integer sortBy;
 
-    @ApiModelProperty(value = "版本号",required = true)
+    @ApiModelProperty(value = "版本号")
     private String version;
 
-    @ApiModelProperty(value = "平台",required = true)
+    @ApiModelProperty(value = "平台")
     private String platform;
 
     public String getVersion() {

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/StudentMusicSheetSearch.java

@@ -25,10 +25,10 @@ public class StudentMusicSheetSearch  extends MusicSheetSearch{
     @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)",hidden = true)
     private YesOrNoEnum auditVersion;
 
-    @ApiModelProperty(value = "版本号",required = true)
+    @ApiModelProperty(value = "版本号")
     private String version;
 
-    @ApiModelProperty(value = "平台",required = true)
+    @ApiModelProperty(value = "平台")
     private String platform;
 
     public YesOrNoEnum getAuditVersion() {

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

@@ -49,7 +49,7 @@ public interface ImGroupMemberService extends IService<ImGroupMember> {
     * @author zx
     * @date 2022/3/22 15:59
     */
-    List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMemberRoleType roleType) throws Exception;
+    List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMemberRoleType roleType);
 
     /**
     * @description: 加入融云群

+ 0 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java

@@ -44,14 +44,6 @@ public interface ImGroupService extends IService<ImGroup> {
     void dismiss(String groupId) throws Exception;
 
     /**
-    * @description: 同步群成员数量
-     * @param groupId
-    * @author zx
-    * @date 2022/3/22 11:17
-    */
-    void syncGroupMemberNum(String groupId) throws Exception;
-
-    /**
     * @description: 获取群列表
      * @param imGroupSearchDto
     * @return java.util.List<com.yonge.cooleshow.biz.dal.entity.ImGroup>

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicFavoriteService.java

@@ -21,4 +21,12 @@ public interface MusicFavoriteService extends IService<MusicFavorite> {
      * @return list
      */
     List<MusicFavorite> getFavorite(Long userId, Long musicSheetId);
+
+    /**
+     * 获取曲目收藏数量
+     *
+     * @param musicSheetId 曲目id
+     * @return
+     */
+    long getMusicSheetFavoriteNum(Long musicSheetId);
 }

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

@@ -234,4 +234,13 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @param userId 导入人id
      */
     void importExcel(List<ExcelDataReaderProperty<MusicSheetExport>> dataList, Long userId);
+
+    /**
+     * 官网曲目详情
+     *
+     * @param musicSheetId 曲目id
+     * @param sysUser
+     * @return
+     */
+    MusicSheetWebsiteDetailVo websiteDetail(Long musicSheetId, SysUser sysUser);
 }

+ 22 - 35
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberAuditServiceImpl.java

@@ -1,11 +1,9 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.ImGroupMemberAuditDao;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
-import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit;
 import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
@@ -15,6 +13,7 @@ import com.yonge.cooleshow.biz.dal.queryInfo.ImGroupMemberAuditQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberAuditService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.vo.AuditUserInfo;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
@@ -43,10 +42,9 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
     @Resource
     private ImGroupService imGroupService;
     @Resource
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Resource
     private ImGroupMemberService imGroupMemberService;
-
     @Resource
     private SysMessageServiceImpl sysMessageService;
 
@@ -90,16 +88,15 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
                     imGroupMemberAudit.getUserId(), false,
                     imGroupMemberAudit.getRoleType());
             //同步群成员数量
-            imGroupService.syncGroupMemberNum(imGroup.getId());
+            imGroupService.getDao().updateMemberNum(imGroup.getId());
             //加入融云群
             imGroupMemberService.join(groupMembers,groupId);
         } else {
-            Map<Long,String> receivers = new HashMap<>();
-
+            Map<Long,String> receivers = new HashMap<>(1);
             // 群创建人
-            SysUser user = sysUserFeignService.queryUserById(imGroup.getCreateBy());
+            SysUser user = sysUserService.findUserById(imGroup.getCreateBy());
             // 申请人
-            SysUser auditUser = sysUserFeignService.queryUserById(imGroupMemberAudit.getUserId());
+            SysUser auditUser = sysUserService.findUserById(imGroupMemberAudit.getUserId());
 
             receivers.put(user.getId(), user.getPhone());
             try {
@@ -108,35 +105,25 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
             } catch (Exception e) {
                 log.warn("学生入群消息发送失败,{}",e.getMessage());
             }
-
         }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void applyAudit(String auditIds, AuditStatusEnum auditStatus,String groupId) throws Exception {
-        if(auditStatus == AuditStatusEnum.AUDITING ){
-            throw new BizException("操作失败:审核状态异常");
-        }
-        ImGroup imGroup = imGroupService.getById(groupId);
-        if(Objects.isNull(imGroup)){
-            throw new BizException("群组信息不存在");
-        }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(!sysUser.getId().equals(imGroup.getCreateBy())){
-            throw new BizException("操作失败:您没有审核权限");
-        }
+        Optional.of(auditStatus).filter(e->e != AuditStatusEnum.AUDITING).orElseThrow(()->new BizException("操作失败:审核状态异常"));
+        ImGroup imGroup = Optional.ofNullable(imGroupService.getById(groupId)).orElseThrow(() ->new BizException("群组信息不存在"));
+        Optional.of(sysUserService.getUserId()).filter(imGroup.getCreateBy()::equals).orElseThrow(()->new BizException("操作失败:您没有审核权限"));
         //修改审核状态
         baseMapper.batchUpdateAuditStatus(auditIds,auditStatus.getCode());
         if(auditStatus == AuditStatusEnum.OPEN){
             List<ImGroupMemberAudit> imGroupMemberAudit = baseMapper.findByIds(auditIds);
-            Set<Long> userIds = imGroupMemberAudit.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
+            Set<Long> userIds = imGroupMemberAudit.stream().map(ImGroupMemberAudit::getUserId).collect(Collectors.toSet());
             List<GroupMember> groupMembers = imGroupMemberService.initGroupMembers(groupId,userIds, ImGroupMemberRoleType.STUDENT);
             //同步群成员数量
-            imGroupService.syncGroupMemberNum(imGroup.getId());
+            imGroupService.getDao().updateMemberNum(imGroup.getId());
             //加入融云群
             imGroupMemberService.join(groupMembers,imGroup.getId());
-
             sendMessage(auditIds);
         }
     }
@@ -148,21 +135,21 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
      */
     private void sendMessage(String auditIds) {
         List<AuditUserInfo> auditUserInfoList = baseMapper.selectAuditUserInfo(auditIds);
-
         if (CollectionUtils.isEmpty(auditUserInfoList)) {
             return;
         }
-        for (AuditUserInfo auditUserInfo : auditUserInfoList) {
-            Map<Long,String> receivers = new HashMap<>();
+        auditUserInfoList.stream().forEach(this::sendMessage);
+    }
 
-            receivers.put(auditUserInfo.getAuditUserId(), auditUserInfo.getAuditUserPhone());
-            try {
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.FANSGROUP_APPLY_SUCCESS,
-                        receivers, null, 0, null, ClientEnum.STUDENT.getCode(), auditUserInfo.getGroupUsername(),
-                        auditUserInfo.getGroupName());
-            } catch (Exception e) {
-                log.warn("学生入群申请通过消息发送失败,{}",e.getMessage());
-            }
+    private void sendMessage(AuditUserInfo auditUserInfo){
+        Map<Long,String> receivers = new HashMap<>(1);
+        receivers.put(auditUserInfo.getAuditUserId(), auditUserInfo.getAuditUserPhone());
+        try {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.FANSGROUP_APPLY_SUCCESS,
+                    receivers, null, 0, null, ClientEnum.STUDENT.getCode(), auditUserInfo.getGroupUsername(),
+                    auditUserInfo.getGroupName());
+        } catch (Exception e) {
+            log.warn("学生入群申请通过消息发送失败,{}",e.getMessage());
         }
     }
 

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

@@ -22,6 +22,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * 群成员表(ImGroupMember)表服务实现类
@@ -55,11 +57,9 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<GroupMember> initGroupMember(String imGroupId, Long userId, Boolean isAdmin, ImGroupMemberRoleType roleType) throws Exception {
+    public List<GroupMember> initGroupMember(String imGroupId, Long userId, Boolean isAdmin, ImGroupMemberRoleType roleType){
         //记录群成员
         BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
-//        String username = roleType== ImGroupMemberRoleType.TEACHER?basicUserInfo.getRealName():basicUserInfo.getUsername();
-//        String username = roleType== ImGroupMember.ImGroupMemberRoleType.TEACHER?basicUserInfo.getRealName():basicUserInfo.getUsername();
         ImGroupMember imGroupMember = new ImGroupMember(imGroupId,userId,basicUserInfo.getUsername(),basicUserInfo.getAvatar(), isAdmin, roleType);
         Date date = new Date();
         imGroupMember.setCreateTime(date);
@@ -73,28 +73,25 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMemberRoleType roleType) throws Exception {
+    public List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMemberRoleType roleType){
         //记录群成员
         List<ImGroupMember> imGroupMembers = baseMapper.initImGroupMember(imGroupId,userIds,roleType.getCode());
-        List<GroupMember> groupMemberList = new ArrayList<>();
         if(CollectionUtils.isNotEmpty(imGroupMembers)){
             baseMapper.insertBatch(imGroupMembers);
             //加入融云群
-            for (Long userId : userIds) {
-                groupMemberList.add(new GroupMember(userId.toString(),imGroupId,null));
-            }
-            return groupMemberList;
+            Function<Long,GroupMember> func = (userId) -> new GroupMember(userId.toString(),imGroupId,null);
+            return userIds.stream().map(func).collect(Collectors.toList());
         }
         return new ArrayList<>();
     }
 
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void join(List<GroupMember> groupMemberList,String imGroupId) throws Exception {
         GroupMember[] groupMembers = groupMemberList.toArray(new GroupMember[groupMemberList.size()]);
         GroupModel groupModel = new GroupModel(imGroupId, 0);
         groupModel.setMembers(groupMembers);
-        ImGroup imGroup = imGroupDao.selectById(imGroupId);
-        groupModel.setName(imGroup.getName());
+        groupModel.setName(imGroupDao.selectById(imGroupId).getName());
         Result result = RongCloudConfig.rongCloud.group.join(groupModel);
         if(!result.code.equals(200)){
             log.error("加入群组失败:{}",result.errorMessage);
@@ -116,11 +113,18 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
         }
         BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
         //更新当前用户关联的该用户的详情信息
-        imGroupMember.setNickname(imGroupMember.getRoleType()== ImGroupMemberRoleType.STUDENT?basicUserInfo.getUsername():basicUserInfo.getRealName());
+        imGroupMember.setNickname(basicUserInfo.getUsername());
         imGroupMember.setAvatar(basicUserInfo.getAvatar());
         imGroupMember.setUpdateTime(new Date());
-        baseMapper.updateById(imGroupMember);
+        this.startTransactional(()->{
+            baseMapper.updateById(imGroupMember);
+        });
         return imGroupMember;
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void startTransactional(Runnable runnable){
+        runnable.run();
+    }
 }
 

+ 11 - 29
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -1,22 +1,17 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.config.RongCloudConfig;
-import com.yonge.cooleshow.biz.dal.dao.*;
+import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.yonge.cooleshow.biz.dal.dao.ImGroupDao;
+import com.yonge.cooleshow.biz.dal.dao.ImGroupMemberAuditDao;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupResultDto;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
-import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
-import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
-import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
-import com.yonge.cooleshow.biz.dal.service.ImGroupService;
-import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.toolset.base.exception.BizException;
 import io.rong.models.Result;
 import io.rong.models.group.GroupMember;
@@ -50,7 +45,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     @Resource
     private ImGroupMemberAuditDao imGroupMemberAuditDao;
     @Resource
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Resource
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
 
@@ -68,7 +63,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         imGroup.setMemberNum(1);
         imGroup.setCreateTime(now);
         imGroup.setUpdateTime(now);
-        String imGroupId = UUID.randomUUID().toString() + imGroup.getType().getCode();
+        String imGroupId = UUID.randomUUID() + imGroup.getType().getCode();
         imGroup.setId(imGroupId);
         this.baseMapper.insert(imGroup);
         //处理本地群成员列表
@@ -136,12 +131,10 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void dismiss(String groupId) throws Exception {
-        ImGroup imGroup = this.baseMapper.selectById(groupId);
-        if(Objects.isNull(imGroup)){
-            throw new BizException("操作失败:群组不存在");
-        }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(!sysUser.getId().equals(imGroup.getCreateBy())){
+        Long createBy = Optional.ofNullable(this.baseMapper.selectById(groupId)).
+                map(ImGroup::getCreateBy).
+                orElseThrow(() -> new BizException("操作失败:群组不存在"));
+        if(!sysUserService.getUserId().equals(createBy)){
             throw new BizException("操作失败:您没有操作权限");
         }
         //删除入群申请
@@ -164,24 +157,13 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void syncGroupMemberNum(String groupId) throws Exception {
-        ImGroup imGroup = baseMapper.selectById(groupId);
-        Integer memberNum = imGroupMemberService.getBaseMapper().
-                selectCount(new QueryWrapper<ImGroupMember>().eq("group_id_",groupId));
-        imGroup.setMemberNum(memberNum);
-        baseMapper.updateById(imGroup);
-    }
-
-    @Override
     public List<ImGroup> queryAll(ImGroupSearchDto imGroupSearchDto) {
         return baseMapper.findAll(imGroupSearchDto);
     }
 
     @Override
     public List<ImGroupResultDto> queryTeacherFun(ImGroupSearchDto imGroupSearchDto) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        imGroupSearchDto.setUserId(sysUser.getId());
+        imGroupSearchDto.setUserId(sysUserService.getUserId());
         return baseMapper.queryTeacherFun(imGroupSearchDto);
     }
 }

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

@@ -38,4 +38,10 @@ public class MusicFavoriteServiceImpl extends ServiceImpl<MusicFavoriteDao,Music
                    .list();
 
     }
+
+    @Override
+    public long getMusicSheetFavoriteNum(Long musicSheetId) {
+        return  baseMapper.selectMusicSheetFavoriteNum(musicSheetId);
+
+    }
 }

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

@@ -95,6 +95,12 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     @Autowired
     private SubjectService subjectService;
 
+    @Autowired
+    private TeacherService teacherService;
+
+    @Autowired
+    private StudentStarService studentStarService;
+
     public MusicSheetDao getDao() {
         return musicSheetDao;
     }
@@ -176,6 +182,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         if (detail == null) {
             throw new BizException("未找到曲目信息");
         }
+        if (sysUser == null) {
+            return detail;
+        }
         if (ChargeTypeEnum.FREE.getCode().equals(detail.getChargeType().getCode())) {
             detail.setPlay(YesOrNoEnum.YES);
         }  else if (SysUserType.STUDENT.getCode().equals(userType.getCode())) {
@@ -201,8 +210,10 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         } else {
             detail.setPlay(YesOrNoEnum.YES);
         }
-        // 学生进入云教练练习,添加一条练习记录
-        musicSheetPracticeRecordService.addRecord(id,sysUser.getId());
+        if (SysUserType.STUDENT.getCode().equals(userType.getCode())) {
+            // 学生进入云教练练习,添加一条练习记录
+            musicSheetPracticeRecordService.addRecord(id, sysUser.getId());
+        }
         return detail;
     }
 
@@ -719,6 +730,53 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 
     }
 
+    @Override
+    public MusicSheetWebsiteDetailVo websiteDetail(Long musicSheetId, SysUser sysUser) {
+        MusicSheetDetailVo detail = detail(musicSheetId, null, null);
+        MusicSheetWebsiteDetailVo musicSheetWebsiteDetailVo = new MusicSheetWebsiteDetailVo();
+        BeanUtils.copyProperties(detail,musicSheetWebsiteDetailVo);
+
+        // 曲目收藏数
+        long musicSheetFavoriteNum = musicFavoriteService.getMusicSheetFavoriteNum(musicSheetId);
+        musicSheetWebsiteDetailVo.setFavoriteNum(musicSheetFavoriteNum);
+
+        // 老师信息
+        TeacherVo teacherVo = teacherService.detail(detail.getUserId());
+        TeacherMusicSheetListVo teacherMusicSheetListVo = new TeacherMusicSheetListVo();
+        teacherMusicSheetListVo.setUserAvatar(teacherVo.getAvatar());
+        teacherMusicSheetListVo.setUserName(teacherVo.getUsername());
+        teacherMusicSheetListVo.setUserId(teacherVo.getUserId());
+        teacherMusicSheetListVo.setEntryFlag(teacherVo.getEntryFlag());
+        teacherMusicSheetListVo.setMusicianFlag(teacherVo.getMusicianFlag());
+
+        if (sysUser != null) {
+            // 老师关注
+            StudentStar studentStar = studentStarService.getByStudentIdAndTeacherId(sysUser.getId(), teacherVo.getUserId());
+            if (studentStar != null) {
+                teacherMusicSheetListVo.setStar(YesOrNoEnum.YES);
+            }
+
+            // 曲目收藏
+            List<MusicFavorite> favorite = musicFavoriteService.getFavorite(sysUser.getId(), detail.getId());
+            if (!CollectionUtils.isEmpty(favorite)) {
+                musicSheetWebsiteDetailVo.setFavorite(YesOrNoEnum.YES);
+            }
+        }
+
+        // 老师的曲目
+        MusicSheetSearch musicSheetSearch = new MusicSheetSearch();
+        musicSheetSearch.setCreateBy(teacherVo.getUserId());
+        musicSheetSearch.setState(YesOrNoEnum.YES);
+        musicSheetSearch.setAuditStatus(AuthStatusEnum.PASS);
+        musicSheetSearch.setPage(1);
+        musicSheetSearch.setRows(5);
+        List<MusicSheetVo> musicSheetVos = baseMapper.selectPage(PageUtil.getPage(musicSheetSearch), musicSheetSearch);
+        teacherMusicSheetListVo.setMusicSheetList(musicSheetVos);
+
+        musicSheetWebsiteDetailVo.setTeacher(teacherMusicSheetListVo);
+        return musicSheetWebsiteDetailVo;
+    }
+
     private SysUser getSysUser(Long userId) {
         return Optional.ofNullable(userId)
                        .map(sysUserFeignService::queryUserById)

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

@@ -24,19 +24,17 @@ public class SysUserServiceImpl implements SysUserService {
 
     @Override
     public SysUser getUser() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        Optional.ofNullable(sysUser).
-                map(SysUser::getId).
+        Optional<SysUser> optional = Optional.ofNullable(sysUserFeignService.queryUserInfo());
+        optional.map(SysUser::getId).
                 orElseThrow(()-> new BizException("请登录"));
-        return sysUser;
+        return optional.get();
     }
 
     @Override
     public SysUser findUserById(Long userId) {
-        SysUser sysUser = sysUserFeignService.queryUserById(userId);
-        Optional.ofNullable(sysUser).
-                map(SysUser::getId).
+        Optional<SysUser> optional = Optional.ofNullable(sysUserFeignService.queryUserInfo());
+        optional.map(SysUser::getId).
                 orElseThrow(()-> new BizException("请登录"));
-        return sysUser;
+        return optional.get();
     }
 }

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

@@ -4,6 +4,8 @@ import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.PageInfo;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.List;
+
 /**
  * Description 专辑详情展示信息
  *
@@ -42,6 +44,27 @@ public class AlbumDetailVo {
     @ApiModelProperty("收藏数量")
     private Integer albumFavoriteCount;
 
+    @ApiModelProperty("热门专辑")
+    private List<MusicAlbumVo> hotMusicAlbum;
+
+    @ApiModelProperty("相关专辑")
+    private List<MusicAlbumVo> relatedMusicAlbum;
+
+    public List<MusicAlbumVo> getHotMusicAlbum() {
+        return hotMusicAlbum;
+    }
+
+    public void setHotMusicAlbum(List<MusicAlbumVo> hotMusicAlbum) {
+        this.hotMusicAlbum = hotMusicAlbum;
+    }
+
+    public List<MusicAlbumVo> getRelatedMusicAlbum() {
+        return relatedMusicAlbum;
+    }
+
+    public void setRelatedMusicAlbum(List<MusicAlbumVo> relatedMusicAlbum) {
+        this.relatedMusicAlbum = relatedMusicAlbum;
+    }
 
     public Integer getMusicSheetCount() {
         return musicSheetCount;

+ 47 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetWebsiteDetailVo.java

@@ -0,0 +1,47 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-04-01
+ */
+public class MusicSheetWebsiteDetailVo extends MusicSheetDetailVo {
+
+    @ApiModelProperty("收藏数")
+    private Long favoriteNum;
+
+    @ApiModelProperty("是否已收藏  0:否 1:是")
+    private YesOrNoEnum favorite = YesOrNoEnum.NO;
+
+    @ApiModelProperty("老师信息")
+    private TeacherMusicSheetListVo teacher;
+
+    public YesOrNoEnum getFavorite() {
+        return favorite;
+    }
+
+    public void setFavorite(YesOrNoEnum favorite) {
+        this.favorite = favorite;
+    }
+
+    public Long getFavoriteNum() {
+        return favoriteNum;
+    }
+
+    public void setFavoriteNum(Long favoriteNum) {
+        this.favoriteNum = favoriteNum;
+    }
+
+    public TeacherMusicSheetListVo getTeacher() {
+        return teacher;
+    }
+
+    public void setTeacher(TeacherMusicSheetListVo teacher) {
+        this.teacher = teacher;
+    }
+}
+

+ 109 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherMusicSheetListVo.java

@@ -0,0 +1,109 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 官网曲目详情老师和老师拥有的曲目信息
+ *
+ * @author liujunchi
+ * @date 2022-06-14
+ */
+@ApiModel("官网曲目详情老师和老师拥有的曲目信息")
+public class TeacherMusicSheetListVo {
+
+    @ApiModelProperty("老师id")
+    private Long userId;
+
+    @ApiModelProperty("上传老师名称")
+    private String userName;
+
+    @ApiModelProperty("上传用户头像")
+    private String userAvatar;
+
+    @ApiModelProperty("老师入驻  0 否 1 是 ")
+    private YesOrNoEnum entryFlag;
+
+    @ApiModelProperty("音乐人  0 否 1 是 ")
+    private YesOrNoEnum musicianFlag;
+
+    @ApiModelProperty("粉丝数")
+    private Long fansNum;
+
+    @ApiModelProperty("是否关注 0 : 否 1:是")
+    private YesOrNoEnum star = YesOrNoEnum.NO;
+
+    @ApiModelProperty("老师曲目 默认最新的5个")
+    private List<MusicSheetVo> musicSheetList;
+
+    public YesOrNoEnum getStar() {
+        return star;
+    }
+
+    public void setStar(YesOrNoEnum star) {
+        this.star = star;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getUserAvatar() {
+        return userAvatar;
+    }
+
+    public void setUserAvatar(String userAvatar) {
+        this.userAvatar = userAvatar;
+    }
+
+    public YesOrNoEnum getEntryFlag() {
+        return entryFlag;
+    }
+
+    public void setEntryFlag(YesOrNoEnum entryFlag) {
+        this.entryFlag = entryFlag;
+    }
+
+    public YesOrNoEnum getMusicianFlag() {
+        return musicianFlag;
+    }
+
+    public void setMusicianFlag(YesOrNoEnum musicianFlag) {
+        this.musicianFlag = musicianFlag;
+    }
+
+    public Long getFansNum() {
+        return fansNum;
+    }
+
+    public void setFansNum(Long fansNum) {
+        this.fansNum = fansNum;
+    }
+
+    public List<MusicSheetVo> getMusicSheetList() {
+        return musicSheetList;
+    }
+
+    public void setMusicSheetList(List<MusicSheetVo> musicSheetList) {
+        this.musicSheetList = musicSheetList;
+    }
+}

+ 10 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -34,6 +34,16 @@
         </set>
         where id_ = #{et.id}
     </update>
+    <update id="updateMemberNum">
+        UPDATE im_group ig
+        LEFT JOIN (SELECT COUNT(id_) num_,group_id_ FROM im_group_member
+        <if test="groupId != null">
+            WHERE group_id_ = #{groupId}
+        </if>
+        GROUP BY group_id_) igm ON ig.id_ = igm.group_id_
+        SET member_num_ = igm.num_
+        WHERE ig.id_ = igm.group_id_
+    </update>
     <select id="findAll" resultMap="BaseResultMap">
         SELECT ig.* FROM im_group ig
         LEFT JOIN im_group_member igm ON igm.group_id_ = ig.id_

+ 5 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicFavoriteMapper.xml

@@ -15,6 +15,9 @@
 		id_, user_id_, music_sheet_id_, favorite_time_, favorite_flag_
 	</sql>
 
-
-
+	<select id="selectMusicSheetFavoriteNum" resultType="long">
+		select count(1)
+		from music_favorite
+		where music_sheet_id_ = #{musicSheetId}
+    </select>
 </mapper>

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

@@ -253,6 +253,8 @@
         </if>
         from music_sheet t
         left join sys_user su on t.create_by_ = su.id_
+        left join (select count(1) as num,mf.music_sheet_id_
+            from music_favorite mf group by mf.music_sheet_id_) t2 on t2.music_sheet_id_ = t.id_
         <if test="param.studentId != null">
             left join music_sheet_purchase_record mspr
                 on mspr.music_sheet_id_ = t.id_
@@ -266,7 +268,7 @@
                 and #{param.auditVersion} = t.audit_version_
             </if>
         </where>
-        order by  t.id_ desc
+        order by t2.num desc,  t.id_ desc
     </select>
 
     <select id="selectMyMusicPage" resultType="com.yonge.cooleshow.biz.dal.vo.MusicSheetVo">

+ 1 - 39
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/MusicAlbumController.java

@@ -40,44 +40,6 @@ public class MusicAlbumController extends BaseController {
 	@Autowired
 	private MusicAlbumService musicAlbumService;
 
-    @Autowired
-    private AppVersionInfoService appVersionInfoService;
-
-    @ApiOperation(value = "热门专辑", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/list", consumes="application/json", produces="application/json")
-    public HttpResponseResult<PageInfo<MusicAlbumVo>> list(@RequestBody MusicAlbumSearch query) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null  || sysUser.getId() == null) {
-            return failed("用户信息获取失败");
-        }
-
-        // 检查app版本
-        query.setAuditVersion(YesOrNoEnum.NO);
-        query.setAlbumStatus(YesOrNoEnum.YES);
-        query.setSortBy(1);
-        IPage<MusicAlbumVo> iPage = musicAlbumService.selectStudentPage(PageUtil.getPage(query),query);
-        return succeed(PageUtil.pageInfo(iPage));
-    }
-
-
-    /**
-     * 专辑详情
-     */
-    @PostMapping(value = "/detail",  consumes="application/json", produces="application/json")
-    @ApiOperation(value = "专辑详情",httpMethod="POST", consumes="application/json", produces="application/json")
-    public HttpResponseResult<AlbumDetailVo> detail(@Valid @RequestBody MusicAlbumDetailSearch query) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null  || sysUser.getId() == null) {
-            return failed("用户信息获取失败");
-        }
-        query.setType(2);
-        query.setState(YesOrNoEnum.YES);
-        YesOrNoEnum yesOrNoEnum = musicAlbumService.checkFavorite(sysUser.getId(),query.getId() );
-        AlbumDetailVo albumDetailVo = musicAlbumService.detail(PageUtil.getPage(query), query);
-        albumDetailVo.setFavorite(yesOrNoEnum);
-        return succeed(albumDetailVo);
-    }
-
     /**
      * 专辑收藏
      */
@@ -97,7 +59,7 @@ public class MusicAlbumController extends BaseController {
      * 专辑收藏
      */
     @GetMapping("/favorite")
-    @ApiOperation(value = "收藏专辑列表")
+    @ApiOperation(value = "学生-收藏专辑列表")
     public HttpResponseResult<PageInfo<MusicAlbumVo>> favoriteAlbum(QueryInfo query) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {

+ 36 - 119
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/MusicSheetController.java

@@ -2,18 +2,22 @@ package com.yonge.cooleshow.website.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.auth.api.enums.SysUserType;
+import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
-import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
-import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.biz.dal.vo.AlbumAndSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetWebsiteDetailVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.page.PageInfo;
@@ -27,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.Date;
 
 /**
  * 曲谱表 web 控制层
@@ -44,77 +49,6 @@ public class MusicSheetController extends BaseController {
 	@Autowired
 	private MusicSheetService musicSheetService;
 
-    @Autowired
-    private MusicAlbumService musicAlbumService;
-
-    @Autowired
-    private AppVersionInfoService appVersionInfoService;
-
-    /**
-     * 查询单条
-     */
-    @GetMapping("/detail/{id}")
-    @ApiOperation(value = "详情", notes = "传入musicTag")
-    public HttpResponseResult<MusicSheetDetailVo> detail(@ApiParam(value = "曲谱编号", required = true) @PathVariable("id") Long id) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null  || sysUser.getId() == null) {
-            return failed("用户信息获取失败");
-        }
-        return succeed(musicSheetService.detail(id, sysUser, SysUserType.STUDENT));
-    }
-
-    @ApiOperation(value = "分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/list", consumes="application/json", produces="application/json")
-    public HttpResponseResult<PageInfo<MusicSheetVo>> list(@RequestBody StudentMusicSheetSearch query) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null  || sysUser.getId() == null) {
-            return failed("用户信息获取失败");
-        }
-        // 检查app版本
-        query.setAuditVersion(YesOrNoEnum.NO);
-
-
-        // 学生 只能看通过审核 并且 启用的 曲目
-        query.setState(YesOrNoEnum.YES);
-        query.setAuditStatus(AuthStatusEnum.PASS);
-        query.setStudentId(sysUser.getId());
-        IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectStudentPage(PageUtil.getPage(query), query);
-        return succeed(PageUtil.pageInfo(musicSheetVoIPage));
-    }
-
-
-    @ApiOperation(value = "乐谱(专辑和曲目同时查询)分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/albumAndSheetList", consumes="application/json", produces="application/json")
-    public HttpResponseResult<AlbumAndSheetVo> albumAndSheetList(@RequestBody StudentMusicSheetSearch query) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null  || sysUser.getId() == null) {
-            return failed("用户信息获取失败");
-        }
-
-        // 学生 只能看通过审核 并且 启用的 曲目
-        query.setState(YesOrNoEnum.YES);
-        query.setAuditVersion(YesOrNoEnum.NO);
-        query.setAuditStatus(AuthStatusEnum.PASS);
-        query.setStudentId(sysUser.getId());
-        query.setRows(query.getSheetRow());
-        IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectStudentPage(PageUtil.getPage(query), query);
-
-        MusicAlbumSearch musicAlbumSearch = new MusicAlbumSearch();
-        musicAlbumSearch.setAlbumStatus(YesOrNoEnum.YES);
-        musicAlbumSearch.setSortBy(1);
-        musicAlbumSearch.setIdAndName(query.getIdAndName());
-        musicAlbumSearch.setAuditVersion(YesOrNoEnum.NO);
-        musicAlbumSearch.setAlbumTagIds(query.getMusicTagIds());
-        musicAlbumSearch.setPage(query.getPage());
-        musicAlbumSearch.setRows(query.getAlbumRow());
-        IPage<MusicAlbumVo> musicAlbumVoIPage = musicAlbumService.selectPage(PageUtil.getPage(musicAlbumSearch), musicAlbumSearch);
-
-        AlbumAndSheetVo albumAndSheetVo = new AlbumAndSheetVo();
-        albumAndSheetVo.setMusicSheetList(PageUtil.pageInfo(musicSheetVoIPage));
-        albumAndSheetVo.setMusicAlbumList(PageUtil.pageInfo(musicAlbumVoIPage));
-        return succeed(albumAndSheetVo);
-    }
-
     /**
      * 曲目收藏
      */
@@ -134,7 +68,7 @@ public class MusicSheetController extends BaseController {
      * 我的单曲,收藏单曲
      */
     @GetMapping("/my")
-    @ApiOperation(value = "我的单曲")
+    @ApiOperation(value = "学生-我的单曲")
     public HttpResponseResult<PageInfo<MusicSheetVo>> myMusic(QueryInfo query) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
@@ -153,7 +87,7 @@ public class MusicSheetController extends BaseController {
      * 我的单曲,收藏单曲
      */
     @GetMapping("/favorite")
-    @ApiOperation(value = "收藏单曲")
+    @ApiOperation(value = "学生-收藏单曲")
     public HttpResponseResult<PageInfo<MusicSheetVo>> favoriteMusic(QueryInfo query) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
@@ -167,61 +101,44 @@ public class MusicSheetController extends BaseController {
         return succeed(PageUtil.pageInfo(sheetVoIPage));
     }
 
-
-    /**
-     * 最近练习
-     */
-    @GetMapping("/practice")
-    @ApiOperation(value = "最近练习")
-    public HttpResponseResult<PageInfo<MusicSheetVo>> practiceMusic(QueryInfo query) {
+    @ApiOperation(value = "老师-个人中心-曲目分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/teacher/list", consumes="application/json", produces="application/json")
+    public HttpResponseResult<PageInfo<MusicSheetVo>> list(@RequestBody MusicSheetSearch query) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
-        StudentMusicSheetSearch search = new StudentMusicSheetSearch();
-        search.setStudentId(sysUser.getId());
-        search.setState(YesOrNoEnum.YES);
-        search.setAuditStatus(AuthStatusEnum.PASS);
-        IPage<MusicSheetVo> sheetVoIPage = musicSheetService.practiceMusic(PageUtil.getPage(query),search);
-        return succeed(PageUtil.pageInfo(sheetVoIPage));
-    }
-
-
-    /**
-     * 检查实名认证
-     */
-    @GetMapping("/realNameAuth/check")
-    @ApiOperation(value = "检查实名认证")
-    public HttpResponseResult<CheckVo> realNameAuthCheck() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null  || sysUser.getId() == null) {
-            return failed("用户信息获取失败");
+        // 设置只查老师用户 状态为启用
+        query.setCreateBy(sysUser.getId());
+        if (query.getAuditStatus() != null && AuthStatusEnum.PASS.getCode().equals(query.getAuditStatus().getCode())) {
+            query.setState(YesOrNoEnum.YES);
         }
 
-        CheckVo checkVo = new CheckVo();
-        if (StringUtil.isEmpty(sysUser.getIdCardNo())) {
-            checkVo.setCheck(YesOrNoEnum.NO);
-        }  else {
-            checkVo.setCheck(YesOrNoEnum.YES);
-        }
-        return succeed(checkVo);
+        IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(musicSheetVoIPage));
     }
 
-
-    /**
-     * 实名认证
-     */
-    @PostMapping(value = "/realNameAuth" ,consumes="application/json", produces="application/json")
-    @ApiOperation(value = "实名认证", httpMethod="POST",consumes="application/json", produces="application/json")
-    public HttpResponseResult<IdcardInfoExtractor> realNameAuth(@Valid @RequestBody RealnameAuthReq realNameAuthDto) {
+    @ApiOperation(value = "老师新增曲目", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/create", consumes="application/json", produces="application/json")
+    public HttpResponseResult<Object> create(@Valid @RequestBody MusicSheetDto musicSheetDto) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
 
-        return sysUserFeignService.realNameAuth(realNameAuthDto);
-    }
-
+        if (ChargeTypeEnum.CHARGE.getCode().equals(musicSheetDto.getChargeType().getCode())
+                && musicSheetDto.getMusicPrice()==null){
+            return failed("此曲谱为收费曲谱,需要提供价格");
+        }
 
+        musicSheetDto.setUserId(sysUser.getId());
+        musicSheetDto.setAuditStatus(AuthStatusEnum.DOING);
+        musicSheetDto.setSubmitAuditTime(new Date());
+        musicSheetDto.setSourceType(SourceTypeEnum.TEACHER);
 
+        musicSheetDto.setCreateBy(sysUser.getId());
+        musicSheetDto.setCreateTime(new Date());
+        musicSheetService.saveMusicSheet(musicSheetDto,sysUser.getId());
+        return succeed("新增曲谱成功");
+    }
 }

+ 89 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenMusicAlbumController.java

@@ -0,0 +1,89 @@
+package com.yonge.cooleshow.website.controller.open;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.AlbumDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.base.page.QueryInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 专辑表 web 控制层
+ * @author yzp
+ * @date 2022-03-26 00:21:46
+ * @version v1.0
+ **/
+@RestController
+@RequestMapping("/open/music/album")
+@Api(tags = "开放专辑接口")
+public class OpenMusicAlbumController extends BaseController {
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+	@Autowired
+	private MusicAlbumService musicAlbumService;
+
+
+    @ApiOperation(value = "热门专辑", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/list", consumes="application/json", produces="application/json")
+    public HttpResponseResult<PageInfo<MusicAlbumVo>> list(@RequestBody MusicAlbumSearch query) {
+
+        // 检查app版本
+        query.setAuditVersion(YesOrNoEnum.NO);
+        query.setAlbumStatus(YesOrNoEnum.YES);
+        query.setSortBy(1);
+        IPage<MusicAlbumVo> iPage = musicAlbumService.selectStudentPage(PageUtil.getPage(query),query);
+        return succeed(PageUtil.pageInfo(iPage));
+    }
+
+
+    /**
+     * 专辑详情
+     */
+    @PostMapping(value = "/detail",  consumes="application/json", produces="application/json")
+    @ApiOperation(value = "专辑详情",httpMethod="POST", consumes="application/json", produces="application/json")
+    public HttpResponseResult<AlbumDetailVo> detail(@Valid @RequestBody MusicAlbumDetailSearch query) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        YesOrNoEnum favorite = YesOrNoEnum.NO;
+        if (sysUser != null && sysUser.getId() != null) {
+            favorite = musicAlbumService.checkFavorite(sysUser.getId(),query.getId() );
+        }
+        query.setType(2);
+        query.setState(YesOrNoEnum.YES);
+        AlbumDetailVo albumDetailVo = musicAlbumService.detail(PageUtil.getPage(query), query);
+        albumDetailVo.setFavorite(favorite);
+
+        // 热门专辑
+        MusicAlbumSearch musicAlbumSearch = new MusicAlbumSearch();
+        musicAlbumSearch.setAuditVersion(YesOrNoEnum.NO);
+        musicAlbumSearch.setAlbumStatus(YesOrNoEnum.YES);
+        musicAlbumSearch.setSortBy(1);
+        musicAlbumSearch.setPage(1);
+        musicAlbumSearch.setRows(4);
+        IPage<MusicAlbumVo> hotMusicAlbum = musicAlbumService.selectStudentPage(PageUtil.getPage(musicAlbumSearch),musicAlbumSearch);
+        albumDetailVo.setHotMusicAlbum(hotMusicAlbum.getRecords());
+
+        // 相关专辑
+        musicAlbumSearch.setAlbumTagIds(albumDetailVo.getAlbumTag());
+        IPage<MusicAlbumVo> relatedMusicAlbum = musicAlbumService.selectStudentPage(PageUtil.getPage(musicAlbumSearch),musicAlbumSearch);
+        albumDetailVo.setRelatedMusicAlbum(relatedMusicAlbum.getRecords());
+        return succeed(albumDetailVo);
+    }
+
+}

+ 115 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenMusicSheetController.java

@@ -0,0 +1,115 @@
+package com.yonge.cooleshow.website.controller.open;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.AlbumAndSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetWebsiteDetailVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.base.page.QueryInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Date;
+
+/**
+ * 曲谱表 web 控制层
+ * @author yzp
+ * @date 2022-03-26 00:21:46
+ * @version v1.0
+ **/
+@RestController
+@RequestMapping("/open/music/sheet")
+@Api(tags = "开放曲谱接口")
+public class OpenMusicSheetController extends BaseController {
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+	@Autowired
+	private MusicSheetService musicSheetService;
+
+    @Autowired
+    private MusicAlbumService musicAlbumService;
+
+    /**
+     * 查询单条
+     */
+    @GetMapping("/detail/{id}")
+    @ApiOperation(value = "曲目详情", notes = "传入musicTag")
+    public HttpResponseResult<MusicSheetWebsiteDetailVo> detail(@ApiParam(value = "曲谱编号", required = true) @PathVariable("id") Long id) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        MusicSheetWebsiteDetailVo detail = musicSheetService.websiteDetail(id,sysUser);
+
+        return succeed(detail);
+    }
+
+    @ApiOperation(value = "首页曲目分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/list", consumes="application/json", produces="application/json")
+    public HttpResponseResult<PageInfo<MusicSheetVo>> list(@RequestBody StudentMusicSheetSearch query) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+
+        // 检查app版本
+        query.setAuditVersion(YesOrNoEnum.NO);
+
+
+        // 学生 只能看通过审核 并且 启用的 曲目
+        query.setState(YesOrNoEnum.YES);
+        query.setAuditStatus(AuthStatusEnum.PASS);
+        if (sysUser != null) {
+            query.setStudentId(sysUser.getId());
+        }
+        IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectStudentPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(musicSheetVoIPage));
+    }
+
+
+    @ApiOperation(value = "乐谱(专辑和曲目同时查询)分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/albumAndSheetList", consumes="application/json", produces="application/json")
+    public HttpResponseResult<AlbumAndSheetVo> albumAndSheetList(@RequestBody StudentMusicSheetSearch query) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+
+        // 学生 只能看通过审核 并且 启用的 曲目
+        query.setState(YesOrNoEnum.YES);
+        query.setAuditVersion(YesOrNoEnum.NO);
+        query.setAuditStatus(AuthStatusEnum.PASS);
+        if (sysUser != null) {
+            query.setStudentId(sysUser.getId());
+        }
+        query.setRows(query.getSheetRow());
+        IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectStudentPage(PageUtil.getPage(query), query);
+
+        MusicAlbumSearch musicAlbumSearch = new MusicAlbumSearch();
+        musicAlbumSearch.setAlbumStatus(YesOrNoEnum.YES);
+        musicAlbumSearch.setSortBy(1);
+        musicAlbumSearch.setIdAndName(query.getIdAndName());
+        musicAlbumSearch.setAuditVersion(YesOrNoEnum.NO);
+        musicAlbumSearch.setAlbumTagIds(query.getMusicTagIds());
+        musicAlbumSearch.setPage(query.getPage());
+        musicAlbumSearch.setRows(query.getAlbumRow());
+        IPage<MusicAlbumVo> musicAlbumVoIPage = musicAlbumService.selectPage(PageUtil.getPage(musicAlbumSearch), musicAlbumSearch);
+
+        AlbumAndSheetVo albumAndSheetVo = new AlbumAndSheetVo();
+        albumAndSheetVo.setMusicSheetList(PageUtil.pageInfo(musicSheetVoIPage));
+        albumAndSheetVo.setMusicAlbumList(PageUtil.pageInfo(musicAlbumVoIPage));
+        return succeed(albumAndSheetVo);
+    }
+}

+ 12 - 0
cooleshow-user/user-website/src/main/resources/bootstrap-dev.yml

@@ -0,0 +1,12 @@
+spring:
+  cloud:
+    nacos:
+      config:
+        server-addr: 47.114.1.200:8848
+        namespace: 6f8374a9-598f-4889-bb17-476070ffb8de
+        group: DEFAULT_GROUP
+        prefix: website
+        file-extension: yaml
+        refresh:
+          enabled: true
+        enabled: true

+ 61 - 0
cooleshow-user/user-website/src/main/resources/logback-spring.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+	<property name="LOG_HOME" value="/mdata/logs/website-%d{yyyy-MM-dd_HH}-%i.log" />
+	<property name="CONSOLE_LOG_PATTERN"
+		value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
+
+	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder charset="UTF-8">
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<appender name="file"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>${LOG_HOME}</FileNamePattern>
+			<MaxHistory>90</MaxHistory>
+			<TimeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<MaxFileSize>20MB</MaxFileSize>
+			</TimeBasedFileNamingAndTriggeringPolicy>
+		</rollingPolicy>
+
+		<encoder>
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<logger name="com.yonge.cooleshow" level="INFO" />
+	<!--本地环境:打印控制台 -->
+	<springProfile name="local">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+	<!--开发环境:打印控制台 -->
+	<springProfile name="dev">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+	
+	<springProfile name="test">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+	<!--生产环境:输出到文件 -->
+	<springProfile name="prod">
+		<root level="WARN">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+</configuration>