|  | @@ -89,6 +89,8 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |      private SysMessageService sysMessageService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private GroupDao groupDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private static final Logger LOGGER = LoggerFactory
 | 
	
		
			
				|  |  |              .getLogger(PracticeGroupService.class);
 | 
	
	
		
			
				|  | @@ -103,32 +105,32 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |      public HttpResponseResult createCourseGroup(CourseGroupCreateDto courseGroupCreateInfo) {
 | 
	
		
			
				|  |  |          CoursesGroup courseGroup = courseGroupCreateInfo.getCoursesGroup();
 | 
	
		
			
				|  |  |          CourseGenerateDto courseCycleInfo = courseGroupCreateInfo.getCourseCycleInfo();
 | 
	
		
			
				|  |  | -        if(Objects.isNull(courseGroup.getName())|| StringUtils.isBlank(courseGroup.getName())){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(courseGroup.getName()) || StringUtils.isBlank(courseGroup.getName())) {
 | 
	
		
			
				|  |  |              throw new BizException("请填写课程名称");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if(Objects.isNull(courseGroup.getSubjectId())){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(courseGroup.getSubjectId())) {
 | 
	
		
			
				|  |  |              throw new BizException("请选择科目");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if(Objects.isNull(courseGroup.getMaxStudentNum())){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(courseGroup.getMaxStudentNum())) {
 | 
	
		
			
				|  |  |              throw new BizException("请填写班级人数");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if(Objects.isNull(courseCycleInfo.getSingleClassMinutes())){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(courseCycleInfo.getSingleClassMinutes())) {
 | 
	
		
			
				|  |  |              throw new BizException("请填写课程时长");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if(Objects.isNull(courseCycleInfo.getCourseCreateStartTime())){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(courseCycleInfo.getCourseCreateStartTime())) {
 | 
	
		
			
				|  |  |              throw new BizException("请填写课程开始时间");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if(Objects.isNull(courseCycleInfo.getCourseCount())){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(courseCycleInfo.getCourseCount())) {
 | 
	
		
			
				|  |  |              throw new BizException("请填写课程数量");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          studentDao.lockUser(courseGroup.getTeacherId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //总课程时长
 | 
	
		
			
				|  |  | -        Integer totalCourseTime=courseCycleInfo.getCourseCount()*courseCycleInfo.getSingleClassMinutes();
 | 
	
		
			
				|  |  | +        Integer totalCourseTime = courseCycleInfo.getCourseCount() * courseCycleInfo.getSingleClassMinutes();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  | -            sysTenantAccountService.update(courseGroup.getTeacherId(), -totalCourseTime, "", SysTenantAccountDetail.TransType.CONSUME, "",BigDecimal.ZERO,"课程组创建");
 | 
	
		
			
				|  |  | +            sysTenantAccountService.update(courseGroup.getTeacherId(), -totalCourseTime, "", SysTenantAccountDetail.TransType.CONSUME, "", BigDecimal.ZERO, "课程组创建");
 | 
	
		
			
				|  |  |          } catch (Exception e) {
 | 
	
		
			
				|  |  |              TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  |              return BaseController.failed("余额不足,请充值。");
 | 
	
	
		
			
				|  | @@ -136,11 +138,11 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          Teacher teacher = teacherDao.get(courseGroup.getTeacherId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        Date now=new Date();
 | 
	
		
			
				|  |  | +        Date now = new Date();
 | 
	
		
			
				|  |  |          courseGroup.setSingleClassMinutes(courseCycleInfo.getSingleClassMinutes());
 | 
	
		
			
				|  |  |          courseGroup.setStatus(GroupStatusEnum.NORMAL);
 | 
	
		
			
				|  |  |          courseGroup.setOrganId(teacher.getTeacherOrganId());
 | 
	
		
			
				|  |  | -        List<CourseSchedule> newCourses = courseScheduleService.createCourses(courseGroupCreateInfo.getCourseCycleInfo(),true);
 | 
	
		
			
				|  |  | +        List<CourseSchedule> newCourses = courseScheduleService.createCourses(courseGroupCreateInfo.getCourseCycleInfo(), true);
 | 
	
		
			
				|  |  |          for (CourseSchedule newCourse : newCourses) {
 | 
	
		
			
				|  |  |              newCourse.setTeachMode(TeachModeEnum.ONLINE);
 | 
	
		
			
				|  |  |              newCourse.setGroupType(GroupType.COMM);
 | 
	
	
		
			
				|  | @@ -153,33 +155,33 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |              newCourse.setOrganId(courseGroup.getOrganId());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  | -            courseScheduleService.checkNewCourseSchedules(newCourses,false);
 | 
	
		
			
				|  |  | +            courseScheduleService.checkNewCourseSchedules(newCourses, false);
 | 
	
		
			
				|  |  |          } catch (Exception e) {
 | 
	
		
			
				|  |  |              TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  |              String errMessage;
 | 
	
		
			
				|  |  | -            String courseName=e.getMessage().substring(e.getMessage().indexOf(")-")+2);
 | 
	
		
			
				|  |  | -            courseName = courseName.substring(0,courseName.indexOf("("));
 | 
	
		
			
				|  |  | +            String courseName = e.getMessage().substring(e.getMessage().indexOf(")-") + 2);
 | 
	
		
			
				|  |  | +            courseName = courseName.substring(0, courseName.indexOf("("));
 | 
	
		
			
				|  |  |              String courseTime = e.getMessage().substring(e.getMessage().indexOf("在") + 1);
 | 
	
		
			
				|  |  |              courseTime = courseTime.substring(0, courseTime.indexOf("至"));
 | 
	
		
			
				|  |  | -            errMessage="现在课程:";
 | 
	
		
			
				|  |  | -            errMessage+=courseName;
 | 
	
		
			
				|  |  | -            errMessage+="<br/>冲突时间:";
 | 
	
		
			
				|  |  | -            errMessage+=courseTime;
 | 
	
		
			
				|  |  | +            errMessage = "现在课程:";
 | 
	
		
			
				|  |  | +            errMessage += courseName;
 | 
	
		
			
				|  |  | +            errMessage += "<br/>冲突时间:";
 | 
	
		
			
				|  |  | +            errMessage += courseTime;
 | 
	
		
			
				|  |  |              return BaseController.failed(HttpStatus.FOUND, errMessage);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          CourseSchedule firstCourseSchedule = newCourses.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get();
 | 
	
		
			
				|  |  | -        if(firstCourseSchedule.getStartClassTime().before(now)){
 | 
	
		
			
				|  |  | +        if (firstCourseSchedule.getStartClassTime().before(now)) {
 | 
	
		
			
				|  |  |              throw new BizException("开课时间不可小于当前时间");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          CourseSchedule latestCourseSchedule = newCourses.stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
 | 
	
		
			
				|  |  |          courseGroup.setCoursesStartDate(firstCourseSchedule.getStartClassTime());
 | 
	
		
			
				|  |  |          courseGroup.setCoursesEndDate(latestCourseSchedule.getEndClassTime());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        JSONArray courseTimesArray=new JSONArray();
 | 
	
		
			
				|  |  | +        JSONArray courseTimesArray = new JSONArray();
 | 
	
		
			
				|  |  |          for (CourseTimeDto courseTime : courseCycleInfo.getCourseTimes()) {
 | 
	
		
			
				|  |  | -            JSONObject courseTimeObject=new JSONObject();
 | 
	
		
			
				|  |  | -            courseTimeObject.put(String.valueOf(courseTime.getDayOfWeek()),courseTime.getStartClassTime());
 | 
	
		
			
				|  |  | +            JSONObject courseTimeObject = new JSONObject();
 | 
	
		
			
				|  |  | +            courseTimeObject.put(String.valueOf(courseTime.getDayOfWeek()), courseTime.getStartClassTime());
 | 
	
		
			
				|  |  |              courseTimesArray.add(courseTimeObject);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -252,7 +254,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public PageInfo findTeacherCourseGroups(Integer teacherId, GroupCourseScheduleQueryInfo queryInfo) {
 | 
	
		
			
				|  |  | -        if(Objects.isNull(teacherId)){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(teacherId)) {
 | 
	
		
			
				|  |  |              throw new BizException("请指定老师");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -261,7 +263,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |          MapUtil.populateMap(params, queryInfo);
 | 
	
		
			
				|  |  |          params.put("teacherId", teacherId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        List<CourseGroupTeacherCardDto> groupCards=new ArrayList<>();
 | 
	
		
			
				|  |  | +        List<CourseGroupTeacherCardDto> groupCards = new ArrayList<>();
 | 
	
		
			
				|  |  |          int count = coursesGroupDao.countTeacherGroups(params);
 | 
	
		
			
				|  |  |          if (count > 0) {
 | 
	
		
			
				|  |  |              pageInfo.setTotal(count);
 | 
	
	
		
			
				|  | @@ -283,9 +285,9 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |              List<GroupValidDateDto> groupsValidate = courseScheduleDao.findGroupsValidate(groupIds, GroupType.COMM);
 | 
	
		
			
				|  |  |              Map<String, GroupValidDateDto> groupValidateMap = groupsValidate.stream().collect(Collectors.toMap(GroupValidDateDto::getGroupId, e -> e));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            groupCards=new ArrayList<>();
 | 
	
		
			
				|  |  | +            groupCards = new ArrayList<>();
 | 
	
		
			
				|  |  |              for (CoursesGroup teacherCourseGroup : teacherCourseGroups) {
 | 
	
		
			
				|  |  | -                CourseGroupTeacherCardDto groupCard=new CourseGroupTeacherCardDto();
 | 
	
		
			
				|  |  | +                CourseGroupTeacherCardDto groupCard = new CourseGroupTeacherCardDto();
 | 
	
		
			
				|  |  |                  groupCard.setId(teacherCourseGroup.getId());
 | 
	
		
			
				|  |  |                  groupCard.setGroupType(GroupType.COMM);
 | 
	
		
			
				|  |  |                  groupCard.setName(teacherCourseGroup.getName());
 | 
	
	
		
			
				|  | @@ -295,20 +297,20 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |                  groupCard.setSubjectName(idSubjectMap.get(teacherCourseGroup.getSubjectId()).getName());
 | 
	
		
			
				|  |  |                  GroupCourseTimesDto groupCourseTimesInfo = groupCourseTimesInfoMap.get(String.valueOf(teacherCourseGroup.getId()));
 | 
	
		
			
				|  |  |                  GroupValidDateDto groupValidDate = groupValidateMap.get(String.valueOf(teacherCourseGroup.getId()));
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(groupValidDate)){
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(groupValidDate)) {
 | 
	
		
			
				|  |  |                      groupCard.setCoursesStartDate(groupValidDate.getStartDate());
 | 
	
		
			
				|  |  |                      groupCard.setCoursesEndDate(groupValidDate.getEndDate());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  groupCard.setClassGroupId(groupCourseTimesInfo.getClassGroupId());
 | 
	
		
			
				|  |  |                  groupCard.setTotalCourseTimes(groupCourseTimesInfo.getTotalCourseTimes());
 | 
	
		
			
				|  |  |                  groupCard.setSurplusClassTimes(groupCourseTimesInfo.getSurplusClassTimes());
 | 
	
		
			
				|  |  | -                groupCard.setCurrentClassTimes(groupCard.getTotalCourseTimes()-groupCard.getSurplusClassTimes());
 | 
	
		
			
				|  |  | +                groupCard.setCurrentClassTimes(groupCard.getTotalCourseTimes() - groupCard.getSurplusClassTimes());
 | 
	
		
			
				|  |  |                  List<ClassGroupStudentMapper> groupStudents = groupStudentsMap.get(String.valueOf(teacherCourseGroup.getId()));
 | 
	
		
			
				|  |  | -                if(!CollectionUtils.isEmpty(groupStudents)){
 | 
	
		
			
				|  |  | +                if (!CollectionUtils.isEmpty(groupStudents)) {
 | 
	
		
			
				|  |  |                      List<String> userNames = groupStudents.stream().map(ClassGroupStudentMapper::getUserName).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -                    groupCard.setStudentNames(StringUtils.join(userNames,","));
 | 
	
		
			
				|  |  | -                    groupCard.setStudentIsFull(groupStudents.size()>=teacherCourseGroup.getMaxStudentNum()?1:0);
 | 
	
		
			
				|  |  | -                }else{
 | 
	
		
			
				|  |  | +                    groupCard.setStudentNames(StringUtils.join(userNames, ","));
 | 
	
		
			
				|  |  | +                    groupCard.setStudentIsFull(groupStudents.size() >= teacherCourseGroup.getMaxStudentNum() ? 1 : 0);
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  |                      groupCard.setStudentIsFull(3);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  groupCards.add(groupCard);
 | 
	
	
		
			
				|  | @@ -324,7 +326,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |          Map<String, Object> params = new HashMap<>();
 | 
	
		
			
				|  |  |          MapUtil.populateMap(params, queryInfo);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        List<CourseGroupExtendDto> teacherCourseGroups=new ArrayList<>();
 | 
	
		
			
				|  |  | +        List<CourseGroupExtendDto> teacherCourseGroups = new ArrayList<>();
 | 
	
		
			
				|  |  |          int count = coursesGroupDao.countTeacherGroupsWithWeb(params);
 | 
	
		
			
				|  |  |          if (count > 0) {
 | 
	
		
			
				|  |  |              pageInfo.setTotal(count);
 | 
	
	
		
			
				|  | @@ -335,29 +337,29 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |              Map<String, Integer> groupStudentNumMap = groupStudentNums.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, GroupBaseCourseInfoDto::getStudentNum));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              List<GroupBaseCourseInfoDto> groupTotalClassesTimes = groupDao.countGroupTotalClassesTimes(groupIds, GroupType.COMM);
 | 
	
		
			
				|  |  | -            Map<String, GroupBaseCourseInfoDto> groupBaseCourseInfoMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e));
 | 
	
		
			
				|  |  | +            Map<String, GroupBaseCourseInfoDto> groupBaseCourseInfoMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e -> e));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              List<GroupBaseCourseInfoDto> groupFinishedClassesTimes = groupDao.countGroupFinishedClassesTimes(groupIds, GroupType.COMM);
 | 
	
		
			
				|  |  | -            Map<String, Integer> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e.getCurrentClassTimes()));
 | 
	
		
			
				|  |  | +            Map<String, Integer> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e -> e.getCurrentClassTimes()));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              for (CourseGroupExtendDto teacherCourseGroup : teacherCourseGroups) {
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(groupStudentNumMap.get(teacherCourseGroup.getId().toString()))) {
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(groupStudentNumMap.get(teacherCourseGroup.getId().toString()))) {
 | 
	
		
			
				|  |  |                      teacherCourseGroup.setStudentNum(groupStudentNumMap.get(teacherCourseGroup.getId().toString()).intValue());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  GroupBaseCourseInfoDto groupBaseCourseInfo = groupBaseCourseInfoMap.get(teacherCourseGroup.getId().toString());
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(groupBaseCourseInfo)){
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(groupBaseCourseInfo)) {
 | 
	
		
			
				|  |  |                      teacherCourseGroup.setTotalClassTimes(groupBaseCourseInfo.getTotalClassTimes());
 | 
	
		
			
				|  |  |                      teacherCourseGroup.setFirstClassesStartTime(groupBaseCourseInfo.getFirstClassesStartTime());
 | 
	
		
			
				|  |  |                      teacherCourseGroup.setLastClassesEndTime(groupBaseCourseInfo.getLastClassesEndTime());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()))) {
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()))) {
 | 
	
		
			
				|  |  |                      teacherCourseGroup.setCurrentClassTimes(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()).intValue());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(teacherCourseGroup.getTotalClassTimes())){
 | 
	
		
			
				|  |  | -                    teacherCourseGroup.setGroupClassesTotalDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getTotalClassTimes());
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(teacherCourseGroup.getTotalClassTimes())) {
 | 
	
		
			
				|  |  | +                    teacherCourseGroup.setGroupClassesTotalDuration(teacherCourseGroup.getSingleClassMinutes() * teacherCourseGroup.getTotalClassTimes());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(teacherCourseGroup.getCurrentClassTimes())){
 | 
	
		
			
				|  |  | -                    teacherCourseGroup.setGroupClassesConsumeDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getCurrentClassTimes());
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(teacherCourseGroup.getCurrentClassTimes())) {
 | 
	
		
			
				|  |  | +                    teacherCourseGroup.setGroupClassesConsumeDuration(teacherCourseGroup.getSingleClassMinutes() * teacherCourseGroup.getCurrentClassTimes());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -371,7 +373,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |          Map<String, Object> params = new HashMap<>();
 | 
	
		
			
				|  |  |          MapUtil.populateMap(params, queryInfo);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        List<CourseGroupExtendDto> teacherCourseGroups=new ArrayList<>();
 | 
	
		
			
				|  |  | +        List<CourseGroupExtendDto> teacherCourseGroups = new ArrayList<>();
 | 
	
		
			
				|  |  |          int count = coursesGroupDao.countStudentGroupsWithWeb(params);
 | 
	
		
			
				|  |  |          if (count > 0) {
 | 
	
		
			
				|  |  |              pageInfo.setTotal(count);
 | 
	
	
		
			
				|  | @@ -383,32 +385,32 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |              Map<String, Integer> groupStudentNumMap = groupStudentNums.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, GroupBaseCourseInfoDto::getStudentNum));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              List<GroupBaseCourseInfoDto> groupTotalClassesTimes = groupDao.countGroupTotalClassesTimes(groupIds, GroupType.COMM);
 | 
	
		
			
				|  |  | -            Map<String, GroupBaseCourseInfoDto> groupBaseCourseInfoMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e));
 | 
	
		
			
				|  |  | +            Map<String, GroupBaseCourseInfoDto> groupBaseCourseInfoMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e -> e));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              List<GroupBaseCourseInfoDto> groupFinishedClassesTimes = groupDao.countGroupFinishedClassesTimes(groupIds, GroupType.COMM);
 | 
	
		
			
				|  |  | -            Map<String, Integer> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e.getCurrentClassTimes()));
 | 
	
		
			
				|  |  | +            Map<String, Integer> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e -> e.getCurrentClassTimes()));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              List<SimpleUserDto> teachers = teacherDao.findSimpleTeachers(teacherIds);
 | 
	
		
			
				|  |  |              Map<Integer, String> idNameMap = teachers.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getUserName));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              for (CourseGroupExtendDto teacherCourseGroup : teacherCourseGroups) {
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(groupStudentNumMap.get(teacherCourseGroup.getId().toString()))) {
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(groupStudentNumMap.get(teacherCourseGroup.getId().toString()))) {
 | 
	
		
			
				|  |  |                      teacherCourseGroup.setStudentNum(groupStudentNumMap.get(teacherCourseGroup.getId().toString()).intValue());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  GroupBaseCourseInfoDto groupBaseCourseInfo = groupBaseCourseInfoMap.get(teacherCourseGroup.getId().toString());
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(groupBaseCourseInfo)){
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(groupBaseCourseInfo)) {
 | 
	
		
			
				|  |  |                      teacherCourseGroup.setTotalClassTimes(groupBaseCourseInfo.getTotalClassTimes());
 | 
	
		
			
				|  |  |                      teacherCourseGroup.setFirstClassesStartTime(groupBaseCourseInfo.getFirstClassesStartTime());
 | 
	
		
			
				|  |  |                      teacherCourseGroup.setLastClassesEndTime(groupBaseCourseInfo.getLastClassesEndTime());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()))) {
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()))) {
 | 
	
		
			
				|  |  |                      teacherCourseGroup.setCurrentClassTimes(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()).intValue());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(teacherCourseGroup.getTotalClassTimes())){
 | 
	
		
			
				|  |  | -                    teacherCourseGroup.setGroupClassesTotalDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getTotalClassTimes());
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(teacherCourseGroup.getTotalClassTimes())) {
 | 
	
		
			
				|  |  | +                    teacherCourseGroup.setGroupClassesTotalDuration(teacherCourseGroup.getSingleClassMinutes() * teacherCourseGroup.getTotalClassTimes());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(teacherCourseGroup.getCurrentClassTimes())){
 | 
	
		
			
				|  |  | -                    teacherCourseGroup.setGroupClassesConsumeDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getCurrentClassTimes());
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(teacherCourseGroup.getCurrentClassTimes())) {
 | 
	
		
			
				|  |  | +                    teacherCourseGroup.setGroupClassesConsumeDuration(teacherCourseGroup.getSingleClassMinutes() * teacherCourseGroup.getCurrentClassTimes());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  teacherCourseGroup.setTeacherName(idNameMap.get(teacherCourseGroup.getTeacherId()));
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -419,17 +421,17 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public GroupHeadInfoDto getGroupHeadInfo(Long courseScheduleId) {
 | 
	
		
			
				|  |  | -        if(Objects.isNull(courseScheduleId)){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(courseScheduleId)) {
 | 
	
		
			
				|  |  |              throw new BizException("请选择课程");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId);
 | 
	
		
			
				|  |  | -        if(Objects.isNull(courseSchedule)){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(courseSchedule)) {
 | 
	
		
			
				|  |  |              throw new BizException("课程不存在");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          CoursesGroup coursesGroup = coursesGroupDao.get(Long.valueOf(courseSchedule.getMusicGroupId()));
 | 
	
		
			
				|  |  |          Teacher teacher = teacherDao.get(courseSchedule.getActualTeacherId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        GroupHeadInfoDto groupHeadInfo=new GroupHeadInfoDto();
 | 
	
		
			
				|  |  | +        GroupHeadInfoDto groupHeadInfo = new GroupHeadInfoDto();
 | 
	
		
			
				|  |  |          groupHeadInfo.setGroupId(coursesGroup.getId().toString());
 | 
	
		
			
				|  |  |          groupHeadInfo.setGroupName(coursesGroup.getName());
 | 
	
		
			
				|  |  |          groupHeadInfo.setClassGroupId(courseSchedule.getClassGroupId());
 | 
	
	
		
			
				|  | @@ -445,66 +447,66 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public Map<String, Object> getGroupDetail(Long groupId) {
 | 
	
		
			
				|  |  | -        if(Objects.isNull(groupId)){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(groupId)) {
 | 
	
		
			
				|  |  |              throw new BizException("请指定课程组");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          CoursesGroup coursesGroup = coursesGroupDao.get(groupId);
 | 
	
		
			
				|  |  |          Teacher teacher = teacherDao.get(coursesGroup.getTeacherId());
 | 
	
		
			
				|  |  |          List<String> subjectNames = subjectDao.findBySubIds(teacher.getSubjectId());
 | 
	
		
			
				|  |  | -        Map<String, Object> result=new HashMap<>();
 | 
	
		
			
				|  |  | +        Map<String, Object> result = new HashMap<>();
 | 
	
		
			
				|  |  |          result.put("groupId", groupId);
 | 
	
		
			
				|  |  |          result.put("groupName", coursesGroup.getName());
 | 
	
		
			
				|  |  | -        result.put("courseStartDate",coursesGroup.getCoursesStartDate());
 | 
	
		
			
				|  |  | +        result.put("courseStartDate", coursesGroup.getCoursesStartDate());
 | 
	
		
			
				|  |  |          result.put("courseEndDate", coursesGroup.getCoursesEndDate());
 | 
	
		
			
				|  |  |          result.put("teacherName", teacher.getRealName());
 | 
	
		
			
				|  |  | -        result.put("avatar",teacher.getAvatar());
 | 
	
		
			
				|  |  | +        result.put("avatar", teacher.getAvatar());
 | 
	
		
			
				|  |  |          result.put("introduction", teacher.getIntroduction());
 | 
	
		
			
				|  |  |          result.put("lectureNum", courseScheduleTeacherSalaryDao.countTeacherGiveLesson(coursesGroup.getTeacherId()));
 | 
	
		
			
				|  |  | -        result.put("subjectNames", StringUtils.join(subjectNames,","));
 | 
	
		
			
				|  |  | +        result.put("subjectNames", StringUtils.join(subjectNames, ","));
 | 
	
		
			
				|  |  |          List<CourseSchedule> groupNotStartCourses = courseScheduleDao.findGroupNotFinishCourses(groupId.toString(), GroupType.COMM);
 | 
	
		
			
				|  |  | -        result.put("courseSchedules",groupNotStartCourses);
 | 
	
		
			
				|  |  | +        result.put("courseSchedules", groupNotStartCourses);
 | 
	
		
			
				|  |  |          Map<TeachModeEnum, Long> collect = groupNotStartCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode, Collectors.counting()));
 | 
	
		
			
				|  |  |          result.put("totalClassesTimes", groupNotStartCourses.size());
 | 
	
		
			
				|  |  | -        result.put("onlineClassesTimes", Objects.isNull(collect.get(TeachModeEnum.ONLINE))?0:collect.get(TeachModeEnum.ONLINE));
 | 
	
		
			
				|  |  | -        result.put("offlineClassesTimes", Objects.isNull(collect.get(TeachModeEnum.OFFLINE))?0:collect.get(TeachModeEnum.OFFLINE));
 | 
	
		
			
				|  |  | +        result.put("onlineClassesTimes", Objects.isNull(collect.get(TeachModeEnum.ONLINE)) ? 0 : collect.get(TeachModeEnum.ONLINE));
 | 
	
		
			
				|  |  | +        result.put("offlineClassesTimes", Objects.isNull(collect.get(TeachModeEnum.OFFLINE)) ? 0 : collect.get(TeachModeEnum.OFFLINE));
 | 
	
		
			
				|  |  |          return result;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
 | 
	
		
			
				|  |  | -    public HttpResponseResult buyCourseGroup(Integer userId, Long courseGroupId, boolean isUseBalancePayment) {
 | 
	
		
			
				|  |  | -        if(Objects.isNull(courseGroupId)){
 | 
	
		
			
				|  |  | +    public HttpResponseResult buyCourseGroup(Integer userId, Long courseGroupId, boolean isUseBalancePayment) throws Exception {
 | 
	
		
			
				|  |  | +        if (Objects.isNull(courseGroupId)) {
 | 
	
		
			
				|  |  |              throw new BizException("请指定课程组");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          CoursesGroup coursesGroup = coursesGroupDao.lockGroup(courseGroupId);
 | 
	
		
			
				|  |  | -        if(Objects.isNull(coursesGroup)){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(coursesGroup)) {
 | 
	
		
			
				|  |  |              throw new BizException("此课程组不存在");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if(coursesGroup.getStatus().equals(GroupStatusEnum.CANCEL)){
 | 
	
		
			
				|  |  | +        if (coursesGroup.getStatus().equals(GroupStatusEnum.CANCEL)) {
 | 
	
		
			
				|  |  |              throw new BizException("课程已关闭,请联系老师了解详细情况。");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          List<ClassGroupStudentMapper> groupStudents = classGroupStudentMapperDao.findGroupStudents(courseGroupId.toString(), GroupType.COMM, userId, null);
 | 
	
		
			
				|  |  | -        if(!CollectionUtils.isEmpty(groupStudents)){
 | 
	
		
			
				|  |  | +        if (!CollectionUtils.isEmpty(groupStudents)) {
 | 
	
		
			
				|  |  |              throw new BizException("您完成此课程组报名,无需重复报名。");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        Date now=new Date();
 | 
	
		
			
				|  |  | +        Date now = new Date();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(courseGroupId.toString(), GroupType.COMM.getCode());
 | 
	
		
			
				|  |  | -        if(classGroup.getStudentNum()>=classGroup.getExpectStudentNum()){
 | 
	
		
			
				|  |  | +        if (classGroup.getStudentNum() >= classGroup.getExpectStudentNum()) {
 | 
	
		
			
				|  |  |              throw new BizException("课程人数已满");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          BigDecimal amount = coursesGroup.getTotalCoursesPrice();
 | 
	
		
			
				|  |  | -        if(Objects.isNull(amount)){
 | 
	
		
			
				|  |  | -            amount=BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        if (Objects.isNull(amount)) {
 | 
	
		
			
				|  |  | +            amount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        StudentPaymentOrder studentPaymentOrder=new StudentPaymentOrder();
 | 
	
		
			
				|  |  | +        StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 | 
	
		
			
				|  |  |          studentPaymentOrder.setUserId(userId);
 | 
	
		
			
				|  |  |          studentPaymentOrder.setGroupType(GroupType.COMM);
 | 
	
		
			
				|  |  | -        String orderNo=idGeneratorService.generatorId("payment") + "";
 | 
	
		
			
				|  |  | +        String orderNo = idGeneratorService.generatorId("payment") + "";
 | 
	
		
			
				|  |  |          studentPaymentOrder.setOrderNo(orderNo);
 | 
	
		
			
				|  |  |          studentPaymentOrder.setStatus(DealStatusEnum.ING);
 | 
	
		
			
				|  |  |          studentPaymentOrder.setType(OrderTypeEnum.COURSE_GROUP_BUY);
 | 
	
	
		
			
				|  | @@ -514,18 +516,21 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |          studentPaymentOrder.setClassGroupId(classGroup.getId());
 | 
	
		
			
				|  |  |          studentPaymentOrder.setVersion(0);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if(amount.compareTo(BigDecimal.ZERO)<=0){
 | 
	
		
			
				|  |  | +        BigDecimal balance = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        if (amount.compareTo(BigDecimal.ZERO) <= 0) {
 | 
	
		
			
				|  |  |              return this.orderCallback(studentPaymentOrder);
 | 
	
		
			
				|  |  | -        }else{
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  |              studentPaymentOrderService.insert(studentPaymentOrder);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if(isUseBalancePayment || studentPaymentOrder.getExpectAmount().doubleValue() == 0){
 | 
	
		
			
				|  |  | +            if (isUseBalancePayment || studentPaymentOrder.getExpectAmount().doubleValue() == 0) {
 | 
	
		
			
				|  |  |                  SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(userId);
 | 
	
		
			
				|  |  | -                if(userCashAccount == null){
 | 
	
		
			
				|  |  | +                if (userCashAccount == null) {
 | 
	
		
			
				|  |  |                      throw new BizException("用户账户找不到");
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  studentPaymentOrder.setPaymentChannel("BALANCE");
 | 
	
		
			
				|  |  | -                if(userCashAccount.getBalance().subtract(studentPaymentOrder.getExpectAmount()).doubleValue() >= 0){
 | 
	
		
			
				|  |  | +                if (userCashAccount.getBalance().subtract(studentPaymentOrder.getExpectAmount()).doubleValue() >= 0) {
 | 
	
		
			
				|  |  | +                    studentPaymentRouteOrderService.addRouteOrder(orderNo, coursesGroup.getOrganId(), studentPaymentOrder.getExpectAmount());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                      // 更新订单信息
 | 
	
		
			
				|  |  |                      studentPaymentOrder.setActualAmount(new BigDecimal(0));
 | 
	
		
			
				|  |  |                      studentPaymentOrder.setBalancePaymentAmount(studentPaymentOrder.getExpectAmount());
 | 
	
	
		
			
				|  | @@ -533,17 +538,18 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |                      studentPaymentOrder.setUpdateTime(now);
 | 
	
		
			
				|  |  |                      studentPaymentOrder.setRoutingOrganId(42);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    sysUserCashAccountService.updateBalance(userId, studentPaymentOrder.getExpectAmount().negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,"对外课程购买");
 | 
	
		
			
				|  |  | +                    sysUserCashAccountService.updateBalance(userId, studentPaymentOrder.getExpectAmount().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "对外课程购买");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      this.orderCallback(studentPaymentOrder);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    Map<String,Object> result=new HashMap<>();
 | 
	
		
			
				|  |  | -                    result.put("orderNo",studentPaymentOrder.getOrderNo());
 | 
	
		
			
				|  |  | +                    Map<String, Object> result = new HashMap<>();
 | 
	
		
			
				|  |  | +                    result.put("orderNo", studentPaymentOrder.getOrderNo());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      return BaseController.succeed(result);
 | 
	
		
			
				|  |  | -                }else{
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  |                      if (userCashAccount.getBalance().doubleValue() > 0) {
 | 
	
		
			
				|  |  | -                        sysUserCashAccountService.updateBalance(userId, userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "对外课程购买");
 | 
	
		
			
				|  |  | +                        balance = userCashAccount.getBalance();
 | 
	
		
			
				|  |  | +                        sysUserCashAccountService.updateBalance(userId, balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "对外课程购买");
 | 
	
		
			
				|  |  |                          amount = studentPaymentOrder.getExpectAmount().subtract(userCashAccount.getBalance());
 | 
	
		
			
				|  |  |                          studentPaymentOrder.setActualAmount(amount);
 | 
	
		
			
				|  |  |                          studentPaymentOrder.setBalancePaymentAmount(userCashAccount.getBalance());
 | 
	
	
		
			
				|  | @@ -555,56 +561,52 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
 | 
	
		
			
				|  |  |              Map<String, BigDecimal> classFee = new HashMap<>();
 | 
	
		
			
				|  |  | -            classFee.put("course",amount);
 | 
	
		
			
				|  |  | -            classFee.put("instrument",BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -            classFee.put("accessories",BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -            classFee.put("other",BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -            try {
 | 
	
		
			
				|  |  | -                Map<String,Object> payMap = payService.getPayMap(
 | 
	
		
			
				|  |  | -                        amount,
 | 
	
		
			
				|  |  | -                        orderNo,
 | 
	
		
			
				|  |  | -                        baseApiUrl+"/api-student/studentOrder/notify",
 | 
	
		
			
				|  |  | -                        baseApiUrl+"/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
 | 
	
		
			
				|  |  | -                        "对外课程组购买",
 | 
	
		
			
				|  |  | -                        coursesGroup.getName(),
 | 
	
		
			
				|  |  | -                        userId,
 | 
	
		
			
				|  |  | -                        classFee,
 | 
	
		
			
				|  |  | -                        null
 | 
	
		
			
				|  |  | -                );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                Map<String,BigDecimal> routingFee = (Map<String,BigDecimal>)payMap.get("routingFee");
 | 
	
		
			
				|  |  | -                studentPaymentOrder.setRoutingOrganId((Integer) payMap.get("routingOrganId"));
 | 
	
		
			
				|  |  | -                studentPaymentOrder.setComAmount(routingFee.get("COM"));
 | 
	
		
			
				|  |  | -                studentPaymentOrder.setPerAmount(routingFee.get("PER"));
 | 
	
		
			
				|  |  | -                studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
 | 
	
		
			
				|  |  | -                studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
 | 
	
		
			
				|  |  | -                studentPaymentOrder.setUpdateTime(now);
 | 
	
		
			
				|  |  | -                studentPaymentOrderService.update(studentPaymentOrder);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                return BaseController.succeed(payMap);
 | 
	
		
			
				|  |  | -            } catch (Exception e) {
 | 
	
		
			
				|  |  | -                throw new BizException("订单提交超时,请尝试重新提交购买");
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +            classFee.put("course", amount);
 | 
	
		
			
				|  |  | +            classFee.put("instrument", BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +            classFee.put("accessories", BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +            classFee.put("other", BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +            Map<String, Object> payMap = payService.getPayMap(
 | 
	
		
			
				|  |  | +                    amount,
 | 
	
		
			
				|  |  | +                    balance,
 | 
	
		
			
				|  |  | +                    orderNo,
 | 
	
		
			
				|  |  | +                    baseApiUrl + "/api-student/studentOrder/notify",
 | 
	
		
			
				|  |  | +                    baseApiUrl + "/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
 | 
	
		
			
				|  |  | +                    "对外课程组购买",
 | 
	
		
			
				|  |  | +                    coursesGroup.getName(),
 | 
	
		
			
				|  |  | +                    coursesGroup.getOrganId(),
 | 
	
		
			
				|  |  | +                    "outGroupBuy"
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            Map<String, BigDecimal> routingFee = (Map<String, BigDecimal>) payMap.get("routingFee");
 | 
	
		
			
				|  |  | +            studentPaymentOrder.setRoutingOrganId((Integer) payMap.get("routingOrganId"));
 | 
	
		
			
				|  |  | +            studentPaymentOrder.setComAmount(routingFee.get("COM"));
 | 
	
		
			
				|  |  | +            studentPaymentOrder.setPerAmount(routingFee.get("PER"));
 | 
	
		
			
				|  |  | +            studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
 | 
	
		
			
				|  |  | +            studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
 | 
	
		
			
				|  |  | +            studentPaymentOrder.setUpdateTime(now);
 | 
	
		
			
				|  |  | +            studentPaymentOrderService.update(studentPaymentOrder);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return BaseController.succeed(payMap);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
 | 
	
		
			
				|  |  |      public HttpResponseResult orderCallback(StudentPaymentOrder order) {
 | 
	
		
			
				|  |  | -        if(order.getExpectAmount().compareTo(BigDecimal.ZERO)>0){
 | 
	
		
			
				|  |  | +        if (order.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  |              StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.get(order.getId());
 | 
	
		
			
				|  |  | -            if(!studentPaymentOrder.getStatus().equals(DealStatusEnum.ING)){
 | 
	
		
			
				|  |  | +            if (!studentPaymentOrder.getStatus().equals(DealStatusEnum.ING)) {
 | 
	
		
			
				|  |  |                  return BaseController.succeed();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(order.getUserId());
 | 
	
		
			
				|  |  | -            List<StudentPaymentOrder> userGroupOrders = studentPaymentOrderDao.findUserGroupOrders(order.getUserId(), order.getMusicGroupId(), order.getGroupType(),null);
 | 
	
		
			
				|  |  | +            List<StudentPaymentOrder> userGroupOrders = studentPaymentOrderDao.findUserGroupOrders(order.getUserId(), order.getMusicGroupId(), order.getGroupType(), null);
 | 
	
		
			
				|  |  |              Map<DealStatusEnum, Long> statusOrderNumMap = userGroupOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getStatus, Collectors.counting()));
 | 
	
		
			
				|  |  | -            Long successOrderNum=statusOrderNumMap.get(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | -            if(Objects.nonNull(successOrderNum)&&successOrderNum>0){
 | 
	
		
			
				|  |  | -                if(order.getStatus().equals(DealStatusEnum.FAILED)&&Objects.nonNull(order.getBalancePaymentAmount())&&order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO)>0){
 | 
	
		
			
				|  |  | +            Long successOrderNum = statusOrderNumMap.get(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | +            if (Objects.nonNull(successOrderNum) && successOrderNum > 0) {
 | 
	
		
			
				|  |  | +                if (order.getStatus().equals(DealStatusEnum.FAILED) && Objects.nonNull(order.getBalancePaymentAmount()) && order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  |                      sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课支付失败,退还余额");
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                if(order.getStatus().equals(DealStatusEnum.SUCCESS)){
 | 
	
		
			
				|  |  | +                if (order.getStatus().equals(DealStatusEnum.SUCCESS)) {
 | 
	
		
			
				|  |  |                      sysUserCashAccountService.updateBalance(order.getUserId(), order.getExpectAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "重复支付,退还余额");
 | 
	
		
			
				|  |  |                      order.setMemo("重复支付,进入余额");
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -612,26 +614,26 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |                  return BaseController.succeed();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            Long ingOrderNum=statusOrderNumMap.get(DealStatusEnum.ING);
 | 
	
		
			
				|  |  | -            if(Objects.nonNull(ingOrderNum)&&ingOrderNum>1&&order.getStatus().equals(DealStatusEnum.FAILED)){
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(order.getBalancePaymentAmount())&&order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO)>0){
 | 
	
		
			
				|  |  | +            Long ingOrderNum = statusOrderNumMap.get(DealStatusEnum.ING);
 | 
	
		
			
				|  |  | +            if (Objects.nonNull(ingOrderNum) && ingOrderNum > 1 && order.getStatus().equals(DealStatusEnum.FAILED)) {
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(order.getBalancePaymentAmount()) && order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  |                      sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课支付失败,退还余额");
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  studentPaymentOrderDao.update(order);
 | 
	
		
			
				|  |  |                  return BaseController.succeed();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if(order.getStatus().equals(DealStatusEnum.SUCCESS)){
 | 
	
		
			
				|  |  | -                courseScheduleDao.updateGroupCourseLock(order.getMusicGroupId(),GroupType.PRACTICE,0);
 | 
	
		
			
				|  |  | -            }else{
 | 
	
		
			
				|  |  | -                if(Objects.nonNull(order.getBalancePaymentAmount())&&order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO)>0){
 | 
	
		
			
				|  |  | +            if (order.getStatus().equals(DealStatusEnum.SUCCESS)) {
 | 
	
		
			
				|  |  | +                courseScheduleDao.updateGroupCourseLock(order.getMusicGroupId(), GroupType.PRACTICE, 0);
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                if (Objects.nonNull(order.getBalancePaymentAmount()) && order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  |                      sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课支付失败,退还余额");
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  studentPaymentOrderDao.update(order);
 | 
	
		
			
				|  |  |                  CoursesGroup coursesGroup = coursesGroupDao.get(Long.valueOf(order.getMusicGroupId()));
 | 
	
		
			
				|  |  |                  coursesGroup.setStatus(GroupStatusEnum.CANCEL);
 | 
	
		
			
				|  |  |                  coursesGroupDao.update(coursesGroup);
 | 
	
		
			
				|  |  | -                groupService.deleteGroupOtherInfo(order.getMusicGroupId(),GroupType.PRACTICE);
 | 
	
		
			
				|  |  | +                groupService.deleteGroupOtherInfo(order.getMusicGroupId(), GroupType.PRACTICE);
 | 
	
		
			
				|  |  |                  return BaseController.succeed();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              studentPaymentOrderDao.update(order);
 | 
	
	
		
			
				|  | @@ -659,10 +661,10 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |              sysUserExpendCashAccountDetail.setAttribute(order.getTransNo());
 | 
	
		
			
				|  |  |              sysUserExpendCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if(studentPaymentOrder.getComAmount() != null){
 | 
	
		
			
				|  |  | +            if (studentPaymentOrder.getComAmount() != null) {
 | 
	
		
			
				|  |  |                  sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(studentPaymentOrder.getPerAmount() != null){
 | 
	
		
			
				|  |  | +            if (studentPaymentOrder.getPerAmount() != null) {
 | 
	
		
			
				|  |  |                  sysUserExpendCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -670,8 +672,8 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |              sysUserCashAccountDetailService.insert(sysUserExpendCashAccountDetail);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              CoursesGroup coursesGroup = coursesGroupDao.get(Long.valueOf(order.getMusicGroupId()));
 | 
	
		
			
				|  |  | -            if(!coursesGroup.getStatus().equals(GroupStatusEnum.NORMAL)){
 | 
	
		
			
				|  |  | -                order.setVersion(order.getVersion()+1);
 | 
	
		
			
				|  |  | +            if (!coursesGroup.getStatus().equals(GroupStatusEnum.NORMAL)) {
 | 
	
		
			
				|  |  | +                order.setVersion(order.getVersion() + 1);
 | 
	
		
			
				|  |  |                  order.setMemo("支付成功,但课程组不处于正常状态");
 | 
	
		
			
				|  |  |                  studentPaymentOrderDao.update(order);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -692,18 +694,18 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |          classGroupStudentMapperDao.insert(classGroupStudentMapper);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
 | 
	
		
			
				|  |  | -        if(!CollectionUtils.isEmpty(classGroupStudents)){
 | 
	
		
			
				|  |  | +        if (!CollectionUtils.isEmpty(classGroupStudents)) {
 | 
	
		
			
				|  |  |              classGroup.setStudentNum(classGroupStudents.size());
 | 
	
		
			
				|  |  |              classGroupDao.update(classGroup);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if(!CollectionUtils.isEmpty(classGroupStudents)&&classGroupStudents.size()>=classGroup.getExpectStudentNum()){
 | 
	
		
			
				|  |  | +        if (!CollectionUtils.isEmpty(classGroupStudents) && classGroupStudents.size() >= classGroup.getExpectStudentNum()) {
 | 
	
		
			
				|  |  |              coursesGroup.setStatus(GroupStatusEnum.NORMAL);
 | 
	
		
			
				|  |  |              coursesGroupDao.update(coursesGroup);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
 | 
	
		
			
				|  |  |          List<CourseSchedule> groupNotStartCourses = courseScheduleDao.findGroupNotFinishCourses(order.getMusicGroupId(), GroupType.COMM);
 | 
	
		
			
				|  |  | -        if(CollectionUtils.isEmpty(groupNotStartCourses)){
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isEmpty(groupNotStartCourses)) {
 | 
	
		
			
				|  |  |              throw new BizException("课程已关闭,请联系老师了解详细情况。");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          BigDecimal singleCoursePrice = order.getExpectAmount().divide(new BigDecimal(groupNotStartCourses.size()), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
 | 
	
	
		
			
				|  | @@ -721,19 +723,19 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |          courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  | -            courseScheduleService.checkNewCourseSchedules(groupNotStartCourses,false);
 | 
	
		
			
				|  |  | +            courseScheduleService.checkNewCourseSchedules(groupNotStartCourses, false);
 | 
	
		
			
				|  |  |          } catch (Exception e) {
 | 
	
		
			
				|  |  |              TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  |              String errMessage;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            String courseName=e.getMessage().substring(e.getMessage().indexOf(")-")+2);
 | 
	
		
			
				|  |  | -            courseName = courseName.substring(0,courseName.indexOf("("));
 | 
	
		
			
				|  |  | +            String courseName = e.getMessage().substring(e.getMessage().indexOf(")-") + 2);
 | 
	
		
			
				|  |  | +            courseName = courseName.substring(0, courseName.indexOf("("));
 | 
	
		
			
				|  |  |              String courseTime = e.getMessage().substring(e.getMessage().indexOf("在") + 1);
 | 
	
		
			
				|  |  |              courseTime = courseTime.substring(0, courseTime.indexOf("至"));
 | 
	
		
			
				|  |  | -            errMessage="现在课程:";
 | 
	
		
			
				|  |  | -            errMessage+=courseName;
 | 
	
		
			
				|  |  | -            errMessage+="<br/>冲突时间:";
 | 
	
		
			
				|  |  | -            errMessage+=courseTime;
 | 
	
		
			
				|  |  | +            errMessage = "现在课程:";
 | 
	
		
			
				|  |  | +            errMessage += courseName;
 | 
	
		
			
				|  |  | +            errMessage += "<br/>冲突时间:";
 | 
	
		
			
				|  |  | +            errMessage += courseTime;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              return BaseController.failed(HttpStatus.FOUND, errMessage);
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -752,7 +754,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |      public void noStudentsCourseGroupRemind() {
 | 
	
		
			
				|  |  |          Date startDate = DateUtil.addDays(new Date(), 1);
 | 
	
		
			
				|  |  |          List<CoursesGroup> noStudentsGroups = coursesGroupDao.findNoStudentsGroups(startDate);
 | 
	
		
			
				|  |  | -        if(CollectionUtils.isEmpty(noStudentsGroups)){
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isEmpty(noStudentsGroups)) {
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          for (CoursesGroup noStudentsGroup : noStudentsGroups) {
 | 
	
	
		
			
				|  | @@ -766,7 +768,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void finishCourseGroup() {
 | 
	
		
			
				|  |  |          List<CoursesGroup> noCoursesGroups = coursesGroupDao.findNoCoursesGroups();
 | 
	
		
			
				|  |  | -        if(CollectionUtils.isEmpty(noCoursesGroups)){
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isEmpty(noCoursesGroups)) {
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          List<Long> groupIds = noCoursesGroups.stream().map(CoursesGroup::getId).collect(Collectors.toList());
 |