Jelajahi Sumber

Merge branch 'dev_v1.3.6_20221021' of http://git.dayaedu.com/yonge/cooleshow into dev_v1.3.6_20221021

# Conflicts:
#	service.md
Eric 2 tahun lalu
induk
melakukan
3188117c19
16 mengubah file dengan 277 tambahan dan 90 penghapusan
  1. 1 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java
  2. 0 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicFavoriteDao.java
  3. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java
  4. 51 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/AppMusicSheetVo.java
  5. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicSheetSearch.java
  6. 25 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java
  7. 37 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MusicSortType.java
  8. 0 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicFavoriteService.java
  9. 0 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicFavoriteServiceImpl.java
  10. 17 28
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  11. 0 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetDetailVo.java
  12. 0 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetVo.java
  13. 0 5
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicFavoriteMapper.xml
  14. 40 18
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  15. 43 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java
  16. 45 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

+ 1 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java

@@ -126,6 +126,7 @@ public class MusicSheetController extends BaseController {
 
         musicSheetDto.setUserId(sysUser.getId());
         musicSheetDto.setAuditStatus(AuthStatusEnum.PASS);
+        musicSheetDto.setFirstPassAuditTime(new Date());
         musicSheetDto.setDelFlag(false);
         musicSheetDto.setSourceType(SourceTypeEnum.PLATFORM);
 

+ 0 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicFavoriteDao.java

@@ -13,11 +13,4 @@ import org.apache.ibatis.annotations.Param;
  **/
 public interface MusicFavoriteDao extends BaseMapper<MusicFavorite> {
 
-    /**
-     * 曲目收藏数
-     *
-     * @param musicSheetId 曲目id
-     * @return
-     */
-    long selectMusicSheetFavoriteNum(@Param("musicSheetId") Long musicSheetId);
 }

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

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -170,4 +171,9 @@ public interface MusicSheetDao extends BaseMapper<MusicSheet> {
      * @return List<StatGroupWrapper>
      */
     List<StatGroupWrapper> selectMusicAlbumStatInfo(@Param("musicIds") List<Long> musicIds);
+
+    /**
+     * 修改收藏数
+     */
+    void updateFavoriteCount(@Param("musicSheetId") Long musicSheetId, @Param("state") YesOrNoEnum state);
 }

+ 51 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/AppMusicSheetVo.java

@@ -0,0 +1,51 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-18
+ */
+@ApiModel("app首页曲目信息")
+public class AppMusicSheetVo {
+
+    @ApiModelProperty("推荐曲目")
+    private List<MusicSheetVo> topMusicSheet;
+
+
+    @ApiModelProperty("最新曲目")
+    private List<MusicSheetVo> newMusicSheet;
+
+    @ApiModelProperty("最热曲目")
+    private List<MusicSheetVo> hotMusicSheet;
+
+    public List<MusicSheetVo> getHotMusicSheet() {
+        return hotMusicSheet;
+    }
+
+    public void setHotMusicSheet(List<MusicSheetVo> hotMusicSheet) {
+        this.hotMusicSheet = hotMusicSheet;
+    }
+
+    public List<MusicSheetVo> getTopMusicSheet() {
+        return topMusicSheet;
+    }
+
+    public void setTopMusicSheet(List<MusicSheetVo> topMusicSheet) {
+        this.topMusicSheet = topMusicSheet;
+    }
+
+    public List<MusicSheetVo> getNewMusicSheet() {
+        return newMusicSheet;
+    }
+
+    public void setNewMusicSheet(List<MusicSheetVo> newMusicSheet) {
+        this.newMusicSheet = newMusicSheet;
+    }
+}

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

@@ -4,6 +4,7 @@ import com.yonge.cooleshow.biz.dal.enums.AccompanimentTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.MusicSortType;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.QueryInfo;
@@ -78,6 +79,17 @@ public class MusicSheetSearch  extends QueryInfo{
     @ApiModelProperty(value = "伴奏类型 HOMEMODE:自制伴奏  COMMON:普通伴奏")
     private AccompanimentTypeEnum accompanimentType;
 
+    @ApiModelProperty("TOP:推荐曲目 NEW:最新曲目 HOT:最热曲目")
+    private MusicSortType musicSortType;
+
+    public MusicSortType getMusicSortType() {
+        return musicSortType;
+    }
+
+    public void setMusicSortType(MusicSortType musicSortType) {
+        this.musicSortType = musicSortType;
+    }
+
     public AudioTypeEnum getAudioType() {
         return audioType;
     }

+ 25 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java

@@ -84,6 +84,11 @@ public class MusicSheet implements Serializable {
 	@ApiModelProperty(value = "mp3类型 MP3:mp3, MP3_METRONOME:MP3_METRONOME,")
 	private AudioTypeEnum mp3Type;
 
+
+	@TableField("favorite_count_")
+	@ApiModelProperty(value = "收藏数")
+	private Integer favoriteCount;
+
     @NotBlank(message = "曲谱标签不能为空!")
     @TableField("music_tag_")
     @ApiModelProperty(value = "曲谱标签(多个标签用逗号分隔)")
@@ -134,6 +139,10 @@ public class MusicSheet implements Serializable {
 	@ApiModelProperty(value = "提交审核时间")
 	private Date submitAuditTime;
 
+	@TableField("first_pass_audit_time_")
+	@ApiModelProperty(value = "第一次通过审核时间")
+	private Date firstPassAuditTime;
+
     @TableField("sort_number_")
     @ApiModelProperty(value = "排序号")
     private Integer sortNumber;  //排序号
@@ -216,6 +225,22 @@ public class MusicSheet implements Serializable {
 	@ApiModelProperty(value = "假删除标识 0:未删除 1:已删除")
 	private Boolean delFlag;
 
+	public Date getFirstPassAuditTime() {
+		return firstPassAuditTime;
+	}
+
+	public void setFirstPassAuditTime(Date firstPassAuditTime) {
+		this.firstPassAuditTime = firstPassAuditTime;
+	}
+
+	public Integer getFavoriteCount() {
+		return favoriteCount;
+	}
+
+	public void setFavoriteCount(Integer favoriteCount) {
+		this.favoriteCount = favoriteCount;
+	}
+
 	public String getMusicImg() {
 		return musicImg;
 	}

+ 37 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MusicSortType.java

@@ -0,0 +1,37 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-18
+ */
+public enum MusicSortType implements BaseEnum<String, MusicSheetType> {
+
+    TOP("推荐曲目"), // 置顶 曲目排序值展示
+    HOT("最热曲目"), // 首次通过审核时间倒序展示
+    NEW("最新曲目"); // 乐谱收藏数量倒序展示
+
+    @EnumValue
+    private String code;
+
+    private String msg;
+
+    MusicSortType(String msg) {
+        this.msg = msg;
+        this.code = this.name();
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+}

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

@@ -25,13 +25,6 @@ public interface MusicFavoriteService extends IService<MusicFavorite> {
      */
     List<MusicFavorite> getFavorite(Long userId, Long musicSheetId, ClientEnum clientType);
 
-    /**
-     * 获取曲目收藏数量
-     *
-     * @param musicSheetId 曲目id
-     * @return
-     */
-    long getMusicSheetFavoriteNum(Long musicSheetId);
 
     /**
      * 检查是否收藏曲目

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

@@ -42,11 +42,6 @@ public class MusicFavoriteServiceImpl extends ServiceImpl<MusicFavoriteDao,Music
 
     }
 
-    @Override
-    public long getMusicSheetFavoriteNum(Long musicSheetId) {
-        return  baseMapper.selectMusicSheetFavoriteNum(musicSheetId);
-
-    }
 
     @Override
     public YesOrNoEnum checkFavorite(Long musicSheetId, Long userId, ClientEnum userType) {

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

@@ -116,6 +116,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
     @Autowired
     private TeacherService teacherService;
 
+
     @Autowired
     private StudentStarService studentStarService;
     @Autowired
@@ -272,10 +273,6 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         YesOrNoEnum favorite = musicFavoriteService.checkFavorite(id,sysUser.getId(),userType);
         detail.setFavorite(favorite);
 
-        // 收藏人数
-        long musicSheetFavoriteNum = musicFavoriteService.getMusicSheetFavoriteNum(id);
-        detail.setFavoriteCount(musicSheetFavoriteNum);
-
         // 播放状态
         if (AuthStatusEnum.UNPASS.getCode().equals(detail.getAuditStatus().getCode())) {
             String reason = musicSheetAuthRecordService.selectAuditReason(id);
@@ -392,21 +389,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         		records = baseMapper.selectStudentMusicPage(page, query);
         	}
     	}*/
-    	
-        IPage<MusicSheetVo> musicSheetVoIPage = page.setRecords(records);
-        if (query.getStudentId() != null) {
-            StudentVo studentVo = studentService.detail(query.getStudentId());
-            if (studentVo == null) {
-                return musicSheetVoIPage;
-            }
-            for (MusicSheetVo record : records) {
-                if (ChargeTypeEnum.VIP.getCode().equals(record.getChargeType().getCode())
-                        && YesOrNoEnum.YES.getCode().equals(studentVo.getIsVip().getCode())) {
-                    record.setPlay(YesOrNoEnum.YES);
-                }
-            }
-        }
-        return musicSheetVoIPage;
+
+        return page.setRecords(records);
 
     }
 
@@ -440,9 +424,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
             musicFavorite.setClientType(clientType);
             musicFavorite.setUserId(userId);
             musicFavorite.setFavoriteTime(new Date());
+            musicSheetDao.updateFavoriteCount(musicSheetId,YesOrNoEnum.YES);
             return musicFavoriteService.save(musicFavorite);
         } else {
             List<Long> ids = musicFavorites.stream().map(MusicFavorite::getId).collect(Collectors.toList());
+            musicSheetDao.updateFavoriteCount(musicSheetId,YesOrNoEnum.NO);
             return musicFavoriteService.removeByIds(ids);
         }
     }
@@ -535,11 +521,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         boolean flag;
         Long originalMusicSheetId = musicSheetAuthRecordService.audit(param, userId);
         musicSheet.setAuditStatus(param.getAuthStatus());
-            if (param.getAuthStatus().equals(AuthStatusEnum.PASS) && StringUtil.isEmpty(param.getMusicImg())) {
-                throw new BizException("曲目渲染失败");
-            } else if (param.getAuthStatus().equals(AuthStatusEnum.PASS) && !StringUtil.isEmpty(param.getMusicImg())) {
-                musicSheet.setMusicImg(param.getMusicImg());
-            }
+        if (param.getAuthStatus().equals(AuthStatusEnum.PASS) && StringUtil.isEmpty(param.getMusicImg())) {
+            throw new BizException("曲目渲染失败");
+        } else if (param.getAuthStatus().equals(AuthStatusEnum.PASS) && !StringUtil.isEmpty(param.getMusicImg())) {
+            musicSheet.setMusicImg(param.getMusicImg());
+        }
         musicSheet.setUpdateBy(userId);
         musicSheet.setUpdateTime(new Date());
         if (AuthStatusEnum.PASS.getCode().equals(param.getAuthStatus().getCode())) {
@@ -560,6 +546,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
             // 修改老师标签
             teacherService.setTeacherTag(musicSheet.getUserId(), TeacherTagEnum.MUSIC);
 
+            // 设置首次通过审核时间
+            musicSheet.setFirstPassAuditTime(new Date());
         }
         flag = this.updateById(musicSheet);
 
@@ -594,12 +582,17 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
                                                                                                               .peek(musicSheetAccompaniment -> musicSheetAccompaniment.setMusicSheetId(
                                                                                                                       musicSheet.getId()))
                                                                                                               .collect(Collectors.toList());
+
+            if (originalMusicSheet.getFirstPassAuditTime() != null) {
+                musicSheet.setFirstPassAuditTime(originalMusicSheet.getFirstPassAuditTime());
+            }
             musicSheetAccompanimentList.addAll(originalMusicSheetAccompanimentList);
             if (CollectionUtils.isEmpty(musicSheetAccompanimentList)) {
                 return;
             }
             musicSheetAccompanimentService.saveOrUpdateBatch(musicSheetAccompanimentList);
             musicSheet.setId(originalMusicSheetId);
+            musicSheet.setFavoriteCount(originalMusicSheet.getFavoriteCount());
         }
     }
 
@@ -1144,10 +1137,6 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         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();

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

@@ -27,9 +27,6 @@ public class MusicSheetDetailVo extends MusicSheet {
     @ApiModelProperty("收藏0:否,1:是")
     private YesOrNoEnum favorite;
 
-    @ApiModelProperty("收藏人数")
-    private Long favoriteCount;
-
     @ApiModelProperty("订单状态(WAIT_PAY:待支付;PAYING:支付中,PAID:已付款)")
     private OrderStatusEnum orderStatus;
 
@@ -72,13 +69,6 @@ public class MusicSheetDetailVo extends MusicSheet {
     @ApiModelProperty("审核理由")
     private String auditReason;
 
-    public Long getFavoriteCount() {
-        return favoriteCount;
-    }
-
-    public void setFavoriteCount(Long favoriteCount) {
-        this.favoriteCount = favoriteCount;
-    }
 
     public YesOrNoEnum getFavorite() {
         return favorite;

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

@@ -29,9 +29,6 @@ public class MusicSheetVo extends MusicSheet {
     @ApiModelProperty("收藏 0:否,1:是")
     private YesOrNoEnum favorite;
 
-    @ApiModelProperty("收藏人数")
-    private Long favoriteCount;
-
     @ApiModelProperty("是否购买/VIP(0:否,1:是) ")
     private YesOrNoEnum play;
 
@@ -49,13 +46,6 @@ public class MusicSheetVo extends MusicSheet {
         this.albumSortNumber = albumSortNumber;
     }
 
-    public Long getFavoriteCount() {
-        return favoriteCount;
-    }
-
-    public void setFavoriteCount(Long favoriteCount) {
-        this.favoriteCount = favoriteCount;
-    }
 
     public String getAddName() {
         return addName;

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

@@ -15,9 +15,4 @@
 		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>

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

@@ -11,6 +11,8 @@
         <result column="audio_type_" jdbcType="VARCHAR" property="audioType"/>
         <result column="music_tag_" jdbcType="VARCHAR" property="musicTag"/>
         <result column="play_speed_" jdbcType="INTEGER" property="playSpeed"/>
+        <result column="favorite_count_" jdbcType="INTEGER" property="favoriteCount"/>
+        <result column="first_pass_audit_time_" jdbcType="TIMESTAMP" property="firstPassAuditTime"/>
         <result column="can_evaluate_" jdbcType="TINYINT" property="canEvaluate"/>
         <result column="show_fingering_" jdbcType="TINYINT" property="showFingering"/>
         <result column="charge_type_" jdbcType="TINYINT" property="chargeType"/>
@@ -43,6 +45,8 @@
         t.audio_type_ as audioType,
         t.music_tag_ as musicTag,
         t.play_speed_ as playSpeed,
+        t.favorite_count_ as favoriteCount,
+        t.first_pass_audit_time_ as firstPassAuditTime,
         t.can_evaluate_ as canEvaluate,
         t.show_fingering_ as showFingering,
         t.charge_type_ as chargeType,
@@ -159,8 +163,6 @@
             where find_in_set(mt.id_,t.music_tag_) and mt.del_flag_ = 0  and mt.state_ = 1) as musicTagNames
         ,(select group_concat(s.name_) from subject s
             where find_in_set(s.id_,t.music_subject_) and s.del_flag_ = 0 ) as subjectNames
-        ,(select count(1) from music_favorite f
-            where f.music_sheet_id_ = t.id_) as favoriteCount
         ,amr.sort_number_ as albumSortNumber
         from music_sheet t
         left join album_music_relate amr on t.id_ = amr.music_sheet_id_
@@ -291,7 +293,9 @@
         <result column="reason" jdbcType="VARCHAR" property="reason"/>
         <result column="accompanimentType" jdbcType="VARCHAR" property="accompanimentType"/>
         <result column="notation" jdbcType="VARCHAR" property="notation"/>
-	<result column="musicImg" jdbcType="VARCHAR" property="musicImg"/>
+	    <result column="musicImg" jdbcType="VARCHAR" property="musicImg"/>
+	    <result column="favoriteCount" jdbcType="VARCHAR" property="favoriteCount"/>
+	    <result column="firstPassAuditTime" jdbcType="VARCHAR" property="firstPassAuditTime"/>
         <result column="realName" jdbcType="VARCHAR" property="realName"/>
         <result column="auditTime" jdbcType="VARCHAR" property="auditTime"/>
         <result column="auditName" jdbcType="VARCHAR" property="auditName"/>
@@ -315,26 +319,14 @@
         ,su.avatar_ as addUserAvatar
         ,(select group_concat(mt.name_) from music_tag mt
         where find_in_set(mt.id_,t.music_tag_) and mt.del_flag_ = 0  and mt.state_ = 1) as musicTagNames
-        ,(select count(1) as num from music_favorite af
-                left join sys_user su on af.user_id_ = su.id_
-                where su.del_flag_ = 0 and af.music_sheet_id_ = t.id_) as favoriteCount
         ,(select group_concat(s.name_) from subject s
         where find_in_set(s.id_,t.music_subject_)  and s.del_flag_ = 0) as subjectNames
         <if test="param.studentId != null">
             ,if(mf.id_ is not null,1,0) as favorite
-<!--            ,case when mspr.id_ is not null then 1-->
-<!--                when t.charge_type_ = 'FREE' then 1-->
-<!--                else 0 end as play-->
         </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_-->
-<!--                and mspr.student_id_ = #{param.studentId}-->
-<!--                and order_status_ = 'PAID'-->
             left join music_favorite mf on (t.id_ = mf.music_sheet_id_ and mf.user_id_ = #{param.studentId} <if test="clientType != null"> AND mf.client_type_ = #{clientType}</if> )
         </if>
         <where>
@@ -345,9 +337,23 @@
             </if>
         </where>
         order by
-        <if test="param.myself == null or param.myself == false ">
-            t.top_flag_ desc, t.sort_number_ desc, t2.num desc,
-        </if>
+        <choose>
+            <when test="param.musicSortType != null and param.musicSortType.code == 'TOP'">
+                t.top_flag_ desc, t.sort_number_ desc,
+            </when>
+            <when test="param.musicSortType != null and param.musicSortType.code == 'HOT'">
+                t.favorite_count_ desc,
+            </when>
+            <when test="param.musicSortType != null and param.musicSortType.code == 'NEW'">
+                t.first_pass_audit_time_ desc,
+            </when>
+            <otherwise>
+                <if test="param.myself == null or param.myself == false ">
+                    t.top_flag_ desc, t.sort_number_ desc, t.favorite_count_ desc,
+                </if>
+            </otherwise>
+        </choose>
+
         t.id_ desc
     </select>
 
@@ -737,5 +743,21 @@
         </where>
         GROUP BY t1.music_sheet_id_
     </select>
+
+    <update id="updateFavoriteCount">
+        update music_sheet set favorite_count_ =
+        <choose>
+            <when test="state.code == 0">
+                favorite_count_ - 1
+            </when>
+            <when test="state.code == 1">
+                favorite_count_ + 1
+            </when>
+            <otherwise>
+                favorite_count_
+            </otherwise>
+        </choose>
+        where id_ = #{musicSheetId}
+    </update>
     <!--单曲专辑数量统计-->
 </mapper>

+ 43 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java

@@ -1,5 +1,7 @@
 package com.yonge.cooleshow.student.controller;
 
+import com.yonge.cooleshow.biz.dal.dto.AppMusicSheetVo;
+import com.yonge.cooleshow.biz.dal.enums.MusicSortType;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -288,4 +290,45 @@ public class MusicSheetController extends BaseController {
         return succeed(PageUtil.pageInfo(musicSheetVoIPage));
     }
 
+
+    @ApiOperation(value = "app首页曲目数据", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/appMusicSheet", consumes="application/json", produces="application/json")
+    public HttpResponseResult<AppMusicSheetVo> appMusicSheet(@RequestBody StudentMusicSheetSearch query) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+
+        Student student = studentService.getById(sysUser.getId());
+        if (student == null) {
+            return failed("用户信息获取失败");
+        }
+        if(StringUtils.isBlank(query.getSubjectIds())){
+            query.setSubjectIds(student.getSubjectId());
+        }
+        // 检查app版本
+        query.setAuditVersion(appVersionInfoService.getAppAuditVersion(query.getPlatform(),query.getVersion()));
+
+        //  只能看通过审核 并且 启用的 曲目
+        query.setState(YesOrNoEnum.YES);
+        query.setAuditStatus(AuthStatusEnum.PASS);
+        query.setStudentId(sysUser.getId());
+        query.setMyself(false);
+        query.setRows(21);
+
+        AppMusicSheetVo appMusicSheetVo = new AppMusicSheetVo();
+        // 推荐曲目
+        query.setMusicSortType(MusicSortType.TOP);
+        appMusicSheetVo.setTopMusicSheet(musicSheetService.selectStudentPage(PageUtil.getPage(query), query, ClientEnum.STUDENT).getRecords());
+
+        // 最热曲目
+        query.setMusicSortType(MusicSortType.HOT);
+        appMusicSheetVo.setHotMusicSheet(musicSheetService.selectStudentPage(PageUtil.getPage(query), query, ClientEnum.STUDENT).getRecords());
+
+
+        // 最新曲目
+        query.setMusicSortType(MusicSortType.NEW);
+        appMusicSheetVo.setNewMusicSheet(musicSheetService.selectStudentPage(PageUtil.getPage(query), query, ClientEnum.STUDENT).getRecords());
+        return succeed(appMusicSheetVo);
+    }
 }

+ 45 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -1,5 +1,8 @@
 package com.yonge.cooleshow.teacher.controller;
 
+import com.yonge.cooleshow.biz.dal.dto.AppMusicSheetVo;
+import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.enums.MusicSortType;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -292,4 +295,46 @@ public class MusicSheetController extends BaseController {
         return succeed(PageUtil.pageInfo(musicSheetVoIPage));
     }
 
+
+    @ApiOperation(value = "app首页曲目数据", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/appMusicSheet", consumes="application/json", produces="application/json")
+    public HttpResponseResult<AppMusicSheetVo> appMusicSheet(@RequestBody StudentMusicSheetSearch query) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+
+        Teacher teacher = teacherService.getById(sysUser.getId());
+        if (teacher == null) {
+            return failed("用户信息获取失败");
+        }
+        if(StringUtils.isBlank(query.getSubjectIds())){
+            query.setSubjectIds(teacher.getSubjectId());
+        }
+
+        // 检查app版本
+        query.setAuditVersion(appVersionInfoService.getAppAuditVersion(query.getPlatform(),query.getVersion()));
+
+        //  只能看通过审核 并且 启用的 曲目
+        query.setState(YesOrNoEnum.YES);
+        query.setAuditStatus(AuthStatusEnum.PASS);
+        query.setStudentId(sysUser.getId());
+        query.setMyself(false);
+        query.setRows(21);
+
+        AppMusicSheetVo appMusicSheetVo = new AppMusicSheetVo();
+        // 推荐曲目
+        query.setMusicSortType(MusicSortType.TOP);
+        appMusicSheetVo.setTopMusicSheet(musicSheetService.selectStudentPage(PageUtil.getPage(query), query, ClientEnum.TEACHER).getRecords());
+
+        // 最热曲目
+        query.setMusicSortType(MusicSortType.HOT);
+        appMusicSheetVo.setHotMusicSheet(musicSheetService.selectStudentPage(PageUtil.getPage(query), query, ClientEnum.TEACHER).getRecords());
+
+
+        // 最新曲目
+        query.setMusicSortType(MusicSortType.NEW);
+        appMusicSheetVo.setNewMusicSheet(musicSheetService.selectStudentPage(PageUtil.getPage(query), query, ClientEnum.TEACHER).getRecords());
+        return succeed(appMusicSheetVo);
+    }
 }