فهرست منبع

Merge remote-tracking branch 'origin/feature/0529-live' into feature/0529-live

zouxuan 2 سال پیش
والد
کامیت
81e7b58241

+ 50 - 80
.idea/httpRequests/http-requests-log.http

@@ -1,3 +1,53 @@
+GET http://127.0.0.1:9002/classGroup/findTeacherClassStudents?classGroupId=191
+Authorization: bearer 7957b8d7-63d0-43e1-9c06-8a36b2cc85a4
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-05T193543.200.json
+
+###
+
+GET http://127.0.0.1:9002/classGroup/findTeacherClassStudents?classGroupId=197
+Authorization: bearer 7957b8d7-63d0-43e1-9c06-8a36b2cc85a4
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-05T193534.200.json
+
+###
+
+GET http://127.0.0.1:9002/classGroup/findTeacherClassStudents?courseScheduleId=1819
+Authorization: bearer 7957b8d7-63d0-43e1-9c06-8a36b2cc85a4
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-05T193400.200.json
+
+###
+
+GET http://127.0.0.1:9002/classGroup/findTeacherClassStudents?courseScheduleId=1270
+Authorization: bearer 7957b8d7-63d0-43e1-9c06-8a36b2cc85a4
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-05T193335.200.json
+
+###
+
+GET http://127.0.0.1:9002/classGroup/findTeacherClassStudents
+Authorization: bearer 7957b8d7-63d0-43e1-9c06-8a36b2cc85a4
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-05T193308.200.json
+
+###
+
 POST http://127.0.0.1:8005/studentManage/userPage
 Authorization: bearer b897da27-5a37-47df-8e76-54d80a61a55d
 Content-Type: application/json
@@ -763,83 +813,3 @@ Accept-Encoding: br,deflate,gzip,x-gzip
 
 ###
 
-POST http://127.0.0.1:8005/classGroup/teachingPointCourse
-Authorization: bearer 81d0c352-fcc8-4812-87f5-0f7a68d10451
-Content-Type: application/json
-coopId: 7
-Content-Length: 68
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{"startTime":"2023-05-22","endTime":"2023-05-28","page":1,"rows":20}
-
-<> 2023-06-01T155031.200.json
-
-###
-
-POST http://127.0.0.1:8005/classGroup/teachingPointCourse
-Authorization: bearer 81d0c352-fcc8-4812-87f5-0f7a68d10451
-Content-Type: application/json
-coopId: 7
-Content-Length: 68
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{"startTime":"2023-05-22","endTime":"2023-05-28","page":1,"rows":20}
-
-<> 2023-06-01T154820.200.json
-
-###
-
-POST http://127.0.0.1:8005/classGroup/teachingPointCourse
-Authorization: bearer 387ba749-39ac-4a02-a183-00cf8ac29f10
-Content-Type: application/json
-coopId: 7
-Content-Length: 68
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{"startTime":"2023-05-22","endTime":"2023-05-28","page":1,"rows":20}
-
-<> 2023-06-01T154745.200.json
-
-###
-
-POST http://127.0.0.1:8005/imGroup/updateImGroup
-Authorization: bearer 81d0c352-fcc8-4812-87f5-0f7a68d10451
-Content-Type: application/json
-tenantId: 1
-Content-Length: 54
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-	"name": "考虑图",
-	"id": "1660958104046542850"
-}
-
-<> 2023-06-01T145140.200.json
-
-###
-
-POST http://127.0.0.1:8005/imGroup/updateImGroup
-Authorization: bearer 81d0c352-fcc8-4812-87f5-0f7a68d10451
-Content-Type: application/json
-Content-Length: 54
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-	"name": "考虑图",
-	"id": "1660958104046542850"
-}
-
-<> 2023-06-01T145016.200.json
-
-###
-

+ 55 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassCourseSchudeleDto.java

@@ -13,6 +13,9 @@ import java.util.Date;
  */
 public class TeacherClassCourseSchudeleDto {
 
+    @ApiModelProperty("课程编号")
+    private Long id;
+
     @ApiModelProperty(value = "班级编号", required = false)
     private Long classGroupId;
 
@@ -72,6 +75,18 @@ public class TeacherClassCourseSchudeleDto {
 
     private Date expiryDate;
 
+    @ApiModelProperty("教学内容")
+    private String teachingContent;
+
+    @ApiModelProperty("教学要点")
+    private String teachingPoint;
+
+    @ApiModelProperty("直播客户端")
+    private String os;
+
+    @ApiModelProperty("课程组编号")
+    private String musicGroupId;
+
     public Date getExpiryDate() {
         return expiryDate;
     }
@@ -239,4 +254,44 @@ public class TeacherClassCourseSchudeleDto {
     public void setType(CourseSchedule.CourseScheduleType type) {
         this.type = type;
     }
+
+    public String getTeachingContent() {
+        return teachingContent;
+    }
+
+    public void setTeachingContent(String teachingContent) {
+        this.teachingContent = teachingContent;
+    }
+
+    public String getTeachingPoint() {
+        return teachingPoint;
+    }
+
+    public void setTeachingPoint(String teachingPoint) {
+        this.teachingPoint = teachingPoint;
+    }
+
+    public String getOs() {
+        return os;
+    }
+
+    public void setOs(String os) {
+        this.os = os;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
 }

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassStudentDto.java

@@ -22,6 +22,29 @@ public class TeacherClassStudentDto {
     @ApiModelProperty(value = "连续旷课次数")
     private Integer continuousAbsenteeismTimes;
 
+    @ApiModelProperty(value = "声部")
+    private String subjectName;
+
+
+    @ApiModelProperty(value = "会员状态")
+    private Boolean vipFlag;
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Boolean getVipFlag() {
+        return vipFlag;
+    }
+
+    public void setVipFlag(Boolean vipFlag) {
+        this.vipFlag = vipFlag;
+    }
+
     public String getPhone() {
         return phone;
     }

+ 22 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1863,12 +1863,33 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
-        List dataList = null;
+        List<TeacherClassStudentDto> dataList = null;
         int count = classGroupStudentMapperDao.findClassStudentNum(params);
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
             dataList = classGroupStudentMapperDao.findClassStudent(params);
+
+            // 学生ID集合
+            Set<Long> studentIds = dataList.stream().map(o -> o.getUserId()).filter(Objects::nonNull).collect(Collectors.toSet());
+
+            // 会员信息
+            Map<Integer, Student> studentMap = studentService.getMapByIds(studentIds.stream().map(Long::intValue).collect(Collectors.toList()));
+
+            // 声部
+            Map<Integer, StudentSubjectDto> studentSubjectDtoMap = subjectService.getSubjectByStudentId(new HashSet<>(studentIds));
+
+            for (TeacherClassStudentDto teacherClassStudentDto : dataList) {
+                Student student = studentMap.get(teacherClassStudentDto.getUserId().intValue());
+                if (student != null) {
+                    teacherClassStudentDto.setVipFlag(student.getMemberRankSettingId() != null);
+                }
+                StudentSubjectDto studentSubjectDto = studentSubjectDtoMap.get(teacherClassStudentDto.getUserId().intValue());
+                if (studentSubjectDto != null) {
+                    teacherClassStudentDto.setSubjectName(studentSubjectDto.getSubjectName());
+                }
+            }
+
         }
         if (count == 0) {
             dataList = new ArrayList<>();

+ 40 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -2154,7 +2154,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		VipGroup vipGroup=null;
 		VipGroupActivity vipGroupActivity = null;
 
-		if(groupType == VIP) {
+		if(groupType == VIP || groupType == LIVE) {
 			vipGroup = vipGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
 			if(Objects.isNull(vipGroup)){
 				throw new BizException("课程组信息不存在");
@@ -2334,7 +2334,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 }
             }
         }
-		if(groupType == VIP){
+		if(groupType == VIP || groupType == LIVE){
 			CourseSchedule courseSchedule = courseSchedules.stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
 //
 //			BigDecimal teacherSalary=BigDecimal.ZERO;
@@ -3470,7 +3470,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         }
         MapUtil.populateMap(params, queryInfo);
 
-        List dataList = null;
+        List<StudentCourseScheduleRecordDto> dataList = null;
         int count = courseScheduleDao.countStudentCourseScheduleRecords(params);
         if (count > 0) {
             pageInfo.setTotal(count);
@@ -3764,6 +3764,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				cttnMap = courseScheduleTeacherSalaries.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId, Collectors.groupingBy(CourseScheduleTeacherSalary::getTeacherRole, Collectors.mapping(CourseScheduleTeacherSalary::getUserName, Collectors.toSet()))));
 			}
 
+			// 课程组信息
+			Map<String, ImLiveBroadcastRoomDto> liveRoomMap = getCourseLiveRoomMap(dataList);
+
 			for (TeacherClassCourseSchudeleDto e : dataList) {
 				e.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(e.getClassGroupId().intValue(),new Date()));
 				e.setTotalClassTimes(courseScheduleDao.countCurrentCourseTime(e.getCourseScheduleId()));
@@ -3777,6 +3780,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				if(cttnMap.containsKey(e.getCourseScheduleId())&&cttnMap.get(e.getCourseScheduleId()).containsKey(TeachTypeEnum.TEACHING)){
 					e.setTeachingNames(StringUtils.join(cttnMap.get(e.getCourseScheduleId()).get(TeachTypeEnum.TEACHING), ","));
 				}
+
+				// 直播课直播间配置
+				if (liveRoomMap.containsKey(e.getMusicGroupId())) {
+					e.setOs(liveRoomMap.get(e.getMusicGroupId()).getOs());
+				}
 			}
 		}
 		if (count == 0) {
@@ -3786,6 +3794,35 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		return pageInfo;
 	}
 
+	/**
+	 * 课程直播配置
+	 * @param dataList List<TeacherClassCourseSchudeleDto>
+	 * @return Map<String, ImLiveBroadcastRoomDto>
+	 */
+	public Map<String, ImLiveBroadcastRoomDto> getCourseLiveRoomMap(List<TeacherClassCourseSchudeleDto> dataList) {
+
+		Map<String, ImLiveBroadcastRoomDto> liveRoomMap = Maps.newHashMap();
+		{
+			Map<Long, String> collect = dataList.stream()
+					.filter(x -> StringUtils.isNotEmpty(x.getMusicGroupId()))
+					.filter(x -> x.getType().equals(CourseScheduleType.LIVE))
+					.collect(Collectors.toMap(TeacherClassCourseSchudeleDto::getId, TeacherClassCourseSchudeleDto::getMusicGroupId, (o, n) -> n));
+
+			if (MapUtils.isNotEmpty(collect)) {
+
+				List<Long> liveGroupIds = collect.values().stream().map(Long::parseLong).distinct().collect(Collectors.toList());
+
+				liveRoomMap = vipGroupDao.getVipGroupByIds(liveGroupIds).stream()
+						.filter(x -> Objects.nonNull(x.getLiveConfigJson()))
+						.collect(Collectors.toMap(x -> String.valueOf(x.getId()),
+								x -> JSON.parseObject(x.getLiveConfigJson(), ImLiveBroadcastRoomDto.class), (o, n) -> n));
+
+			}
+
+		}
+		return liveRoomMap;
+	}
+
 	@Override
     public CourseAttendanceDetailHeadInfoDto findCourseAttendanceDetailHeadInfo(Long courseScheduleId) {
         if (Objects.isNull(courseScheduleId)) {

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -2017,7 +2017,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             //获取学员基本信息
             List<Integer> userIds = dataList.stream().map(e -> e.getId()).collect(Collectors.toList());
             List<Integer> subjectIds = dataList.stream().map(e -> e.getSubjectId()).collect(Collectors.toList());
-            List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(userIds);
+
+            List<SimpleUserDto> usersSimpleInfo = new ArrayList<>();
+            if (!CollectionUtils.isEmpty(userIds)) {
+                usersSimpleInfo = teacherDao.getUsersSimpleInfo(userIds);
+            }
             Map<Integer, SimpleUserDto> studentInfoMap = usersSimpleInfo.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, s -> s, (s1, s2) -> s1));
             List<Integer> organIds = usersSimpleInfo.stream().map(e -> Integer.parseInt(e.getOrganIds())).collect(Collectors.toList());
             Map<Integer, String> organMap = getMap("organization", "id_", "name_", organIds,queryInfo.getTenantId(), Integer.class, String.class);

+ 13 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1198,6 +1198,8 @@
                CONCAT(cs.class_date_, ' ', cs.end_class_time_)   end_class_time_,
                cs.teach_mode_,
                cs.class_group_id_,
+               cs.teaching_content_,
+               cs.teaching_point_,
         		s.name_ school_name_
         FROM course_schedule_student_payment cssp
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
@@ -1462,6 +1464,7 @@
     </select>
 
     <resultMap id="teacherClassCourseSchedule" type="com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto">
+        <result column="id_" property="id" />
         <result property="classGroupId" column="class_group_id_"/>
         <result property="courseScheduleId" column="course_schedule_id_"/>
         <result property="courseScheduleName" column="course_schedule_name_"/>
@@ -1481,6 +1484,9 @@
         <result column="school_id_" property="schoolId"/>
         <result column="school_name_" property="schoolName"/>
         <result column="expiry_date_" property="expiryDate"/>
+        <result column="teaching_content_" property="teachingContent" />
+        <result column="teaching_point_" property="teachingPoint" />
+        <result column="music_group_id_" property="musicGroupId" />
     </resultMap>
 
     <sql id="teacherClassCourseScheduleQueryCondition">
@@ -1523,6 +1529,9 @@
         su.real_name_ username_,
         cg.total_class_times_,
         cs.schoole_id_ school_id_,
+        cs.teaching_content_,
+        cs.teaching_point_,
+        cs.music_group_id_,
         s.name_ school_name_,
         ch.expiry_date_
         FROM
@@ -1574,6 +1583,7 @@
 
     <select id="queryTeacherHistoryClassCourseSchedule" resultMap="teacherClassCourseSchedule">
         SELECT
+        cs.id_,
         cs.class_group_id_,
         cs.id_ course_schedule_id_,
         cs.class_date_,
@@ -1592,6 +1602,9 @@
         MAX(sa.current_class_times_) current_class_times_,
         cs.schoole_id_ school_id_,
         ch.expiry_date_,
+        cs.teaching_content_,
+        cs.teaching_point_,
+        cs.music_group_id_,
         s.name_ school_name_
         FROM
         student_attendance sa