|
|
@@ -171,6 +171,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
private CloudTeacherOrderService cloudTeacherOrderService;
|
|
|
@Autowired
|
|
|
private StudentService studentService;
|
|
|
+ @Autowired
|
|
|
+ private ActivityUserMapperDao activityUserMapperDao;
|
|
|
|
|
|
private static final Logger LOGGER = LoggerFactory
|
|
|
.getLogger(VipGroup.class);
|
|
|
@@ -887,6 +889,328 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
+ public HttpResponseResult createActivityVipGroup1(VipGroupApplyDto vipGroup) {
|
|
|
+ VipGroupApplyBaseInfoDto applyBaseInfo = vipGroup.getVipGroupApplyBaseInfo();
|
|
|
+ if(applyBaseInfo.getVipGroupActivityId() == null){
|
|
|
+ throw new BizException("请选择活动");
|
|
|
+ }
|
|
|
+ VipGroupActivity activity = vipGroupActivityDao.get(applyBaseInfo.getVipGroupActivityId());
|
|
|
+ if (Objects.isNull(activity)){
|
|
|
+ throw new BizException("活动信息不存在");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(applyBaseInfo.getUserId())){
|
|
|
+ throw new BizException("请选择指导老师");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(vipGroup.getCourseSchedules().size()!=(applyBaseInfo.getOfflineClassesNum() + applyBaseInfo.getOnlineClassesNum())){
|
|
|
+ throw new BizException("建课失败,当前课程存在未排课课程,请调整相关设置");
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroup;
|
|
|
+ try {
|
|
|
+ courseScheduleGroup = vipGroup.getCourseSchedules().stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new BizException("教学模式错误");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isBlank(applyBaseInfo.getSubjectIdList())){
|
|
|
+ throw new BizException("请选择声部");
|
|
|
+ }
|
|
|
+ if(vipGroup.getGiveFlag()){
|
|
|
+ applyBaseInfo.setVipGroupCategoryId(Integer.parseInt(activity.getGiveCategoryId()));
|
|
|
+ }else {
|
|
|
+ applyBaseInfo.setVipGroupCategoryId(Integer.parseInt(activity.getVipGroupCategoryIdList()));
|
|
|
+ }
|
|
|
+
|
|
|
+ if((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE)) && applyBaseInfo.getOfflineClassesNum()!=0)
|
|
|
+ ||(!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE))&&(courseScheduleGroup.get(TeachModeEnum.OFFLINE).size() < applyBaseInfo.getOfflineClassesNum()))){
|
|
|
+ throw new BizException("线下课课时数量安排有误");
|
|
|
+ }
|
|
|
+
|
|
|
+ if((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE)) && applyBaseInfo.getOnlineClassesNum()!=0)
|
|
|
+ ||(!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE))&&(courseScheduleGroup.get(TeachModeEnum.ONLINE).size()< applyBaseInfo.getOnlineClassesNum()))){
|
|
|
+ throw new BizException("线上课课时数量安排有误");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(applyBaseInfo.getOfflineClassesNum()>0 && Objects.isNull(applyBaseInfo.getTeacherSchoolId())){
|
|
|
+ throw new BizException("请设置教学点");
|
|
|
+ }
|
|
|
+
|
|
|
+ String studentIds = applyBaseInfo.getStudentIdList();
|
|
|
+ if(StringUtils.isBlank(studentIds)){
|
|
|
+ throw new BizException("请选择学员");
|
|
|
+ }
|
|
|
+ List<Integer> studentIdList = Arrays.stream(studentIds.split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toList());
|
|
|
+ //获取学员排课资格
|
|
|
+ List<ActivityUserMapper> activityUserMappers = activityUserMapperDao.findByStudentIdList(activity.getId(),studentIds,"GIVE_VIP");
|
|
|
+ if(studentIdList.size() != activityUserMappers.size()){
|
|
|
+ throw new BizException("所选学员暂无排课资格");
|
|
|
+ }
|
|
|
+
|
|
|
+ Date now=new Date();
|
|
|
+
|
|
|
+ if(Objects.isNull(applyBaseInfo.getOfflineClassesUnitPrice()) && Objects.isNull(applyBaseInfo.getOnlineClassesUnitPrice())){
|
|
|
+ throw new BizException("请设置课程单价");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isBlank(applyBaseInfo.getStudentIdList())){
|
|
|
+ throw new BizException("请选择学员");
|
|
|
+ }
|
|
|
+
|
|
|
+ Integer totalClassTimes = applyBaseInfo.getOnlineClassesNum() + applyBaseInfo.getOfflineClassesNum();
|
|
|
+ //获取第一节课
|
|
|
+ CourseSchedule firstCourseSchedule = vipGroup.getCourseSchedules().stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get();
|
|
|
+ //获取最后一节课
|
|
|
+ CourseSchedule latestCourseSchedule = vipGroup.getCourseSchedules().stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
|
|
|
+
|
|
|
+ if(firstCourseSchedule.getStartClassTime().before(now)){
|
|
|
+ throw new BizException("开课时间不能小于当前时间");
|
|
|
+ }
|
|
|
+
|
|
|
+ applyBaseInfo.setRegistrationStartTime(now);
|
|
|
+ applyBaseInfo.setPaymentExpireDate(now);
|
|
|
+
|
|
|
+ if(applyBaseInfo.getRegistrationStartTime().after(applyBaseInfo.getPaymentExpireDate())){
|
|
|
+ throw new BizException("报名开始时间必须在报名截至时间之前");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Integer> canBuyStudentIds = Arrays.stream(applyBaseInfo.getStudentIdList().split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toList());
|
|
|
+ List<VipGroupStudentCoursePrice> vscps = vipGroup.getVipGroupApplyBaseInfo().getVipGroupStudentCoursePrices();
|
|
|
+
|
|
|
+ //判断课程安排是否超出范围
|
|
|
+ if((Objects.nonNull(activity.getCoursesEndTime()) || Objects.nonNull(activity.getCoursesStartTime()))){
|
|
|
+ if(latestCourseSchedule.getEndClassTime().after(activity.getCoursesEndTime())
|
|
|
+ ||firstCourseSchedule.getStartClassTime().before(activity.getCoursesStartTime())){
|
|
|
+ throw new BizException("课时安排时间超出范围!");
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ VipGroupDefaultClassesCycle vipGroupDefaultClassesCycle = vipGroupDefaultClassesCycleDao.findByOrganAndClassTimes(totalClassTimes);
|
|
|
+
|
|
|
+ if (vipGroupDefaultClassesCycle != null) {
|
|
|
+ int month = DateUtil.monthsBetween(firstCourseSchedule.getStartClassTime(), latestCourseSchedule.getEndClassTime());
|
|
|
+ if (month > vipGroupDefaultClassesCycle.getMonth()) {
|
|
|
+ throw new BizException("课时安排时间超出范围!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Objects.nonNull(activity.getMinCourseNum()) && activity.getMinCourseNum() != -1 && Objects.nonNull(activity.getMaxCourseNum())
|
|
|
+ && activity.getMaxCourseNum()!=-1){
|
|
|
+ Integer requestCourseNum = applyBaseInfo.getOnlineClassesNum() + applyBaseInfo.getOfflineClassesNum();
|
|
|
+ if(requestCourseNum.compareTo(activity.getMinCourseNum())<0 || requestCourseNum.compareTo(activity.getMaxCourseNum())>0){
|
|
|
+ throw new BizException("该活动课时数为{}节~{}节", activity.getMinCourseNum(), activity.getMaxCourseNum());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ int repeatVipGroups = vipGroupDao.countUserRepeatVipGroupInCourseStartEndTime(applyBaseInfo.getUserId(), firstCourseSchedule.getStartClassTime(), latestCourseSchedule.getEndClassTime());
|
|
|
+ if(repeatVipGroups>0){
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserById(applyBaseInfo.getUserId());
|
|
|
+ throw new BizException("{}课程时间冲突({}-{})", sysUser.getRealName(), DateUtil.dateToString(firstCourseSchedule.getStartClassTime(), "yyyy-MM-dd HH:mm:ss"), DateUtil.dateToString(latestCourseSchedule.getEndClassTime(), "HH:mm:ss"));
|
|
|
+ }
|
|
|
+
|
|
|
+ VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(applyBaseInfo.getVipGroupCategoryId());
|
|
|
+ if(Objects.isNull(vipGroupCategory)){
|
|
|
+ throw new BizException("课程形式不存在");
|
|
|
+ }
|
|
|
+ List<String> studentNames = studentDao.getStudentNames(canBuyStudentIds);
|
|
|
+
|
|
|
+ //生成vip课信息
|
|
|
+ List<String> bySubIds = subjectDao.findBySubIds(applyBaseInfo.getSubjectIdList());
|
|
|
+ StringBuffer className=new StringBuffer();
|
|
|
+ if(Objects.isNull(vipGroupCategory.getMusicTheory()) || !vipGroupCategory.getMusicTheory()){
|
|
|
+ className.append(StringUtils.join(bySubIds,","));
|
|
|
+ className.append(vipGroupCategory.getName());
|
|
|
+ }else{
|
|
|
+ className.append("乐理课•");
|
|
|
+ }
|
|
|
+ className.append(StringUtils.join(studentNames, ","));
|
|
|
+ applyBaseInfo.setName(className.toString());
|
|
|
+
|
|
|
+ applyBaseInfo.setAuditStatus(AuditStatusEnum.PASS);
|
|
|
+ applyBaseInfo.setStatus(VipGroupStatusEnum.PROGRESS);
|
|
|
+
|
|
|
+ if(CollectionUtils.isEmpty(vscps)){
|
|
|
+ vscps = new ArrayList<>();
|
|
|
+ for (Integer canBuyStudentId : canBuyStudentIds) {
|
|
|
+ vscps.add(new VipGroupStudentCoursePrice(canBuyStudentId, applyBaseInfo.getOfflineClassesUnitPrice(), applyBaseInfo.getOfflineClassesUnitPrice(), applyBaseInfo.getTotalPrice()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Teacher teacher = teacherService.get(applyBaseInfo.getUserId());
|
|
|
+ if(Objects.isNull(teacher)){
|
|
|
+ throw new BizException("教师不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ //开课时间为排课的第一节课的开始时间
|
|
|
+ applyBaseInfo.setCourseStartDate(firstCourseSchedule.getStartClassTime());
|
|
|
+ //课程结束时间为排课的最后一节课的结束时间
|
|
|
+ applyBaseInfo.setCoursesExpireDate(latestCourseSchedule.getEndClassTime());
|
|
|
+
|
|
|
+ applyBaseInfo.setPaymentExpireDate(DateUtil.getLastSecondWithDay(applyBaseInfo.getPaymentExpireDate()));
|
|
|
+
|
|
|
+ vipGroupDao.insert(applyBaseInfo);
|
|
|
+
|
|
|
+ vscps.forEach(e->e.setVipGroupId(applyBaseInfo.getId()));
|
|
|
+ vipGroupStudentCoursePriceDao.batchInsert(vscps);
|
|
|
+
|
|
|
+ vipGroup.getVipGroupApplyBaseInfo().setId(applyBaseInfo.getId());
|
|
|
+
|
|
|
+ //创建班级信息
|
|
|
+ ClassGroup classGroup=new ClassGroup();
|
|
|
+ classGroup.setSubjectIdList(applyBaseInfo.getSubjectIdList());
|
|
|
+ classGroup.setExpectStudentNum(vipGroupCategory.getStudentNum());
|
|
|
+ classGroup.setStudentNum(studentIdList.size());
|
|
|
+ classGroup.setName(applyBaseInfo.getName());
|
|
|
+ classGroup.setTotalClassTimes(totalClassTimes);
|
|
|
+ classGroup.setType(ClassGroupTypeEnum.VIP);
|
|
|
+ classGroup.setDelFlag(0);
|
|
|
+ classGroup.setGroupType(GroupType.VIP);
|
|
|
+ classGroup.setMusicGroupId(applyBaseInfo.getId().toString());
|
|
|
+ classGroup.setCreateTime(now);
|
|
|
+ classGroup.setUpdateTime(now);
|
|
|
+ classGroupDao.insert(classGroup);
|
|
|
+
|
|
|
+ //班级学员关联记录
|
|
|
+ List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
|
|
|
+ for (Integer studentId : studentIdList) {
|
|
|
+ ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
|
|
|
+ classGroupStudentMapper.setMusicGroupId(applyBaseInfo.getId().toString());
|
|
|
+ classGroupStudentMapper.setClassGroupId(classGroup.getId());
|
|
|
+ classGroupStudentMapper.setUserId(studentId);
|
|
|
+ classGroupStudentMapper.setCreateTime(now);
|
|
|
+ classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
|
|
|
+ classGroupStudentMapper.setGroupType(GroupType.VIP);
|
|
|
+ classGroupStudentMapperList.add(classGroupStudentMapper);
|
|
|
+ }
|
|
|
+ classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList);
|
|
|
+
|
|
|
+ //计算课程相关费用信息
|
|
|
+ Map<String, BigDecimal> costInfo = countVipGroupPredictFee1(applyBaseInfo,applyBaseInfo.getUserId(), null);
|
|
|
+ if(vipGroup.getGiveFlag()){
|
|
|
+ applyBaseInfo.setOnlineTeacherSalary(costInfo.get("giveOnlineTeacherSalary"));
|
|
|
+ applyBaseInfo.setOfflineTeacherSalary(costInfo.get("giveOfflineTeacherSalary"));
|
|
|
+ }else {
|
|
|
+ applyBaseInfo.setOnlineTeacherSalary(costInfo.get("onlineTeacherSalary"));
|
|
|
+ applyBaseInfo.setOfflineTeacherSalary(costInfo.get("offlineTeacherSalary"));
|
|
|
+ }
|
|
|
+ applyBaseInfo.setTotalPrice(costInfo.get("totalPrice"));
|
|
|
+ vipGroupDao.update(applyBaseInfo);
|
|
|
+
|
|
|
+ //创建班级老师关联记录
|
|
|
+ ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper();
|
|
|
+ classGroupTeacherMapper.setMusicGroupId(applyBaseInfo.getId().toString());
|
|
|
+ classGroupTeacherMapper.setClassGroupId(classGroup.getId());
|
|
|
+ classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
|
|
|
+ classGroupTeacherMapper.setUserId(applyBaseInfo.getUserId());
|
|
|
+ classGroupTeacherMapper.setGroupType(GroupType.VIP);
|
|
|
+ classGroupTeacherMapper.setCreateTime(now);
|
|
|
+ classGroupTeacherMapper.setUpdateTime(now);
|
|
|
+ classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
|
|
|
+
|
|
|
+ //创建班级与老师课酬记录
|
|
|
+ ClassGroupTeacherSalary classGroupTeacherSalary=new ClassGroupTeacherSalary();
|
|
|
+ classGroupTeacherSalary.setMusicGroupId(applyBaseInfo.getId().toString());
|
|
|
+ classGroupTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
+ classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
|
|
|
+ classGroupTeacherSalary.setUserId(applyBaseInfo.getUserId());
|
|
|
+ classGroupTeacherSalary.setSalary(applyBaseInfo.getOfflineTeacherSalary());
|
|
|
+ classGroupTeacherSalary.setOnlineClassesSalary(applyBaseInfo.getOnlineTeacherSalary());
|
|
|
+ classGroupTeacherSalary.setGroupType(GroupType.VIP);
|
|
|
+ classGroupTeacherSalary.setCreateTime(now);
|
|
|
+ classGroupTeacherSalary.setUpdateTime(now);
|
|
|
+ classGroupTeacherSalaryDao.insert(classGroupTeacherSalary);
|
|
|
+
|
|
|
+ //课程信息调整
|
|
|
+ vipGroup.getCourseSchedules().forEach(courseSchedule -> {
|
|
|
+ courseSchedule.setGroupType(GroupType.VIP);
|
|
|
+ courseSchedule.setMusicGroupId(applyBaseInfo.getId().toString());
|
|
|
+ if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
|
+ courseSchedule.setSchoolId(vipGroup.getVipGroupApplyBaseInfo().getTeacherSchoolId());
|
|
|
+ }
|
|
|
+ courseSchedule.setTeacherId(applyBaseInfo.getUserId());
|
|
|
+ courseSchedule.setActualTeacherId(applyBaseInfo.getUserId());
|
|
|
+ courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
+ courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
|
|
|
+ courseSchedule.setClassGroupId(classGroup.getId());
|
|
|
+ courseSchedule.setName(applyBaseInfo.getName());
|
|
|
+ courseSchedule.setOrganId(applyBaseInfo.getOrganId());
|
|
|
+ });
|
|
|
+
|
|
|
+ applyBaseInfo.setCourseSchedulesJson(JSON.toJSONString(vipGroup.getCourseSchedules()));
|
|
|
+ vipGroupDao.update(applyBaseInfo);
|
|
|
+
|
|
|
+ //创建课程
|
|
|
+ List<CourseSchedule> courseSchedules = vipGroup.getCourseSchedules();
|
|
|
+ courseScheduleService.batchAddCourseSchedule(courseSchedules);
|
|
|
+ //创建老师单节课课酬信息
|
|
|
+ courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(applyBaseInfo,
|
|
|
+ courseSchedules,
|
|
|
+ classGroupTeacherSalary.getOnlineClassesSalary(),
|
|
|
+ classGroupTeacherSalary.getSalary());
|
|
|
+
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserById(applyBaseInfo.getUserId());
|
|
|
+
|
|
|
+ List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
|
|
|
+
|
|
|
+ Map<Integer,String> userRoleMap = new HashMap<>();
|
|
|
+ if(Objects.nonNull(applyBaseInfo.getEducationalTeacherId())){
|
|
|
+ userRoleMap.put(applyBaseInfo.getEducationalTeacherId(),"乐团主管");
|
|
|
+ }
|
|
|
+ userRoleMap.put(applyBaseInfo.getUserId(),"指导老师");
|
|
|
+ //生成学生单课缴费信息
|
|
|
+ for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
|
|
|
+ if(vipGroup.getGiveFlag()){
|
|
|
+ List<CourseScheduleStudentPayment> courseScheduleStudentPayments=new ArrayList<>();
|
|
|
+ BigDecimal coursePrice = BigDecimal.ZERO;
|
|
|
+ for (CourseSchedule courseSchedule : courseSchedules) {
|
|
|
+ CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
+ courseScheduleStudentPayment.setUserId(classGroupStudent.getUserId());
|
|
|
+ courseScheduleStudentPayment.setGroupType(courseSchedule.getGroupType());
|
|
|
+ courseScheduleStudentPayment.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
|
+ courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ courseScheduleStudentPayment.setClassGroupId(courseSchedule.getClassGroupId());
|
|
|
+ if(ActivityCourseType.MUSIC_THEORY.equals(vipGroup.getVipGroupApplyBaseInfo().getActivityCourseType())){
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(coursePrice);
|
|
|
+ courseScheduleStudentPayment.setOriginalPrice(coursePrice);
|
|
|
+ }else{
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
|
|
|
+ courseScheduleStudentPayment.setOriginalPrice(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+ courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
|
|
|
+ courseScheduleStudentPayments.add(courseScheduleStudentPayment);
|
|
|
+ }
|
|
|
+ courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
|
|
|
+ }else{
|
|
|
+ courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(applyBaseInfo.getId(),classGroupStudent.getUserId());
|
|
|
+ }
|
|
|
+ userRoleMap.put(classGroupStudent.getUserId(),null);
|
|
|
+ studentDao.updateStudentServiceTag(classGroupStudent.getUserId(), null, YesOrNoEnum.YES.getCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ courseScheduleService.checkNewCourseSchedules(courseSchedules, false,false);
|
|
|
+
|
|
|
+ try {
|
|
|
+ imGroupService.create(classGroup.getId().longValue(), null, classGroup.getName(), classGroup.getName(), applyBaseInfo.getName(), null, null, GroupType.VIP.getCode());
|
|
|
+ imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
|
|
|
+ imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(),classGroup.getGroupType());
|
|
|
+ //发送推送
|
|
|
+ Map<Integer,String> map = new HashMap<>(1);
|
|
|
+ map.put(applyBaseInfo.getUserId(),sysUser.getPhone());
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,MessageTypeEnum.CHILDREN_DAY_VIP_COURSE_TEACHER_PUSH,
|
|
|
+ map,null,0,"","TEACHER", StringUtils.join(studentNames, ","),applyBaseInfo.getName());
|
|
|
+
|
|
|
+ Map<Integer,String> studentIdStrMap = new HashMap<>(1);
|
|
|
+ studentIdList.forEach(id->studentIdStrMap.put(id, id.toString()));
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.CHILDREN_DAY_VIP_COURSE_STUDENT_PUSH, studentIdStrMap, null, 0, "","STUDENT",
|
|
|
+ applyBaseInfo.getName());
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ LOGGER.error("消息发送失败:{}", e);
|
|
|
+ }
|
|
|
+ return BaseController.succeed(applyBaseInfo.getAuditStatus().getCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public HttpResponseResult importActivityVipGroup(String data) {
|
|
|
if(StringUtils.isBlank(data)){
|
|
|
@@ -1800,7 +2124,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee1(K vipGroup,
|
|
|
Integer teacherId,
|
|
|
Long courseId){
|
|
|
-
|
|
|
if(Objects.isNull(teacherId)){
|
|
|
throw new BizException("请指定教师");
|
|
|
}
|
|
|
@@ -1825,142 +2148,183 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
throw new BizException("请设置教师VIP课课酬");
|
|
|
}
|
|
|
|
|
|
- VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
|
|
|
-
|
|
|
Map<String,BigDecimal> results=new HashMap<>(1);
|
|
|
|
|
|
int normalStudentNum = 0;
|
|
|
if(Objects.nonNull(courseId)){
|
|
|
normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
|
|
|
}
|
|
|
- if(normalStudentNum<=0&&Objects.nonNull(vipGroup.getId())){
|
|
|
+ if(normalStudentNum<=0 && Objects.nonNull(vipGroup.getId())){
|
|
|
normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(GroupType.VIP, vipGroup.getId().toString());
|
|
|
}
|
|
|
|
|
|
- if(!vipGroupCategory.getMusicTheory()&&Objects.isNull(vipGroupActivity)){
|
|
|
- throw new BizException("活动设置错误");
|
|
|
- }
|
|
|
-
|
|
|
- if(!vipGroupCategory.getMusicTheory()){
|
|
|
+ VipGroupSalarySettlementTypeDto vipOnlineSalarySettlement = null;
|
|
|
+ VipGroupSalarySettlementTypeDto giveVipOnlineSalarySettlement = null;
|
|
|
+ VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement = null;
|
|
|
+ VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement = null;
|
|
|
+ BigDecimal discount = new BigDecimal(100);
|
|
|
+ if(vipGroup.getVipGroupActivityId() != null){
|
|
|
+ VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
|
|
|
+ discount = vipGroupActivity.getDiscount();
|
|
|
VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
|
|
|
-
|
|
|
if(Objects.isNull(vipGroupSalarySettlementDto)){
|
|
|
throw new BizException("课酬结算方案错误");
|
|
|
}
|
|
|
+ vipOnlineSalarySettlement = vipGroupSalarySettlementDto.getVipOnlineSalarySettlement();
|
|
|
+ giveVipOnlineSalarySettlement = vipGroupSalarySettlementDto.getGiveVipOnlineSalarySettlement();
|
|
|
+ vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getVipOfflineSalarySettlement();
|
|
|
+ giveVipOfflineSalarySettlement = vipGroupSalarySettlementDto.getGiveVipOfflineSalarySettlement();
|
|
|
+ }
|
|
|
|
|
|
- BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
- BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
- BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
|
|
|
- if(Objects.isNull(onlineClassesUnitPrice)){
|
|
|
- throw new BizException("课程单价异常");
|
|
|
- }
|
|
|
- BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
+ BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
+ BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
+ BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
|
|
|
+ if(Objects.isNull(onlineClassesUnitPrice)){
|
|
|
+ throw new BizException("课程单价异常");
|
|
|
+ }
|
|
|
+ BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
|
|
|
- BigDecimal offlineClassesUnitPrice=vipGroup.getOfflineClassesUnitPrice();
|
|
|
- if(Objects.isNull(offlineClassesUnitPrice)){
|
|
|
- throw new BizException("课程单价异常");
|
|
|
- }
|
|
|
- BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
- BigDecimal totalClassNum = offlineClassNum.add(onlineClassNum);
|
|
|
- BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
|
|
|
+ BigDecimal offlineClassesUnitPrice=vipGroup.getOfflineClassesUnitPrice();
|
|
|
+ if(Objects.isNull(offlineClassesUnitPrice)){
|
|
|
+ throw new BizException("课程单价异常");
|
|
|
+ }
|
|
|
+ BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
+ BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
|
|
|
+ BigDecimal giveTeacherOnlineSalary=null,giveTeacherOfflineSalary=null;
|
|
|
|
|
|
- //课程购买费用计算
|
|
|
- BigDecimal totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- totalPrice = totalPrice.multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
+ //课程购买费用计算
|
|
|
+ BigDecimal totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+ totalPrice = totalPrice.multiply(discount).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
|
|
|
- results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
- vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
+ results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
+ vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
|
|
|
- VipGroupSalarySettlementTypeDto vipOnlineSalarySettlement = vipGroupSalarySettlementDto.getVipOnlineSalarySettlement();
|
|
|
- //教师课酬线上单课酬计算
|
|
|
- if(Objects.nonNull(vipOnlineSalarySettlement)){
|
|
|
- if(Objects.isNull(teacherOnlineSalary)){
|
|
|
- switch (vipOnlineSalarySettlement.getSalarySettlementType()){
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ //教师课酬线上单课酬计算
|
|
|
+ if(Objects.nonNull(vipOnlineSalarySettlement)){
|
|
|
+ if(Objects.isNull(teacherOnlineSalary)){
|
|
|
+ switch (vipOnlineSalarySettlement.getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ if(vipGroupCategory.getMusicTheory()){
|
|
|
+ teacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- results.put("onlineTeacherSalary",vipOnlineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("错误的课酬结算标准!");
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //教师线下单课酬计算
|
|
|
- VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getVipOfflineSalarySettlement();
|
|
|
- if(Objects.nonNull(vipOfflineSalarySettlement)){
|
|
|
- if(Objects.isNull(teacherOfflineSalary)){
|
|
|
- switch (vipOfflineSalarySettlement.getSalarySettlementType()){
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- results.put("offlineTeacherSalary",vipOfflineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("错误的课酬结算标准!");
|
|
|
- }
|
|
|
+ }else {
|
|
|
+ teacherOnlineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ results.put("onlineTeacherSalary",vipOnlineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("错误的课酬结算标准!");
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- BigDecimal ots = results.get("onlineTeacherSalary");
|
|
|
- if(Objects.isNull(ots)){
|
|
|
- ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
}
|
|
|
- if(Objects.isNull(ots)){
|
|
|
- ots = BigDecimal.ZERO;
|
|
|
- }
|
|
|
- BigDecimal ofts = results.get("offlineTeacherSalary");
|
|
|
- if(Objects.isNull(ofts)){
|
|
|
- ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- }
|
|
|
- if(Objects.isNull(ofts)){
|
|
|
- ofts = BigDecimal.ZERO;
|
|
|
- }
|
|
|
- if(Objects.nonNull(vipGroup.getStatus())&&normalStudentNum!=vipGroupCategory.getStudentNum()){
|
|
|
- ots = ots.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
- ofts = ofts.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
- }
|
|
|
-
|
|
|
- results.put("onlineTeacherSalary", ots);
|
|
|
- results.put("offlineTeacherSalary", ofts);
|
|
|
}
|
|
|
+ //教师课酬赠送线上单课酬计算
|
|
|
+ if(Objects.nonNull(giveVipOnlineSalarySettlement)){
|
|
|
+ if(Objects.isNull(giveTeacherOnlineSalary)){
|
|
|
+ switch (giveVipOnlineSalarySettlement.getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ if(vipGroupCategory.getMusicTheory()){
|
|
|
+ giveTeacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+ results.put("giveOnlineTeacherSalary",giveTeacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }else {
|
|
|
+ giveTeacherOnlineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ results.put("giveOnlineTeacherSalary",giveTeacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ results.put("giveOnlineTeacherSalary",giveVipOnlineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("错误的课酬结算标准!");
|
|
|
+ }
|
|
|
|
|
|
- if(vipGroupCategory.getMusicTheory()){
|
|
|
- BigDecimal ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- BigDecimal ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- if(Objects.nonNull(vipGroup.getStatus())&&vipGroupCategory.getMusicTheory()){
|
|
|
- ots = ots.multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
- ofts = ofts.multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
- results.put("totalPrice",vipGroup.getTotalPrice());
|
|
|
- results.put("onlineTeacherSalary",ots);
|
|
|
- results.put("offlineTeacherSalary",ofts);
|
|
|
}
|
|
|
|
|
|
- if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!CollectionUtils.isEmpty(((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices())){
|
|
|
- if(vipGroupCategory.getMusicTheory()){
|
|
|
- vipGroup.setTotalPrice(new BigDecimal(0));
|
|
|
- }
|
|
|
- for (VipGroupStudentCoursePrice vscp : ((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices()) {
|
|
|
- if(!vipGroupCategory.getMusicTheory()){
|
|
|
- results.put(vscp.getStudentId().toString(), vipGroup.getTotalPrice());
|
|
|
- continue;
|
|
|
+ //教师线下单课酬计算
|
|
|
+ if(Objects.nonNull(vipOfflineSalarySettlement)){
|
|
|
+ if(Objects.isNull(teacherOfflineSalary)){
|
|
|
+ switch (vipOfflineSalarySettlement.getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ if(vipGroupCategory.getMusicTheory()){
|
|
|
+ teacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+ results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }else {
|
|
|
+ teacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ results.put("offlineTeacherSalary",vipOfflineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("错误的课酬结算标准!");
|
|
|
}
|
|
|
- if(Objects.isNull(vscp.getOnlineClassesUnitPrice())||Objects.isNull(vscp.getOfflineClassesUnitPrice())){
|
|
|
- throw new BizException("请设置课程单价");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //教师赠送线下单课酬计算
|
|
|
+ if(Objects.nonNull(giveVipOfflineSalarySettlement)){
|
|
|
+ if(Objects.isNull(giveTeacherOfflineSalary)){
|
|
|
+ switch (giveVipOfflineSalarySettlement.getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ if(vipGroupCategory.getMusicTheory()){
|
|
|
+ giveTeacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+ results.put("giveOfflineTeacherSalary",giveTeacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }else {
|
|
|
+ giveTeacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ results.put("giveOfflineTeacherSalary",giveTeacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ results.put("giveOfflineTeacherSalary",giveVipOfflineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("错误的课酬结算标准!");
|
|
|
}
|
|
|
- vscp.setPaymentPrice(vscp.getOfflineClassesUnitPrice().multiply(new BigDecimal(vipGroup.getOfflineClassesNum())).add(vscp.getOnlineClassesUnitPrice().multiply(new BigDecimal(vipGroup.getOnlineClassesNum()))));
|
|
|
- vipGroup.setTotalPrice(vipGroup.getTotalPrice().add(vscp.getPaymentPrice()));
|
|
|
- results.put(vscp.getStudentId().toString(), vscp.getPaymentPrice());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ BigDecimal ots = results.get("onlineTeacherSalary");
|
|
|
+ if(Objects.isNull(ots)){
|
|
|
+ ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ }
|
|
|
+ if(Objects.isNull(ots)){
|
|
|
+ ots = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ BigDecimal ofts = results.get("offlineTeacherSalary");
|
|
|
+ if(Objects.isNull(ofts)){
|
|
|
+ ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ }
|
|
|
+ if(Objects.isNull(ofts)){
|
|
|
+ ofts = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ BigDecimal gots = results.get("giveOnlineTeacherSalary");
|
|
|
+ if(Objects.isNull(gots)){
|
|
|
+ gots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ }
|
|
|
+ if(Objects.isNull(gots)){
|
|
|
+ gots = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ BigDecimal gofts = results.get("giveOfflineTeacherSalary");
|
|
|
+ if(Objects.isNull(gofts)){
|
|
|
+ gofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ }
|
|
|
+ if(Objects.isNull(gofts)){
|
|
|
+ gofts = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+// if(Objects.nonNull(vipGroup.getStatus()) && normalStudentNum != vipGroupCategory.getStudentNum()){
|
|
|
+// ots = ots.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+// ofts = ofts.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+// gots = gots.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+// gofts = gofts.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+// }
|
|
|
+ results.put("onlineTeacherSalary", ots);
|
|
|
+ results.put("offlineTeacherSalary", ofts);
|
|
|
+ results.put("giveOnlineTeacherSalary", gots);
|
|
|
+ results.put("giveOfflineTeacherSalary", gofts);
|
|
|
return results;
|
|
|
}
|
|
|
|