Browse Source

Merge branch 'feature/0529-live' of http://git.dayaedu.com/yonge/mec into master_saas

zouxuan 2 years ago
parent
commit
ff3ca4537d

+ 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)) {

+ 21 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -429,25 +429,27 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
                 null, DateUtil.dateToString(courseSchedule.getStartClassTime(), "yyyy年MM月dd日 HH点mm分"),
                 courseSchedule.getType().getMsg(), sysUser.getUsername(), remark);
 
-        // 发送消息到学校端
-        MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
-
-        IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
-                SchoolStaffWrapper.SchoolStaffQuery.builder().schoolId(musicGroup.getCooperationOrganId().longValue()).build());
-        List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
-        if (org.apache.commons.collections.CollectionUtils.isNotEmpty(records)) {
-
-            Map<Integer, String> userMap = new HashMap<>();
-            records.forEach(o -> userMap.put(o.getUserId().intValue(), o.getUserId().toString()));
-
-            String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
-            String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-            String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-            String leaveTime = classDate + " " + startClassTime + "-" + endClassTime;
-
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_STUDENT_LEAVE,
-                    userMap, null, 0, null,
-                    "SCHOOL",musicGroup.getName(),sysUser.getUsername(),leaveTime,courseSchedule.getName());
+        if(courseSchedule.getGroupType() == GroupType.MUSIC){
+            // 发送消息到学校端
+            MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
+
+            IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
+                    SchoolStaffWrapper.SchoolStaffQuery.builder().schoolId(musicGroup.getCooperationOrganId().longValue()).build());
+            List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
+            if (org.apache.commons.collections.CollectionUtils.isNotEmpty(records)) {
+
+                Map<Integer, String> userMap = new HashMap<>();
+                records.forEach(o -> userMap.put(o.getUserId().intValue(), o.getUserId().toString()));
+
+                String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+                String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+                String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+                String leaveTime = classDate + " " + startClassTime + "-" + endClassTime;
+
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_STUDENT_LEAVE,
+                        userMap, null, 0, null,
+                        "SCHOOL",musicGroup.getName(),sysUser.getUsername(),leaveTime,courseSchedule.getName());
+            }
         }
         return true;
     }

+ 82 - 88
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import static com.ym.mec.biz.dal.enums.GroupType.LIVE;
 import static com.ym.mec.biz.dal.enums.GroupType.VIP;
 import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
 import static java.math.BigDecimal.*;
@@ -2017,7 +2018,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);
@@ -4510,97 +4515,86 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     public void createLiveCourse() {
         List<VipGroup> vipGroups = vipGroupDao.findNoCreateSuccessVipGroup(null,"LIVE");
         if(!CollectionUtils.isEmpty(vipGroups)){
-            List<VipGroup> noStudentGroup = vipGroups.stream().filter(e -> StringUtils.isEmpty(e.getStudentIdList())).collect(Collectors.toList());
-            List<VipGroup> hasStudentGroup = vipGroups.stream().filter(e -> StringUtils.isNotEmpty(e.getStudentIdList())).collect(Collectors.toList());
-            if(!CollectionUtils.isEmpty(noStudentGroup)){
-                noStudentGroup.forEach(e->e.setStatus(VipGroupStatusEnum.CANCEL));
-                //关闭课程组
-                vipGroupDao.batchUpdate(noStudentGroup);
-            }
-            if(!CollectionUtils.isEmpty(hasStudentGroup)){
-                //排课
-                for (VipGroup vipGroup : hasStudentGroup) {
-                    ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroup.getId(),vipGroup.getGroupType());
+            //排课
+            for (VipGroup vipGroup : vipGroups) {
+                ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroup.getId(),vipGroup.getGroupType());
+                List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
+                if(CollectionUtils.isEmpty(classGroupStudents)){
+                    vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
+                }else {
                     vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
                     Integer tenantId = vipGroup.getTenantId();
-                    for (String s : vipGroup.getStudentIdList().split(",")) {
-                        classGroup.setDelFlag(0);
-                        VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupCategoryId(),
-                                vipGroup.getOrganId(), vipGroup.getGroupType());
-
-                        //生成课表
-                        List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
-                        classGroup.setTotalClassTimes(courseSchedules.size());
-
-                        courseScheduleService.batchAddCourseSchedule1(courseSchedules);
-
-                        //考勤信息
-                        List<TeacherAttendance> teacherAttendances = new ArrayList<>();
-                        //创建课酬信息
-                        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
-                        Map<String, BigDecimal> stringBigDecimalMap = countVipGroupPredictFee1(vipGroup, vipGroup.getUserId(), null);
-                        for (CourseSchedule courseSchedule : courseSchedules) {
-                            //创建教师课程薪水记录
-                            CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
-                            courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
-                            courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
-                            courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
-                            courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
-                            courseScheduleTeacherSalary.setUserId(courseSchedule.getActualTeacherId().intValue());
-                            courseScheduleTeacherSalary.setClassGroupId(courseSchedule.getClassGroupId());
-                            courseScheduleTeacherSalary.setExpectSalary(stringBigDecimalMap.get("offlineTeacherSalary"));
-                            courseScheduleTeacherSalary.setActualSalary(null);
-                            courseScheduleTeacherSalary.setTenantId(tenantId);
-                            courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
-
-                            TeacherAttendance teacherAttendance = new TeacherAttendance();
-                            teacherAttendance.setGroupType(courseSchedule.getGroupType());
-                            teacherAttendance.setClassGroupId(courseSchedule.getClassGroupId());
-                            teacherAttendance.setMusicGroupId(courseSchedule.getMusicGroupId());
-                            teacherAttendance.setTeacherId(courseSchedule.getActualTeacherId());
-                            teacherAttendance.setCourseScheduleId(courseSchedule.getId());
-                            teacherAttendance.setTenantId(tenantId);
-                            teacherAttendances.add(teacherAttendance);
-                        }
-                        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
-                        teacherAttendanceDao.batchInsert(teacherAttendances);
-
-                        //群聊数据
-                        Map<Integer, String> userRoleMap = new HashMap<Integer, String>(5);
-                        if (Objects.nonNull(vipGroup.getEducationalTeacherId())) {
-                            userRoleMap.put(vipGroup.getEducationalTeacherId(), "乐团主管");
-                        }
-                        userRoleMap.put(vipGroup.getUserId(), "指导老师");
-                        //生成课程学员关联
-                        List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
-                        List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
+                    classGroup.setDelFlag(0);
+                    VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupCategoryId(),
+                            vipGroup.getOrganId(), vipGroup.getGroupType());
+                    //生成课表
+                    List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
+                    classGroup.setTotalClassTimes(courseSchedules.size());
+                    courseScheduleService.batchAddCourseSchedule1(courseSchedules);
+                    //考勤信息
+                    List<TeacherAttendance> teacherAttendances = new ArrayList<>();
+                    //创建课酬信息
+                    List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
+                    Map<String, BigDecimal> stringBigDecimalMap = countVipGroupPredictFee1(vipGroup, vipGroup.getUserId(), null);
+                    for (CourseSchedule courseSchedule : courseSchedules) {
+                        //创建教师课程薪水记录
+                        CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
+                        courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
+                        courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
+                        courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
+                        courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
+                        courseScheduleTeacherSalary.setUserId(courseSchedule.getActualTeacherId().intValue());
+                        courseScheduleTeacherSalary.setClassGroupId(courseSchedule.getClassGroupId());
+                        courseScheduleTeacherSalary.setExpectSalary(stringBigDecimalMap.get("offlineTeacherSalary"));
+                        courseScheduleTeacherSalary.setActualSalary(null);
+                        courseScheduleTeacherSalary.setTenantId(tenantId);
+                        courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
+
+                        TeacherAttendance teacherAttendance = new TeacherAttendance();
+                        teacherAttendance.setGroupType(courseSchedule.getGroupType());
+                        teacherAttendance.setClassGroupId(courseSchedule.getClassGroupId());
+                        teacherAttendance.setMusicGroupId(courseSchedule.getMusicGroupId());
+                        teacherAttendance.setTeacherId(courseSchedule.getActualTeacherId());
+                        teacherAttendance.setCourseScheduleId(courseSchedule.getId());
+                        teacherAttendance.setTenantId(tenantId);
+                        teacherAttendances.add(teacherAttendance);
+                    }
+                    courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
+                    teacherAttendanceDao.batchInsert(teacherAttendances);
 
-                        List<Integer> studentIdList = classGroupStudents.stream().map(e -> e.getUserId()).collect(Collectors.toList());
-                        for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
-                            StudentPaymentOrder successOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroup.getId(), classGroupStudent.getUserId(), "SUCCESS","VIP".equals(vipGroup.getGroupType())?"SMALL_CLASS_TO_BUY":"LIVE_GROUP_BUY");
-                            //实际支付金额,去除优惠券
-                            BigDecimal actualPrice = successOrder.getExpectAmount();
-                            BigDecimal divide = actualPrice.divide(new BigDecimal(courseSchedules.size()), ROUND_DOWN);
-                            BigDecimal firstAmount = actualPrice.subtract(divide.multiply(new BigDecimal(courseSchedules.size()))).add(divide);
-                            for (int i = 0; i < courseSchedules.size(); i++) {
-                                CourseSchedule courseSchedule = courseSchedules.get(i);
-                                CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
-                                courseScheduleStudentPayment.setUserId(classGroupStudent.getUserId());
-                                courseScheduleStudentPayment.setGroupType(courseSchedule.getGroupType());
-                                courseScheduleStudentPayment.setMusicGroupId(courseSchedule.getMusicGroupId());
-                                courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
-                                courseScheduleStudentPayment.setClassGroupId(courseSchedule.getClassGroupId());
-                                if (i == 0) {
-                                    courseScheduleStudentPayment.setExpectPrice(firstAmount);
-                                } else {
-                                    courseScheduleStudentPayment.setExpectPrice(divide);
-                                }
-                                courseScheduleStudentPayment.setOriginalPrice(TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode()) ? vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice() : vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
-                                courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
-                                courseScheduleStudentPayments.add(courseScheduleStudentPayment);
+                    //群聊数据
+                    Map<Integer, String> userRoleMap = new HashMap<Integer, String>(5);
+                    if (Objects.nonNull(vipGroup.getEducationalTeacherId())) {
+                        userRoleMap.put(vipGroup.getEducationalTeacherId(), "乐团主管");
+                    }
+                    userRoleMap.put(vipGroup.getUserId(), "指导老师");
+                    //生成课程学员关联
+                    List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
+                    List<Integer> studentIdList = classGroupStudents.stream().map(e -> e.getUserId()).collect(Collectors.toList());
+                    for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
+                        StudentPaymentOrder successOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroup.getId(), classGroupStudent.getUserId(), "SUCCESS","VIP".equals(vipGroup.getGroupType())?"SMALL_CLASS_TO_BUY":"LIVE_GROUP_BUY");
+                        //实际支付金额,去除优惠券
+                        BigDecimal actualPrice = successOrder.getExpectAmount();
+                        BigDecimal divide = actualPrice.divide(new BigDecimal(courseSchedules.size()), ROUND_DOWN);
+                        BigDecimal firstAmount = actualPrice.subtract(divide.multiply(new BigDecimal(courseSchedules.size()))).add(divide);
+                        for (int i = 0; i < courseSchedules.size(); i++) {
+                            CourseSchedule courseSchedule = courseSchedules.get(i);
+                            CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                            courseScheduleStudentPayment.setUserId(classGroupStudent.getUserId());
+                            courseScheduleStudentPayment.setGroupType(courseSchedule.getGroupType());
+                            courseScheduleStudentPayment.setMusicGroupId(courseSchedule.getMusicGroupId());
+                            courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+                            courseScheduleStudentPayment.setClassGroupId(courseSchedule.getClassGroupId());
+                            if (i == 0) {
+                                courseScheduleStudentPayment.setExpectPrice(firstAmount);
+                            } else {
+                                courseScheduleStudentPayment.setExpectPrice(divide);
                             }
-                            userRoleMap.put(classGroupStudent.getUserId(), null);
+                            courseScheduleStudentPayment.setOriginalPrice(TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode()) ? vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice() : vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
+                            courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
+                            courseScheduleStudentPayments.add(courseScheduleStudentPayment);
                         }
+                        userRoleMap.put(classGroupStudent.getUserId(), null);
                         studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
 
                         courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
@@ -4610,8 +4604,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                         imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
                     }
                     imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
-                    vipGroupDao.update(vipGroup);
                 }
+                vipGroupDao.update(vipGroup);
             }
         }
     }

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -1583,7 +1583,7 @@
         <if test="groupType == 'MUSIC'">
             LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_
         </if>
-        <if test="groupType == 'VIP'">
+        <if test="groupType == 'VIP' or groupType == 'LIVE'">
             LEFT JOIN vip_group mg ON mg.id_ = cg.music_group_id_
         </if>
         <if test="groupType == 'PRACTICE'">

+ 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

+ 4 - 13
mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseScheduleController.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.util.date.DateUtil;
 import com.yonge.log.model.AuditLogAnnotation;
@@ -32,12 +33,10 @@ public class StudentCourseScheduleController extends BaseController {
 
 	@Autowired
 	private CourseScheduleService scheduleService;
-
 	@Autowired
 	private StudentAttendanceService studentAttendanceService;
-
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
+	private SysUserService sysUserService;
 
 	@ApiOperation(value = "根据月份获取乐团在该月有课的日期")
 	@GetMapping("/getCourseScheduleDateByMonth")
@@ -69,10 +68,7 @@ public class StudentCourseScheduleController extends BaseController {
 	@PostMapping("/leave")
 	@AuditLogAnnotation(operateName = "请假")
 	public Object leave(Long courseScheduleId, String reason) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+		SysUser user = sysUserService.getUser();
 		if (user.getTenantId() == null) {
 			return failed("机构信息异常,请联系老师确认机构信息");
 		}
@@ -95,11 +91,6 @@ public class StudentCourseScheduleController extends BaseController {
 	@ApiOperation(value = "获取本周课程规划")
 	@GetMapping("/queryCoursePlan")
 	public Object queryCoursePlan(){
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if(sysUser == null || sysUser.getId() == null){
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		
 		Date now = new Date();
 		
 		Date startDate = DateUtil.getWeekMondayWithDate(now);
@@ -108,7 +99,7 @@ public class StudentCourseScheduleController extends BaseController {
 		Date endDate = DateUtil.addDays(startDate, 7);
 		endDate = DateUtil.getLastSecondWithDay(endDate);
 		
-		return succeed(scheduleService.queryMusicCoursePlan(sysUser.getId(), startDate, endDate));
+		return succeed(scheduleService.queryMusicCoursePlan(sysUserService.getUserId(), startDate, endDate));
 	}
 
 }

+ 8 - 19
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherLeaveRecordController.java

@@ -1,24 +1,19 @@
 package com.ym.mec.teacher.controller;
 
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.entity.TeacherLeaveRecord;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.TeacherLeaveRecordService;
+import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
-import java.util.Date;
-import java.util.Objects;
-
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.entity.TeacherLeaveRecord;
-import com.ym.mec.biz.service.TeacherLeaveRecordService;
-import com.ym.mec.common.controller.BaseController;
+import java.util.Date;
 
 @Api(tags = "老师请假服务")
 @RequestMapping("teacherLeaveRecord")
@@ -26,22 +21,16 @@ import com.ym.mec.common.controller.BaseController;
 public class TeacherLeaveRecordController extends BaseController {
 
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
-
+	private SysUserService sysUserService;
 	@Autowired
 	private CourseScheduleDao courseScheduleDao;
-
 	@Autowired
 	private TeacherLeaveRecordService teacherLeaveRecordService;
 
 	@ApiOperation(value = "查询vip课列表")
 	@GetMapping("/queryVipCourseScheduleList")
 	public Object queryVipCourseScheduleList(Date startTime, Date endTime) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (Objects.isNull(sysUser)) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		return succeed(courseScheduleDao.queryTeacherCourseScheduleListByTimeRangeAndType(sysUser.getId(), null, startTime, endTime));
+		return succeed(courseScheduleDao.queryTeacherCourseScheduleListByTimeRangeAndType(sysUserService.getUserId(), null, startTime, endTime));
 	}
 
 	@ApiOperation(value = "请假")

+ 4 - 14
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -53,7 +53,7 @@ public class VipGroupManageController extends BaseController {
     @Autowired
     private CourseScheduleService scheduleService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private TeacherDao teacherDao;
     @Autowired
@@ -141,10 +141,6 @@ public class VipGroupManageController extends BaseController {
     @PostMapping("/vipGroupApply")
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/vipGroupApply')")
     public Object vipGroupApply(@RequestBody VipGroupApplyDto vipGroupApplyDto){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
         Integer userId = vipGroupApplyDto.getVipGroupApplyBaseInfo().getUserId();
         Teacher teacher = teacherDao.get(userId);
         if(Objects.isNull(teacher)){
@@ -178,20 +174,14 @@ public class VipGroupManageController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/liveGroupDetail')")
     public HttpResponseResult<VipGroupApplyDto> liveGroupDetail(@PathVariable Long id){
         return succeed(vipGroupService.liveGroupDetail(id));
-
     }
 
-
     @ApiOperation(value = "获取教务与指导老师公共分部")
     @GetMapping("/getPublicOrgans")
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/getPublicOrgans')")
     public HttpResponseResult getPublicOrgans(Integer eduTeacherId, Integer teacherId){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
         if(Objects.isNull(eduTeacherId)){
-            eduTeacherId=sysUser.getId();
+            eduTeacherId=sysUserService.getUserId();
         }
         return succeed(vipGroupService.getPublicOrgans(eduTeacherId, teacherId));
     }
@@ -330,9 +320,9 @@ public class VipGroupManageController extends BaseController {
 			return failed("vip课信息找不到");
 		}
 
-		SysUser student = sysUserFeignService.queryUserById(studentApplyRefunds.getUserId());
+		SysUser student = sysUserService.queryUserById(studentApplyRefunds.getUserId());
 
-		SysUser teacher = sysUserFeignService.queryUserById(vipGroup.getUserId());
+		SysUser teacher = sysUserService.queryUserById(vipGroup.getUserId());
 
 		ModelMap model = new ModelMap();
 		model.put("student", student.getUsername());