|
@@ -83,6 +83,7 @@ import com.ym.mec.biz.dal.entity.ClassGroupRelation;
|
|
|
import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
|
|
|
import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
|
|
|
import com.ym.mec.biz.dal.entity.CourseSchedule;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
|
|
|
import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
|
|
|
import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
|
|
|
import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
|
|
@@ -90,6 +91,7 @@ import com.ym.mec.biz.dal.entity.CoursesGroup;
|
|
|
import com.ym.mec.biz.dal.entity.Group;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroup;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
|
|
|
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
|
|
|
import com.ym.mec.biz.dal.entity.PracticeGroup;
|
|
|
import com.ym.mec.biz.dal.entity.StudentRegistration;
|
|
|
import com.ym.mec.biz.dal.entity.Subject;
|
|
@@ -1125,89 +1127,99 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public boolean addStudentToClassGroupAndCourseArranging(Integer studentId, String classGroupIdListStr) {
|
|
|
-
|
|
|
- List<ClassGroup> classGroupList = classGroupDao.findClassGroupByIds(classGroupIdListStr);
|
|
|
- if(classGroupList == null || classGroupList.size() == 0){
|
|
|
- throw new BizException("班级查询失败");
|
|
|
- }
|
|
|
-
|
|
|
- Date date = new Date();
|
|
|
- List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
|
|
|
-
|
|
|
- for(ClassGroup classGroup : classGroupList){
|
|
|
- //1、增加班级人数
|
|
|
- classGroupDao.addStudentNum(classGroup);
|
|
|
-
|
|
|
- //2、插入关联关系
|
|
|
- ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
|
|
|
- classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
- classGroupStudentMapper.setClassGroupId(classGroup.getId());
|
|
|
- classGroupStudentMapper.setUserId(studentId);
|
|
|
- classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
|
|
|
- classGroupStudentMapper.setGroupType(classGroup.getGroupType());
|
|
|
- classGroupStudentMapper.setCreateTime(date);
|
|
|
- classGroupStudentMapperDao.insert(classGroupStudentMapper);
|
|
|
-
|
|
|
- //3、学生加入级未开始课程
|
|
|
- List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
|
|
|
- for (CourseSchedule courseSchedule : courseScheduleList) {
|
|
|
- CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
- courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
|
|
|
- courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
- courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
|
|
|
- courseScheduleStudentPayment.setUserId(studentId);
|
|
|
- courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
|
|
|
- courseScheduleStudentPayment.setCreateTime(date);
|
|
|
- courseScheduleStudentPayment.setUpdateTime(date);
|
|
|
- courseScheduleStudentPayments.add(courseScheduleStudentPayment);
|
|
|
- }
|
|
|
-
|
|
|
- List<Long> courseScheduleIds = courseScheduleList.stream().map(CourseSchedule::getId).collect(Collectors.toList());
|
|
|
- //4、调整线上基础技能班未上课课酬
|
|
|
- List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getClassGroupTeachers(classGroup.getId());
|
|
|
- int hasTeacherSalaryCount = 0;
|
|
|
- if (courseScheduleIds.size() > 0) {
|
|
|
- hasTeacherSalaryCount = courseScheduleTeacherSalaryDao.getHasTeacherSalaryCount(courseScheduleIds);
|
|
|
- }
|
|
|
- if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) && hasTeacherSalaryCount > 0) {
|
|
|
- Integer studentNum = classGroup.getStudentNum() + 1;
|
|
|
- List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
|
- courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
|
|
|
- for (CourseSchedule courseSchedule : courseScheduleList) {
|
|
|
- for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacher.getUserId(), ClassGroupTypeEnum.HIGH_ONLINE.getCode(), null);
|
|
|
- Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
- TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(courseSchedule.getType());
|
|
|
- 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(date);
|
|
|
- courseScheduleTeacherSalary.setUpdateTime(date);
|
|
|
- courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
|
|
|
- }
|
|
|
- }
|
|
|
- courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
|
|
|
- }
|
|
|
-
|
|
|
- //5、加入班级群组
|
|
|
- ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(studentId.toString())};
|
|
|
- imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- if (courseScheduleStudentPayments.size() != 0) {
|
|
|
- courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
|
|
|
- }
|
|
|
-
|
|
|
- return true;
|
|
|
+ public boolean addStudentToClassGroupAndCourseArranging(Integer studentId, String classGroupIdListStr,
|
|
|
+ List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList) {
|
|
|
+
|
|
|
+ List<ClassGroup> classGroupList = classGroupDao.findClassGroupByIds(classGroupIdListStr);
|
|
|
+ if (classGroupList == null || classGroupList.size() == 0) {
|
|
|
+ throw new BizException("班级查询失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ Date date = new Date();
|
|
|
+ List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
|
|
|
+
|
|
|
+ // 计算单价
|
|
|
+ Map<CourseScheduleType, BigDecimal> unitPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
+ Map<CourseScheduleType, BigDecimal> OriginTotalPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
+ for (MusicGroupPaymentCalenderCourseSettings musicGroupPaymentCalenderCourseSettings : musicGroupPaymentCalenderCourseSettingsList) {
|
|
|
+ unitPriceMap.put(
|
|
|
+ musicGroupPaymentCalenderCourseSettings.getCourseType(),
|
|
|
+ musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice().divide(
|
|
|
+ new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties())));
|
|
|
+
|
|
|
+ OriginTotalPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice());
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<CourseScheduleType, BigDecimal> totalPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
+
|
|
|
+ BigDecimal unitPrice = new BigDecimal(0);
|
|
|
+ CourseScheduleType courseType = null;
|
|
|
+ for (ClassGroup classGroup : classGroupList) {
|
|
|
+ // 1、增加班级人数
|
|
|
+ classGroupDao.addStudentNum(classGroup);
|
|
|
+
|
|
|
+ // 2、插入关联关系
|
|
|
+ ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
|
|
|
+ classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ classGroupStudentMapper.setClassGroupId(classGroup.getId());
|
|
|
+ classGroupStudentMapper.setUserId(studentId);
|
|
|
+ classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
|
|
|
+ classGroupStudentMapper.setGroupType(classGroup.getGroupType());
|
|
|
+ classGroupStudentMapper.setCreateTime(date);
|
|
|
+ classGroupStudentMapperDao.insert(classGroupStudentMapper);
|
|
|
+
|
|
|
+ // 3、学生加入级未开始课程
|
|
|
+ List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
|
|
|
+ for (CourseSchedule courseSchedule : courseScheduleList) {
|
|
|
+ CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
+ courseScheduleStudentPayment.setCourseSchedule(courseSchedule);
|
|
|
+ courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
|
|
|
+ courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ courseScheduleStudentPayment.setUserId(studentId);
|
|
|
+
|
|
|
+ unitPrice = unitPriceMap.get(courseSchedule.getType());
|
|
|
+ if (unitPrice != null) {
|
|
|
+ courseType = courseSchedule.getType();
|
|
|
+ BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()));
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(unitPrice.multiply(duration).setScale(2, BigDecimal.ROUND_DOWN));
|
|
|
+
|
|
|
+ if (totalPriceMap.containsKey(courseType)) {
|
|
|
+ totalPriceMap.put(courseType, totalPriceMap.get(courseType).add(courseScheduleStudentPayment.getExpectPrice()));
|
|
|
+ } else {
|
|
|
+ totalPriceMap.put(courseType, courseScheduleStudentPayment.getExpectPrice());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
|
|
|
+ courseScheduleStudentPayment.setCreateTime(date);
|
|
|
+ courseScheduleStudentPayment.setUpdateTime(date);
|
|
|
+ courseScheduleStudentPayments.add(courseScheduleStudentPayment);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5、加入班级群组
|
|
|
+ ImGroupMember[] imGroupMembers = new ImGroupMember[] { new ImGroupMember(studentId.toString()) };
|
|
|
+ imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if (courseScheduleStudentPayments.size() > 0) {
|
|
|
+ // 排序
|
|
|
+ Collections.sort(courseScheduleStudentPayments);
|
|
|
+ List<CourseScheduleType> list = new ArrayList<CourseSchedule.CourseScheduleType>();
|
|
|
+ for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
|
|
|
+ courseType = courseScheduleStudentPayment.getCourseSchedule().getType();
|
|
|
+ if (!list.contains(courseType)) {
|
|
|
+ list.add(courseType);
|
|
|
+
|
|
|
+ // 修改第一节课的金额
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(courseScheduleStudentPayment.getExpectPrice().add(
|
|
|
+ OriginTotalPriceMap.get(courseType).subtract(totalPriceMap.get(courseType))));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
@Override
|