|
@@ -103,6 +103,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
private StudentPaymentOrderDao studentPaymentOrderDao;
|
|
|
@Autowired
|
|
|
private GroupService groupService;
|
|
|
+ @Autowired
|
|
|
+ private PracticeGroupSellPriceDao practiceGroupSellPriceDao;
|
|
|
|
|
|
private static Map<Integer, Map<Integer, List<Integer>>> schoolSubjectTeachersMap;
|
|
|
|
|
@@ -838,6 +840,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
}
|
|
|
|
|
|
Set<Integer> disableApplyWeekNum = new HashSet<>();
|
|
|
+ Set<Integer> disableApplyWeekDay = new HashSet<>();
|
|
|
|
|
|
TeacherFreeTime teacherFreeTime = teacherFreeTimeDao.findTeacherFreeTime(teacherId);
|
|
|
JSONObject teacherFreeTimes=new JSONObject();
|
|
@@ -852,24 +855,38 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
}
|
|
|
if(Objects.nonNull(teacherFreeTime.getMonday())){
|
|
|
teacherFreeTimes.put(String.valueOf(Calendar.MONDAY), JSON.parseArray(teacherFreeTime.getMonday()));
|
|
|
+ }else{
|
|
|
+ disableApplyWeekDay.add(Calendar.MONDAY);
|
|
|
}
|
|
|
- if(Objects.nonNull(teacherFreeTime.getMonday())){
|
|
|
+ if(Objects.nonNull(teacherFreeTime.getTuesday())){
|
|
|
teacherFreeTimes.put(String.valueOf(Calendar.TUESDAY), JSON.parseArray(teacherFreeTime.getTuesday()));
|
|
|
+ }else{
|
|
|
+ disableApplyWeekDay.add(Calendar.TUESDAY);
|
|
|
}
|
|
|
- if(Objects.nonNull(teacherFreeTime.getMonday())){
|
|
|
+ if(Objects.nonNull(teacherFreeTime.getWednesday())){
|
|
|
teacherFreeTimes.put(String.valueOf(Calendar.WEDNESDAY), JSON.parseArray(teacherFreeTime.getWednesday()));
|
|
|
+ }else{
|
|
|
+ disableApplyWeekDay.add(Calendar.WEDNESDAY);
|
|
|
}
|
|
|
- if(Objects.nonNull(teacherFreeTime.getMonday())){
|
|
|
+ if(Objects.nonNull(teacherFreeTime.getThursday())){
|
|
|
teacherFreeTimes.put(String.valueOf(Calendar.THURSDAY), JSON.parseArray(teacherFreeTime.getThursday()));
|
|
|
+ }else{
|
|
|
+ disableApplyWeekDay.add(Calendar.THURSDAY);
|
|
|
}
|
|
|
- if(Objects.nonNull(teacherFreeTime.getMonday())){
|
|
|
+ if(Objects.nonNull(teacherFreeTime.getFriday())){
|
|
|
teacherFreeTimes.put(String.valueOf(Calendar.FRIDAY), JSON.parseArray(teacherFreeTime.getFriday()));
|
|
|
+ }else{
|
|
|
+ disableApplyWeekDay.add(Calendar.FRIDAY);
|
|
|
}
|
|
|
- if(Objects.nonNull(teacherFreeTime.getMonday())){
|
|
|
+ if(Objects.nonNull(teacherFreeTime.getSaturday())){
|
|
|
teacherFreeTimes.put(String.valueOf(Calendar.SATURDAY), JSON.parseArray(teacherFreeTime.getSaturday()));
|
|
|
+ }else{
|
|
|
+ disableApplyWeekDay.add(Calendar.SATURDAY);
|
|
|
}
|
|
|
- if(Objects.nonNull(teacherFreeTime.getMonday())){
|
|
|
+ if(Objects.nonNull(teacherFreeTime.getSunday())){
|
|
|
teacherFreeTimes.put(String.valueOf(Calendar.SUNDAY), JSON.parseArray(teacherFreeTime.getSunday()));
|
|
|
+ }else{
|
|
|
+ disableApplyWeekDay.add(Calendar.SUNDAY);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -990,6 +1007,9 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
}
|
|
|
calendar.setTime(enableApplyDate);
|
|
|
int dayOfWeek=calendar.get(Calendar.DAY_OF_WEEK);
|
|
|
+ if(disableApplyWeekDay.contains(dayOfWeek)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
JSONArray teacherWeekDayFreeTimes = teacherFreeTimes.getJSONArray(String.valueOf(dayOfWeek));
|
|
|
if(Objects.nonNull(teacherWeekDayFreeTimes)){
|
|
|
LocalTime enableApplyStartTime=LocalDateTime.ofInstant(enableApplyDate.toInstant(),DateUtil.zoneId).toLocalTime();
|
|
@@ -1106,6 +1126,9 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
calendar.setTime(enableApplyDate);
|
|
|
|
|
|
int dayOfWeek=calendar.get(Calendar.DAY_OF_WEEK);
|
|
|
+ if(disableApplyWeekDay.contains(disableApplyWeekDay)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
JSONArray teacherWeekDayFreeTimes = teacherFreeTimes.getJSONArray(String.valueOf(dayOfWeek));
|
|
|
if(Objects.nonNull(teacherWeekDayFreeTimes)){
|
|
|
LocalTime enableApplyStartTime=LocalDateTime.ofInstant(enableApplyDate.toInstant(),DateUtil.zoneId).toLocalTime();
|
|
@@ -2050,9 +2073,13 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public PracticeGroup findUserLatestPracticeGroup(Integer userId) {
|
|
|
+ return practiceGroupDao.findUserLatestPracticeGroup(userId);
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
- public Map getPayPracticeApplyParams(Integer userId) {
|
|
|
+ public Map getPayPracticeApplyParams(Integer userId, Integer organId) {
|
|
|
Map result = new HashMap();
|
|
|
SysConfig practiceSubjectIdListConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_SUBJECT_ID_LIST);
|
|
|
SysConfig practiceApplyStartTimeConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_APPLY_START_TIME);
|
|
@@ -2070,7 +2097,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
} else {
|
|
|
userDefaultSubjectIds = new ArrayList<>();
|
|
|
}
|
|
|
-
|
|
|
+ PracticeGroupSellPrice practiceGroupSellPrice = practiceGroupSellPriceDao.get(organId);
|
|
|
result.put("subjects", subjects);
|
|
|
result.put("practiceApplyStartTime", practiceApplyStartTimeConfig.getParanValue());
|
|
|
result.put("practiceApplyEndTime", practiceApplyEndTimeConfig.getParanValue());
|
|
@@ -2079,9 +2106,89 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
result.put("practiceCourseMinutes", practiceCourseMinutesConfig.getParanValue(Integer.class));
|
|
|
result.put("practicePayMaxMonth", practicePayMaxMonthConfig.getParanValue(Integer.class));
|
|
|
result.put("practicePayDrillTimesOnOneWeek", practicePayDrillTimesOnOneWeekConfig.getParanValue(Integer.class));
|
|
|
+ result.put("practiceGroupSellPrice", practiceGroupSellPrice);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<SimpleUserDto> getEnableApplyTeachersWithPay(Integer userId, Integer subjectId) {
|
|
|
+ if (Objects.isNull(subjectId)) {
|
|
|
+ throw new BizException("请选择声部");
|
|
|
+ }
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserById(userId);
|
|
|
+ if (Objects.isNull(sysUser)) {
|
|
|
+ throw new BizException("用户不存在");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(sysUser.getOrganId())) {
|
|
|
+ throw new BizException("未找到用户分部属性");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (sysUser.getOrganId().equals(DALIAN_ORGAN_ID)) {
|
|
|
+ sysUser.setOrganId(SHENYANG_ORGAN_ID);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Integer> includeTeacherIds = new ArrayList<>();
|
|
|
+ List<ExtendTeacherBasicDto> organAndSubjectTeachers = teacherDao.findTeaTeachersByOrganAndSubject2(sysUser.getOrganId(), subjectId);
|
|
|
+ if (CollectionUtils.isEmpty(organAndSubjectTeachers)) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Integer> allTeacherIds = organAndSubjectTeachers.stream().map(TeacherBasicDto::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<CourseSchedule> userCourses = courseScheduleDao.findUserCourses(userId, allTeacherIds);
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(userCourses)) {
|
|
|
+ Map<CourseSchedule.CourseScheduleType, List<CourseSchedule>> courseTypeCourseMap = userCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getType));
|
|
|
+ List<CourseSchedule> vipCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.VIP);
|
|
|
+ if (!CollectionUtils.isEmpty(vipCourses)) {
|
|
|
+ for (CourseSchedule vipCourse : vipCourses) {
|
|
|
+ if (!includeTeacherIds.contains(vipCourse.getTeacherId())) {
|
|
|
+ includeTeacherIds.add(vipCourse.getTeacherId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<CourseSchedule> singleCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.SINGLE);
|
|
|
+ if (!CollectionUtils.isEmpty(singleCourses)) {
|
|
|
+ for (CourseSchedule singleCourse : singleCourses) {
|
|
|
+ if (!includeTeacherIds.contains(singleCourse.getTeacherId())) {
|
|
|
+ includeTeacherIds.add(singleCourse.getTeacherId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<CourseSchedule> highCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.HIGH);
|
|
|
+ if (!CollectionUtils.isEmpty(highCourses)) {
|
|
|
+ for (CourseSchedule highCourse : highCourses) {
|
|
|
+ if (!includeTeacherIds.contains(highCourse.getTeacherId())) {
|
|
|
+ includeTeacherIds.add(highCourse.getTeacherId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (ExtendTeacherBasicDto organAndSubjectTeacher : organAndSubjectTeachers) {
|
|
|
+ if (!includeTeacherIds.contains(organAndSubjectTeacher.getId())
|
|
|
+ && 1 == organAndSubjectTeacher.getIsSupportExtraPracticeLesson()) {
|
|
|
+ includeTeacherIds.add(organAndSubjectTeacher.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(new ArrayList<>(includeTeacherIds))) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<SimpleUserDto> userInfos = new ArrayList<>();
|
|
|
+ Map<Integer, ExtendTeacherBasicDto> idTeacherMap = organAndSubjectTeachers.stream().collect(Collectors.toMap(ExtendTeacherBasicDto::getId, teacher -> teacher));
|
|
|
+ for (Integer includeTeacherId : includeTeacherIds) {
|
|
|
+ ExtendTeacherBasicDto teacher = idTeacherMap.get(includeTeacherId);
|
|
|
+ SimpleUserDto simpleUserDto=new SimpleUserDto(includeTeacherId, teacher.getRealName());
|
|
|
+ simpleUserDto.setAvatar(teacher.getAvatar());
|
|
|
+ simpleUserDto.setIntroduction(teacher.getIntroduction());
|
|
|
+ simpleUserDto.setSubjectNames(teacher.getSubjectNames());
|
|
|
+ userInfos.add(simpleUserDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ return userInfos;
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public Map<Integer, List<String>> getEnableApplyDatesWithWeek() {
|
|
@@ -2426,6 +2533,16 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
return BaseController.failed(HttpStatus.FOUND, "课程冲突");
|
|
|
}
|
|
|
|
|
|
+ JSONObject drillTimesObject=new JSONObject();
|
|
|
+ for (PracticeDrillTimeDto drillTime : practiceGroupBuyParams.getDrillTimes()) {
|
|
|
+ drillTimesObject.put(String.valueOf(drillTime.getWeekNum()),drillTime.getTimeStr());
|
|
|
+ }
|
|
|
+
|
|
|
+ PracticeGroupSellPrice practiceGroupSellPrice = practiceGroupSellPriceDao.get(sysUser.getOrganId());
|
|
|
+ BigDecimal oneMonthPrice=practiceGroupBuyParams.getDrillTimesOnWeek()==1?practiceGroupSellPrice.getOnceActivityPrice():practiceGroupSellPrice.getTwiceActivityPrice();
|
|
|
+ BigDecimal amount= oneMonthPrice.multiply(new BigDecimal(practiceGroupBuyParams.getBuyMonths()));
|
|
|
+
|
|
|
+ practiceGroupBuyParams.setDrillTimesJson(drillTimesObject.toJSONString());
|
|
|
practiceGroupBuyParams.setOrganId(sysUser.getOrganId());
|
|
|
practiceGroupBuyParams.setSingleClassMinutes(practiceCourseMinutes);
|
|
|
practiceGroupDao.insert(practiceGroupBuyParams);
|
|
@@ -2542,15 +2659,13 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
studentPaymentOrder.setOrderNo(orderNo);
|
|
|
studentPaymentOrder.setStatus(DealStatusEnum.ING);
|
|
|
studentPaymentOrder.setType(OrderTypeEnum.SMALL_CLASS_TO_BUY);
|
|
|
- studentPaymentOrder.setExpectAmount(new BigDecimal(practiceCourseSalaryConfig.getParanValue(Integer.class)));
|
|
|
+ studentPaymentOrder.setExpectAmount(amount);
|
|
|
studentPaymentOrder.setMusicGroupId(practiceGroupBuyParams.getId().toString());
|
|
|
studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount());
|
|
|
studentPaymentOrder.setClassGroupId(classGroup.getId());
|
|
|
studentPaymentOrder.setVersion(0);
|
|
|
studentPaymentOrderService.insert(studentPaymentOrder);
|
|
|
|
|
|
- BigDecimal amount=new BigDecimal(0);
|
|
|
-
|
|
|
if(practiceGroupBuyParams.isUseBalancePayment() || studentPaymentOrder.getExpectAmount().doubleValue() == 0){
|
|
|
SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(practiceGroupBuyParams.getStudentId());
|
|
|
if(userCashAccount == null){
|