Browse Source

Merge branch 'feature/1113-vipCourse' of http://git.dayaedu.com/yonge/cooleshow into feature/1113-vipCourse

刘俊驰 7 months ago
parent
commit
ee91203a91

+ 7 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherHomeController.java

@@ -91,6 +91,13 @@ public class TeacherHomeController extends BaseController {
         return succeed(sysMusicCompareRecordService.getTeacherPracticeHome(summarySearch));
     }
 
+    @ApiOperation("首页练习数据学员列表")
+    @PostMapping(value = "/studentPractice")
+    public HttpResponseResult<List<TeacherIndexWrapper.StudentPracticeSummaryDto>> studentPractice(@RequestBody TeacherIndexWrapper.StudentSearch studentSearch) {
+        studentSearch.setTeacherId(sysUserService.getUserId());
+        return succeed(sysMusicCompareRecordService.getTeacherHomeStudent(studentSearch));
+    }
+
     @ApiOperation(value = "课程统计")
     @PostMapping("/totalCourse")
     public HttpResponseResult<List<TeacherHomeWrapper.TeacherTotalCourse>> totalCourse(@RequestBody TeacherHomeWrapper.TeacherTotalCourseQuery query) {

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

@@ -79,4 +79,11 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
 	List<TeacherIndexWrapper.PracticeTimeDto> getStudentTrainTime(@Param("studentIds") List<Long> studentIds,
 																  @Param("param") TeacherIndexWrapper.SummarySearch summarySearch,
 																  @Param("groupBy") String groupBy);
+
+    List<TeacherIndexWrapper.PracticeTimeDto> getStudentTrainCount(@Param("studentIds") List<Long> studentIds,
+																   @Param("param") TeacherIndexWrapper.SummarySearch summarySearch,
+																   @Param("groupBy") String groupBy);
+
+	List<TeacherIndexWrapper.StudentPracticeSummaryDto> getStudentTrainOverViewList(@Param("studentIds") List<Long> studentIds,
+																					@Param("studentSearch") TeacherIndexWrapper.StudentSearch studentSearch);
 }

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

@@ -134,5 +134,5 @@ public interface TeacherDao extends BaseMapper<Teacher> {
      */
     List<StatGroupWrapper> countCustomerServiceMemberNum();
 
-    List<Long> getStudentIds(@Param("param") TeacherIndexWrapper.SummarySearch summarySearch);
+    List<Long> getStudentIds(@Param("teacherId") Long teacherId, @Param("subjectId") Long subjectId);
 }

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

@@ -66,4 +66,6 @@ public interface SysMusicCompareRecordService extends BaseService<Long, SysMusic
     Map<Long, SysMusicCompareRecord> getMapByIds(List<Long> musicPracticeRecordIds);
 
     TeacherIndexWrapper.TeacherPracticeHome getTeacherPracticeHome(TeacherIndexWrapper.SummarySearch summarySearch);
+
+    List<TeacherIndexWrapper.StudentPracticeSummaryDto> getTeacherHomeStudent(TeacherIndexWrapper.StudentSearch studentSearch);
 }

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

@@ -31,10 +31,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Author: cy
@@ -184,8 +181,10 @@ public class CourseRepliedServiceImpl extends ServiceImpl<CourseScheduleRepliedD
         queryWrapper.eq("student_id_", replied.getStudentId());
         queryWrapper.eq("course_schedule_id_", replied.getCourseScheduleId());
         queryWrapper.eq("course_group_id_", replied.getCourseGroupId());
-        queryWrapper.eq("course_group_type_", CourseScheduleEnum.PRACTICE.getCode());
         CourseScheduleReplied scheduleReplied = repliedDao.selectOne(queryWrapper);
+        if(Objects.nonNull(scheduleReplied)){
+            replied.setId(scheduleReplied.getId());
+        }
         return scheduleReplied == null ? true : false;
     }
 

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

@@ -530,7 +530,7 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
     public TeacherIndexWrapper.TeacherPracticeHome getTeacherPracticeHome(TeacherIndexWrapper.SummarySearch summarySearch) {
 		TeacherIndexWrapper.TeacherPracticeHome teacherPracticeHome = new TeacherIndexWrapper.TeacherPracticeHome();
 		//获取老师关联的学员
-		List<Long> studentIds = teacherService.getDao().getStudentIds(summarySearch);
+		List<Long> studentIds = teacherService.getDao().getStudentIds(summarySearch.getTeacherId(),summarySearch.getSubjectId());
 		if(CollectionUtils.isEmpty(studentIds)){
 			return teacherPracticeHome;
 		}
@@ -561,15 +561,25 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 			}
 		}
 		teacherPracticeHome.setPracticeTimes(sysMusicCompareRecordDao.getStudentTrainTime(studentIds,summarySearch,groupBy));
-
 		//练习人数
-//		teacherPracticeHome.setPracticeCounts(sysMusicCompareRecordDao.getStudentTrainCount(studentIds,summarySearch,groupBy));
+		teacherPracticeHome.setPracticeCounts(sysMusicCompareRecordDao.getStudentTrainCount(studentIds,summarySearch,groupBy));
 
         return teacherPracticeHome;
     }
 
+	@Override
+	public List<TeacherIndexWrapper.StudentPracticeSummaryDto> getTeacherHomeStudent(TeacherIndexWrapper.StudentSearch studentSearch) {
+		//获取老师关联的学员
+		List<Long> studentIds = teacherService.getDao().getStudentIds(studentSearch.getTeacherId(),studentSearch.getSubjectId());
+		if(CollectionUtils.isEmpty(studentIds)){
+			return Collections.emptyList();
+		}
+		//获取学员练习汇总
+		return sysMusicCompareRecordDao.getStudentTrainOverViewList(studentIds,studentSearch);
+	}
+
 
-    private String getExpireTime() {
+	private String getExpireTime() {
 
 		String homeworkExpireTime = sysConfigService.findConfigValue(SysConfigConstant.HOMEWORK_EXPIRE_TIME);
 		if (org.springframework.util.StringUtils.isEmpty(homeworkExpireTime)) {

+ 23 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TeacherIndexWrapper.java

@@ -29,6 +29,29 @@ public class TeacherIndexWrapper {
         @ApiModelProperty("老师id")
         private Long teacherId;
     }
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class StudentSearch {
+        @ApiModelProperty("开始时间")
+        private String startTime;
+
+        @ApiModelProperty("结束时间")
+        private String endTime;
+
+        @ApiModelProperty("乐器")
+        private Long subjectId;
+
+        @ApiModelProperty("老师id")
+        private Long teacherId;
+
+        @ApiModelProperty("排序字段")
+        private String sortField;
+
+        @ApiModelProperty("排序方式 ,ASC升序,DESC降序")
+        private String sortType;
+    }
 
     @Data
     @Builder

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

@@ -117,10 +117,7 @@
             <if test="teacherRepliedTime !=null">teacher_replied_time_ = #{teacherRepliedTime},</if>
             update_time_ = SYSDATE()
         </set>
-        WHERE student_id_ = #{studentId}
-        AND course_schedule_id_ = #{courseScheduleId}
-        AND course_group_id_ = #{courseGroupId}
-        AND course_group_type_ = #{courseGroupType}
+        WHERE id_ = #{id}
     </update>
     <select id="myReplied" resultType="com.yonge.cooleshow.biz.dal.vo.MyRepliedVo">
         SELECT

+ 38 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -583,6 +583,44 @@
 		GROUP BY DATE_FORMAT(mcr.create_time_, ${groupBy})
 		ORDER BY 'date'
 	</select>
+    <select id="getStudentTrainCount"
+            resultType="com.yonge.cooleshow.biz.dal.wrapper.TeacherIndexWrapper$PracticeTimeDto">
+		select COUNT(DISTINCT mcr.user_id_) practiceTime,DATE_FORMAT(mcr.create_time_, ${groupBy}) 'date' from sys_music_compare_record mcr
+		where mcr.user_id_ IN
+		<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+			#{studentId}
+		</foreach>
+		<if test="param.startTime != null and param.startTime != ''">
+			AND mcr.create_time_ BETWEEN #{param.startTime} AND #{param.endTime}
+		</if>
+		GROUP BY DATE_FORMAT(mcr.create_time_, ${groupBy})
+		ORDER BY 'date'
+	</select>
+	<select id="getStudentTrainOverViewList"
+			resultType="com.yonge.cooleshow.biz.dal.wrapper.TeacherIndexWrapper$StudentPracticeSummaryDto">
+		select su.username_ studentName,GROUP_CONCAT(sb.name_) subjectName,SUM(smcr.play_time_) totalPracticeTime,
+		       COUNT(DISTINCT DATE_FORMAT(smcr.create_time_, '%Y-%m-%d')) practiceDays,
+		       SUM(smcr.play_time_) / COUNT(DISTINCT DATE_FORMAT(smcr.create_time_, '%Y-%m-%d')) averagePracticeTime
+		from sys_music_compare_record smcr
+				 left join sys_user su ON su.id_ = smcr.user_id_
+				 left join student st ON st.user_id_ = su.id_
+				 left join subject sb ON FIND_IN_SET(sb.id_,st.subject_id_)
+		where smcr.user_id_ IN
+		<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+			#{studentId}
+		</foreach>
+		<if test="param.startTime != null and param.startTime != ''">
+			AND smcr.create_time_ BETWEEN #{param.startTime} AND #{param.endTime}
+		</if>
+		GROUP BY smcr.user_id_
+		<if test="param.sortField != null and param.sortField != ''">
+			ORDER BY ${param.sortField} ${param.sortType}
+		</if>
+		<if test="param.sortField == null or param.sortField == ''">
+			ORDER BY totalPracticeTime DESC
+		</if>
+		LIMIT 10
+	</select>
 	<!--曲目练习统计-->
 
 </mapper>

+ 8 - 8
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -402,7 +402,7 @@
                             WHERE live_state_ = 1 and type_ = 'temp'
                             group by lr.speaker_id_) a on a.speaker_id_ = t.user_id_
         where t.entry_flag_ = 1
-          and t.is_test_user_ = 0
+          and t.is_test_user_ = 0 AND t.lock_flag_ = 0
           and find_in_set(#{subjectId}, t.subject_id_)
         order by tt.fans_num_ desc
         limit 10
@@ -507,19 +507,19 @@
     <select id="getStudentIds" resultType="java.lang.Long">
         select distinct cssp.user_id_ from course_group cg
         left join course_schedule_student_payment cssp ON cssp.course_group_id_ = cg.id_
-        <if test="param.subjectId != null">
+        <if test="subjectId != null">
             left join student st ON st.user_id_ = cssp.user_id_
         </if>
-        where cg.status_ = 'ING' AND cg.teacher_id_ = #{param.teacherId}
-        <if test="param.subjectId != null">
-            and find_in_set(#{param.subjectId},st.subject_id_)
+        where cg.status_ = 'ING' AND cg.teacher_id_ = #{teacherId}
+        <if test="subjectId != null">
+            and find_in_set(#{subjectId},st.subject_id_)
         </if>
         union
         select distinct st.user_id_ from tenant_group tg
         left join student st ON st.tenant_group_id_ = tg.id_
-        where tg.admin_id_ = #{param.teacherId}
-        <if test="param.subjectId != null">
-            and find_in_set(#{param.subjectId},st.subject_id_)
+        where tg.admin_id_ = #{teacherId}
+        <if test="subjectId != null">
+            and find_in_set(#{subjectId},st.subject_id_)
         </if>
     </select>