zouxuan 1 рік тому
батько
коміт
e5235f85ec

+ 18 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/SysMusicCompareRecordQueryInfo.java

@@ -49,6 +49,24 @@ public class SysMusicCompareRecordQueryInfo {
         @ApiModelProperty(name = "机构编号")
         private Long tenantId;
 
+        @ApiModelProperty(name = "最小训练总时长")
+        private Integer minTrainTimes;
+
+        @ApiModelProperty(name = "最大训练总时长")
+        private Integer maxTrainTimes;
+
+        @ApiModelProperty(name = "最小训练天数")
+        private Integer minTrainDays;
+
+        @ApiModelProperty(name = "最大训练天数")
+        private Integer maxTrainDays;
+
+        @ApiModelProperty(name = "最小平均训练时长")
+        private Integer minAvgTrainTimes;
+
+        @ApiModelProperty(name = "最大平均训练时长")
+        private Integer maxAvgTrainTimes;
+
         @ApiModelProperty(name = "排序字段")
         private String sortField = "trainTimes";
 

+ 61 - 10
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -380,28 +380,79 @@
 			AND st.tenant_id_ = #{tenantId}
 		</if>
 		group by st.user_id_
+		<trim prefix="HAVING" suffixOverrides="AND" >
+			<if test="minTrainTimes != null">
+				trainTimes &gt;= #{minTrainTimes} AND
+			</if>
+			<if test="maxTrainTimes != null">
+				trainTimes &lt;= #{maxTrainTimes} AND
+			</if>
+			<if test="minTrainDays != null">
+				trainDays &gt;= #{minTrainDays} AND
+			</if>
+			<if test="maxTrainDays != null">
+				trainDays &lt;= #{maxTrainDays} AND
+			</if>
+			<if test="minAvgTrainTimes != null">
+				avgTrainTimes &gt;= #{minAvgTrainTimes} AND
+			</if>
+			<if test="maxAvgTrainTimes != null">
+				avgTrainTimes &lt;= #{maxAvgTrainTimes} AND
+			</if>
+		</trim>
 		ORDER BY ${sortField} ${sortType}
 		<include refid="global.limit"/>
 	</select>
 	<select id="countWeChatStudentTrainData" resultType="java.lang.Integer">
-		select COUNT(DISTINCT st.user_id_)
+		select COUNT(st.user_id_)
 		from student st
-		left join sys_user su ON st.user_id_ = su.id_
-		LEFT JOIN sys_music_compare_record smcr ON smcr.user_id_ = st.user_id_
+		left join
+		(select smcr.user_id_,
+		DATE_FORMAT(smcr.create_time_, '%Y-%m-%d') create_time_,
+		SUM(smcr.play_time_)                       playTime
+		from sys_music_compare_record smcr
 		<where>
-			<if test="clientId != null and clientId!= ''">
-				AND smcr.client_id_ = #{clientId}
+			<if test="startTime != null and startTime != ''">
+				AND smcr.create_time_ BETWEEN #{startTime} AND #{endTime}
 			</if>
 			<if test="tenantId != null">
 				AND smcr.tenant_id_ = #{tenantId}
 			</if>
-			<if test="startTime != null and startTime != ''">
-				AND smcr.create_time_ BETWEEN #{startTime} AND #{endTime}
-			</if>
-			<if test="search != null and search != ''">
-				AND su.username_ LIKE CONCAT('%',#{keyword},'%')
+			<if test="clientId != null and clientId!= ''">
+				AND smcr.client_id_ = #{clientId}
 			</if>
 		</where>
+		group by smcr.user_id_, DATE_FORMAT(create_time_, '%Y-%m-%d')) mprs ON mprs.user_id_ = st.user_id_
+		left join sys_user su ON st.user_id_ = su.id_
+		left join subject sb ON sb.id_ = st.subject_id_
+		where mprs.user_id_ = st.user_id_
+		<if test="search != null and search != ''">
+			AND su.username_ LIKE CONCAT('%',#{keyword},'%')
+		</if>
+		<if test="tenantId != null">
+			AND st.tenant_id_ = #{tenantId}
+		</if>
+		group by st.user_id_
+		<trim prefix="HAVING" suffixOverrides="AND" >
+			<if test="minTrainTimes != null">
+				trainTimes &gt;= #{minTrainTimes} AND
+			</if>
+			<if test="maxTrainTimes != null">
+				trainTimes &lt;= #{maxTrainTimes} AND
+			</if>
+			<if test="minTrainDays != null">
+				trainDays &gt;= #{minTrainDays} AND
+			</if>
+			<if test="maxTrainDays != null">
+				trainDays &lt;= #{maxTrainDays} AND
+			</if>
+			<if test="minAvgTrainTimes != null">
+				avgTrainTimes &gt;= #{minAvgTrainTimes} AND
+			</if>
+			<if test="maxAvgTrainTimes != null">
+				avgTrainTimes &lt;= #{maxAvgTrainTimes} AND
+			</if>
+		</trim>
 	</select>
 	<select id="wechatCompareRecordSum"
 			resultType="com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo$WechatCompareRecordSumDto">