|
@@ -1,6 +1,9 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
|
|
|
import com.ym.mec.biz.dal.dto.ClassGroupStudentInfoDto;
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
|
import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
|
|
@@ -21,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, ClassGroupStudentMapper> implements ClassGroupStudentMapperService {
|
|
@@ -40,6 +44,14 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
private ClassGroupRelationService classGroupRelationService;
|
|
|
@Autowired
|
|
|
private ImFeignService imFeignService;
|
|
|
+ @Autowired
|
|
|
+ private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
|
|
|
+ @Autowired
|
|
|
+ private ClassGroupTeacherMapperService classGroupTeacherMapperService;
|
|
|
+ @Autowired
|
|
|
+ private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
|
|
|
+ @Autowired
|
|
|
+ private TeacherDefaultMusicGroupSalaryService teacherDefaultMusicGroupSalaryService;
|
|
|
|
|
|
private static String holidayUrl = "http://tool.bitefu.net/jiari/?d=";
|
|
|
|
|
@@ -49,14 +61,20 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ClassGroupStudentMapper findClassStudentMapperByUserIdAndClassGroupId(Integer userId, Integer classGroupId,String status) {
|
|
|
+ public ClassGroupStudentMapper findClassStudentMapperByUserIdAndClassGroupId(Integer userId, Integer classGroupId, String status) {
|
|
|
return classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId, status);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public boolean delClassGroupStudent(Integer userId, Integer classGroupId) throws Exception {
|
|
|
- ClassGroupStudentMapper classStudentMapper = findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId,"NORMAL");
|
|
|
+ ClassGroup classGroup = classGroupService.get(classGroupId);
|
|
|
+ Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupId);
|
|
|
+ if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) && studentNum <= 3) {
|
|
|
+ throw new BizException("乐团网管课班级人数不能少于3");
|
|
|
+ }
|
|
|
+
|
|
|
+ ClassGroupStudentMapper classStudentMapper = findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId, "NORMAL");
|
|
|
if (classStudentMapper == null) {
|
|
|
throw new BizException("班级学生不存在");
|
|
|
}
|
|
@@ -78,9 +96,41 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
courseScheduleStudentPaymentService.deleteStudentCourseSchedule(userId, courseScheduleList);
|
|
|
}
|
|
|
|
|
|
- //4、学生退出班级群组
|
|
|
- ClassGroup classGroup = classGroupService.get(classGroupId);
|
|
|
+ //4、调整未上课课酬
|
|
|
+ List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getClassGroupTeachers(classGroupId);
|
|
|
+ if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) && courseScheduleList.size() > 0) {
|
|
|
+ Date nowDate = new Date();
|
|
|
+ List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
|
+ List<Long> courseScheduleIds = courseScheduleList.stream().map(CourseSchedule::getId).collect(Collectors.toList());
|
|
|
+ courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
|
|
|
+ for (CourseSchedule courseSchedule : courseScheduleList) {
|
|
|
+ for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
|
|
|
+ List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacher.getUserId(), ClassGroupTypeEnum.HIGH_ONLINE.getCode(), null);
|
|
|
+ if (teacherSalaryList == null || teacherSalaryList.size() == 0) {
|
|
|
+ throw new BizException("请设置老师线上网管课课酬");
|
|
|
+ }
|
|
|
+ Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
+ TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(courseSchedule.getType());
|
|
|
+ studentNum -= 1;
|
|
|
+ BigDecimal salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
|
|
|
+
|
|
|
+ CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
+ courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
|
|
|
+ courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
|
+ courseScheduleTeacherSalary.setTeacherRole(classGroupTeacher.getTeacherRole());
|
|
|
+ courseScheduleTeacherSalary.setUserId(classGroupTeacher.getUserId());
|
|
|
+ courseScheduleTeacherSalary.setExpectSalary(salary);
|
|
|
+ courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
+ courseScheduleTeacherSalary.setCreateTime(nowDate);
|
|
|
+ courseScheduleTeacherSalary.setUpdateTime(nowDate);
|
|
|
+ courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
|
|
|
+ }
|
|
|
|
|
|
+ //5、学生退出班级群组
|
|
|
ImGroupMember[] imGroupMembers = {new ImGroupMember(userId.toString())};
|
|
|
// 退出群组
|
|
|
imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
@@ -95,7 +145,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public boolean adjustClassGroup(Integer userId, Integer oldClassGroupId, Integer classGroupId) throws Exception {
|
|
|
- ClassGroupStudentMapper classStudentMapper = findClassStudentMapperByUserIdAndClassGroupId(userId, oldClassGroupId,"NORMAL");
|
|
|
+ ClassGroupStudentMapper classStudentMapper = findClassStudentMapperByUserIdAndClassGroupId(userId, oldClassGroupId, "NORMAL");
|
|
|
if (classStudentMapper == null) {
|
|
|
throw new BizException("原班级学生不存在");
|
|
|
}
|
|
@@ -146,6 +196,12 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
Date nowDate = new Date();
|
|
|
HashSet<String> userIdStrSet = new HashSet<>(Arrays.asList(userIdsStr.split(",")));
|
|
|
|
|
|
+ Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupId);
|
|
|
+ if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) &&
|
|
|
+ ((studentNum + userIdStrSet.size()) < 3 || (studentNum + userIdStrSet.size()) > 5)) {
|
|
|
+ throw new BizException("乐团网管课班级人数不能小于3大于5");
|
|
|
+ }
|
|
|
+
|
|
|
//1、班级关系添加
|
|
|
List<ClassGroupStudentMapper> classGroupStudentMappers = new ArrayList<>();
|
|
|
List<ImGroupMember> imGroupMemberList = new ArrayList<>();
|
|
@@ -160,7 +216,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
iterator.remove();
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
|
|
|
classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
classGroupStudentMapper.setClassGroupId(classGroupId);
|
|
@@ -181,10 +237,6 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMappers);
|
|
|
}
|
|
|
|
|
|
- //添加进IM群组
|
|
|
- ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
|
|
|
- imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
-
|
|
|
//2、班级人数调整
|
|
|
classGroupService.updateClassStudentNum(classGroupId.longValue(), userIdStrSet.size());
|
|
|
|
|
@@ -210,11 +262,48 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
if (courseScheduleStudentPayments.size() > 0) {
|
|
|
courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
|
|
|
}
|
|
|
+ //4、调整未上课课酬
|
|
|
+ List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getClassGroupTeachers(classGroupId);
|
|
|
+ if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) && courseScheduleList.size() > 0) {
|
|
|
+ List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
|
+ List<Long> courseScheduleIds = courseScheduleList.stream().map(CourseSchedule::getId).collect(Collectors.toList());
|
|
|
+ courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
|
|
|
+ for (CourseSchedule courseSchedule : courseScheduleList) {
|
|
|
+ for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
|
|
|
+ List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacher.getUserId(), ClassGroupTypeEnum.HIGH_ONLINE.getCode(), null);
|
|
|
+ if (teacherSalaryList == null || teacherSalaryList.size() == 0) {
|
|
|
+ throw new BizException("请设置老师线上网管课课酬");
|
|
|
+ }
|
|
|
+ Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
+ TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(courseSchedule.getType());
|
|
|
+ studentNum -= 1;
|
|
|
+ BigDecimal salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
|
|
|
+
|
|
|
+ CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
+ courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
|
|
|
+ courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
|
+ courseScheduleTeacherSalary.setTeacherRole(classGroupTeacher.getTeacherRole());
|
|
|
+ courseScheduleTeacherSalary.setUserId(classGroupTeacher.getUserId());
|
|
|
+ courseScheduleTeacherSalary.setExpectSalary(salary);
|
|
|
+ courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
+ courseScheduleTeacherSalary.setCreateTime(nowDate);
|
|
|
+ courseScheduleTeacherSalary.setUpdateTime(nowDate);
|
|
|
+ courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
|
|
|
+ }
|
|
|
+
|
|
|
//乐团在合奏班
|
|
|
if (classGroupRelation != null) {
|
|
|
addStudents(classGroupRelation.getClassGroupId(), userIdsStr, GroupType.MUSIC);
|
|
|
}
|
|
|
|
|
|
+ //5、添加进IM群组
|
|
|
+ ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
|
|
|
+ imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -235,6 +324,6 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
|
|
|
@Override
|
|
|
public List<ClassGroupStudentInfoDto> findStudentByGroupOrClassGroup(String groupId, Integer classGroupId, GroupType groupType) {
|
|
|
- return classGroupStudentMapperDao.findByGroupOrClassGroup(groupId,groupType,classGroupId);
|
|
|
+ return classGroupStudentMapperDao.findByGroupOrClassGroup(groupId, groupType, classGroupId);
|
|
|
}
|
|
|
}
|