소스 검색

feat:学生端智能陪练排行优化

Joburgess 3 년 전
부모
커밋
6aedbefe3e

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicCompareRecordDao.java

@@ -96,4 +96,17 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
      */
     SysMusicCompareWeekData getUserWeekCompareData(@Param("userId") Integer userId,
                                                    @Param("monday") String monday);
+
+    /**
+     * @describe 获取用户本周最高分对应曲目编号
+     * @author Joburgess
+     * @date 2021/8/30 0030
+     * @param userId:
+     * @param monday:
+     * @param heardLevel:
+     * @return java.lang.Integer
+     */
+    Integer getUserWeekMaxMusicScoreId(@Param("userId") Integer userId,
+                                       @Param("monday") String monday,
+                                        @Param("heardLevel") HeardLevelEnum heardLevel);
 }

+ 31 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareWeekData.java

@@ -24,13 +24,16 @@ public class SysMusicCompareWeekData {
 	
 	/** 本周入门级最高分 */
 	private Integer beginnerMaxScore;
-	
+	private Integer beginnerMaxScoreId;
+
 	/** 本周进阶级最高分 */
 	private Integer advancedMaxScore;
-	
+	private Integer advancedMaxScoreId;
+
 	/** 本周大师级最高分 */
 	private Integer performerMaxScore;
-	
+	private Integer performerMaxScoreId;
+
 	public void setUserId(Integer userId){
 		this.userId = userId;
 	}
@@ -94,7 +97,31 @@ public class SysMusicCompareWeekData {
 	public Integer getPerformerMaxScore(){
 		return this.performerMaxScore;
 	}
-			
+
+	public Integer getBeginnerMaxScoreId() {
+		return beginnerMaxScoreId;
+	}
+
+	public void setBeginnerMaxScoreId(Integer beginnerMaxScoreId) {
+		this.beginnerMaxScoreId = beginnerMaxScoreId;
+	}
+
+	public Integer getAdvancedMaxScoreId() {
+		return advancedMaxScoreId;
+	}
+
+	public void setAdvancedMaxScoreId(Integer advancedMaxScoreId) {
+		this.advancedMaxScoreId = advancedMaxScoreId;
+	}
+
+	public Integer getPerformerMaxScoreId() {
+		return performerMaxScoreId;
+	}
+
+	public void setPerformerMaxScoreId(Integer performerMaxScoreId) {
+		this.performerMaxScoreId = performerMaxScoreId;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareWeekDataServiceImpl.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.SysMusicCompareRecordDao;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
+import com.ym.mec.biz.dal.enums.HeardLevelEnum;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.util.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +39,9 @@ public class SysMusicCompareWeekDataServiceImpl extends BaseServiceImpl<Integer,
 		SysMusicCompareWeekData userWeekCompareData = sysMusicCompareRecordDao.getUserWeekCompareData(userId, monday.toString());
 		userWeekCompareData.setUserId(userId);
 		userWeekCompareData.setMonday(Date.from(monday.atStartOfDay(DateUtil.zoneId).toInstant()));
+		userWeekCompareData.setBeginnerMaxScoreId(sysMusicCompareRecordDao.getUserWeekMaxMusicScoreId(userId, monday.toString(), HeardLevelEnum.BEGINNER));
+		userWeekCompareData.setAdvancedMaxScoreId(sysMusicCompareRecordDao.getUserWeekMaxMusicScoreId(userId, monday.toString(), HeardLevelEnum.ADVANCED));
+		userWeekCompareData.setPerformerMaxScoreId(sysMusicCompareRecordDao.getUserWeekMaxMusicScoreId(userId, monday.toString(), HeardLevelEnum.PERFORMER));
 
 		if(Objects.isNull(userWeekData)){
 			sysMusicCompareWeekDataDao.insert(userWeekCompareData);

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -396,4 +396,10 @@
 		FROM sys_music_compare_record smcr
 		WHERE user_id_=#{userId} AND monday_ = #{monday}
 	</select>
+
+	<select id="getUserWeekMaxMusicScoreId" resultType="java.lang.Integer">
+		SELECT sys_music_score_id_ FROM sys_music_compare_record
+		WHERE user_id_=#{userId} AND monday_ = #{monday} AND heard_level_ = #{heardLevel, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+		ORDER BY score_ DESC LIMIT 1
+	</select>
 </mapper>

+ 39 - 11
mec-biz/src/main/resources/config/mybatis/SysMusicCompareWeekDataMapper.xml

@@ -30,9 +30,12 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
 		</selectKey>
 		-->
-		INSERT INTO sys_music_compare_week_data (user_id_,monday_,train_num_,train_days_,train_time_,beginner_max_score_,advanced_max_score_,performer_max_score_,
+		INSERT INTO sys_music_compare_week_data (user_id_,monday_,train_num_,train_days_,train_time_,
+		                                         beginner_max_score_,beginner_max_score_id_,advanced_max_score_,advanced_max_score_id_,
+		                                         performer_max_score_,performer_max_score_id_,
 		                                         create_time_,update_time_)
-		VALUES(#{userId},#{monday},#{trainNum},#{trainDays},#{trainTime},#{beginnerMaxScore},#{advancedMaxScore},#{performerMaxScore},NOW(),NOW())
+		VALUES(#{userId},#{monday},#{trainNum},#{trainDays},#{trainTime},#{beginnerMaxScore},#{beginnerMaxScoreId},
+		       #{advancedMaxScore},#{advancedMaxScoreId},#{performerMaxScore},#{performerMaxScoreId},NOW(),NOW())
 	</insert>
 	
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.SysMusicCompareWeekData">
@@ -50,12 +53,21 @@
 			<if test="beginnerMaxScore!=null">
 				beginner_max_score_ = #{beginnerMaxScore},
 			</if>
+			<if test="beginnerMaxScoreId!=null">
+				beginner_max_score_id_ = #{beginnerMaxScoreId},
+			</if>
 			<if test="advancedMaxScore!=null">
 				advanced_max_score_ = #{advancedMaxScore},
 			</if>
+			<if test="advancedMaxScoreId!=null">
+				advanced_max_score_id_ = #{advancedMaxScoreId},
+			</if>
 			<if test="performerMaxScore!=null">
 				performer_max_score_ = #{performerMaxScore},
 			</if>
+			<if test="performerMaxScoreId!=null">
+				performer_max_score_id_ = #{performerMaxScoreId},
+			</if>
 			update_time_ = NOW()
 		</set>
 		WHERE user_id_=#{userId} AND monday_ = #{monday}
@@ -80,8 +92,8 @@
 		smcwd.user_id_ userId,
 			su.avatar_ avatar,
 			su.username_ studentName,
-			smcwd.train_num_ trainNum,
 			<if test="orderType==1">
+				sms.name_ musicScoreName,
 				<if test="heardLevel==null">
 					smcwd.advanced_max_score_ score,
 				</if>
@@ -95,37 +107,53 @@
 					smcwd.performer_max_score_ score,
 				</if>
 			</if>
+			smcwd.train_num_ trainNum,
 			smcwd.train_days_ trainDays,
 			smcwd.train_time_ trainTime
 		FROM sys_music_compare_week_data smcwd
 		LEFT JOIN sys_user su ON smcwd.user_id_=su.id_
 		LEFT JOIN student stu ON smcwd.user_id_ = stu.user_id_
+		<if test="orderType==1">
+			LEFT JOIN sys_music_score sms
+			<if test="heardLevel==null">
+				ON smcwd.advanced_max_score_id_ = sms.id_
+			</if>
+			<if test="heardLevel=='BEGINNER'">
+				ON smcwd.beginner_max_score_id_ = sms.id_
+			</if>
+			<if test="heardLevel=='ADVANCED'">
+				ON smcwd.advanced_max_score_id_ = sms.id_
+			</if>
+			<if test="heardLevel=='PERFORMER'">
+				ON smcwd.performer_max_score_id_ = sms.id_
+			</if>
+		</if>
 		WHERE smcwd.monday_ = #{monday}
 			AND stu.user_id_=smcwd.user_id_
 			ORDER BY
 			<if test="orderType==null">
-				smcwd.train_time_
+				smcwd.train_time_ DESC,
 			</if>
 			<if test="orderType==0">
-				smcwd.train_time_
+				smcwd.train_time_ DESC,
 			</if>
 			<if test="orderType==1">
 				<if test="heardLevel==null">
-					smcwd.advanced_max_score_
+					smcwd.advanced_max_score_ DESC,
 				</if>
 				<if test="heardLevel=='BEGINNER'">
-					smcwd.beginner_max_score_
+					smcwd.beginner_max_score_ DESC,
 				</if>
 				<if test="heardLevel=='ADVANCED'">
-					smcwd.advanced_max_score_
+					smcwd.advanced_max_score_ DESC,
 				</if>
 				<if test="heardLevel=='PERFORMER'">
-					smcwd.performer_max_score_
+					smcwd.performer_max_score_ DESC,
 				</if>
 			</if>
 			<if test="orderType==2">
-				smcwd.train_days_
+				smcwd.train_days_ DESC,
 			</if>
-			DESC
+			smcwd.user_id_
 	</select>
 </mapper>