|
@@ -239,8 +239,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
// }
|
|
|
|
|
|
//如果默认课酬与实际课酬不匹配则需要审批
|
|
|
- if(costInfo.get("offlineTeacherSalary").compareTo(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary())!=0||
|
|
|
- costInfo.get("onlineTeacherSalary").compareTo(vipGroupApplyBaseInfoDto.getOnlineTeacherSalary())!=0
|
|
|
+ if(costInfo.get("offlineTeacherSalary").compareTo(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary())>0||
|
|
|
+ costInfo.get("onlineTeacherSalary").compareTo(vipGroupApplyBaseInfoDto.getOnlineTeacherSalary())>0
|
|
|
&&StringUtils.isBlank(studentIds)){
|
|
|
vipGroupApplyBaseInfoDto.setAuditStatus(AuditStatusEnum.ING);
|
|
|
}else{
|
|
@@ -777,17 +777,18 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
teacherOnlineSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary();
|
|
|
}
|
|
|
// teacherOnlineSalary=teacherOnlineSalary.multiply(classTimeDuty);
|
|
|
- results.put("onlineTeacherSalary",teacherOnlineSalary);
|
|
|
+ results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
case RATIO_DISCOUNT:
|
|
|
- results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP));
|
|
|
+ results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
case FIXED_SALARY:
|
|
|
- results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
|
|
|
+ results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
default:
|
|
|
throw new BizException("未指定课酬结算标准!");
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -807,13 +808,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
}
|
|
|
// teacherOfflineSalary=teacherOfflineSalary.multiply(classTimeDuty);
|
|
|
- results.put("offlineTeacherSalary",teacherOfflineSalary);
|
|
|
+ results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
case RATIO_DISCOUNT:
|
|
|
- results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP));
|
|
|
+ results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
case FIXED_SALARY:
|
|
|
- results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
|
|
|
+ results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
default:
|
|
|
throw new BizException("未指定课酬结算标准!");
|
|
@@ -1255,6 +1256,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
courseScheduleStudentPaymentDao.batchDeleteWithID(studentPaymentIds);
|
|
|
}
|
|
|
|
|
|
+ courseScheduleTeacherSalaryService.updateVipGroupCourseTeacherSalary(vipGroupId.intValue(),-1);
|
|
|
+
|
|
|
// classGroup.setStudentNum(classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId()));
|
|
|
// classGroupDao.update(classGroup);
|
|
|
|
|
@@ -1361,6 +1364,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
courseScheduleService.batchDeleteMusicGroupCourseWithStudent(studentPaymentOrder.getMusicGroupId(),studentApplyRefunds.getUserId(),GroupType.VIP);
|
|
|
|
|
|
+
|
|
|
+ courseScheduleTeacherSalaryService.updateVipGroupCourseTeacherSalary(Integer.parseInt(studentPaymentOrder.getMusicGroupId()),-1);
|
|
|
+
|
|
|
//学员退出班级群
|
|
|
ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(studentApplyRefunds.getUserId().toString())};
|
|
|
imFeignService.groupJoin(new ImGroupModel(studentPaymentOrder.getClassGroupId().toString(), imGroupMembers, null));
|
|
@@ -1631,15 +1637,29 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
if(Objects.isNull(vipGroupApplyBaseInfo.getId())){
|
|
|
return;
|
|
|
}
|
|
|
- if(vipGroupApplyBaseInfo.getTeacherSchoolId().equals(oldVipGroupInfo.getTeacherSchoolId())){
|
|
|
- return;
|
|
|
- }
|
|
|
- oldVipGroupInfo.setTeacherSchoolId(vipGroupApplyBaseInfo.getTeacherSchoolId());
|
|
|
Date now=new Date();
|
|
|
+ boolean isChange = false;
|
|
|
+ if(Objects.nonNull(vipGroupApplyBaseInfo.getOnlineClassesUnitPrice())
|
|
|
+ &&vipGroupApplyBaseInfo.getOnlineClassesUnitPrice().compareTo(oldVipGroupInfo.getOnlineClassesUnitPrice())!=0){
|
|
|
+ oldVipGroupInfo.setOnlineClassesUnitPrice(vipGroupApplyBaseInfo.getOnlineClassesUnitPrice());
|
|
|
+ isChange=true;
|
|
|
+ }
|
|
|
+ if(Objects.nonNull(vipGroupApplyBaseInfo.getOfflineClassesUnitPrice())
|
|
|
+ &&vipGroupApplyBaseInfo.getOfflineClassesUnitPrice().compareTo(oldVipGroupInfo.getOfflineClassesUnitPrice())!=0){
|
|
|
+ oldVipGroupInfo.setOfflineClassesUnitPrice(vipGroupApplyBaseInfo.getOfflineClassesUnitPrice());
|
|
|
+ isChange=true;
|
|
|
+ }
|
|
|
+ if(Objects.nonNull(vipGroupApplyBaseInfo.getTeacherSchoolId())
|
|
|
+ &&vipGroupApplyBaseInfo.getTeacherSchoolId().equals(oldVipGroupInfo.getTeacherSchoolId())){
|
|
|
+ oldVipGroupInfo.setTeacherSchoolId(vipGroupApplyBaseInfo.getTeacherSchoolId());
|
|
|
+ courseScheduleDao.updateCourseSchoolByGroup(oldVipGroupInfo.getId().toString(), GroupType.VIP.getCode(), oldVipGroupInfo.getTeacherSchoolId());
|
|
|
+ isChange=true;
|
|
|
+ }
|
|
|
//更新vip课
|
|
|
- oldVipGroupInfo.setUpdateTime(now);
|
|
|
- vipGroupDao.update(oldVipGroupInfo);
|
|
|
- courseScheduleDao.updateCourseSchoolByGroup(oldVipGroupInfo.getId().toString(), GroupType.VIP.getCode(), oldVipGroupInfo.getTeacherSchoolId());
|
|
|
+ if(isChange){
|
|
|
+ oldVipGroupInfo.setUpdateTime(now);
|
|
|
+ vipGroupDao.update(oldVipGroupInfo);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -1664,14 +1684,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
Date now=new Date();
|
|
|
|
|
|
- BigDecimal onlineCoursePrice = courseScheduleStudentPaymentDao.findVipGroupCoursePrice(vipGroup.getId().intValue(),TeachModeEnum.ONLINE.getCode());
|
|
|
- if(Objects.isNull(onlineCoursePrice)||onlineCoursePrice.compareTo(new BigDecimal(0))==0){
|
|
|
- onlineCoursePrice = vipGroup.getOnlineClassesUnitPrice();
|
|
|
- }
|
|
|
- BigDecimal offlineCoursePrice = courseScheduleStudentPaymentDao.findVipGroupCoursePrice(vipGroup.getId().intValue(),TeachModeEnum.OFFLINE.getCode());
|
|
|
- if(Objects.isNull(offlineCoursePrice)||offlineCoursePrice.compareTo(new BigDecimal(0))==0){
|
|
|
- offlineCoursePrice = vipGroup.getOfflineClassesUnitPrice();
|
|
|
- }
|
|
|
+// BigDecimal onlineCoursePrice = courseScheduleStudentPaymentDao.findVipGroupCoursePrice(vipGroup.getId().intValue(),TeachModeEnum.ONLINE.getCode());
|
|
|
+// if(Objects.isNull(onlineCoursePrice)||onlineCoursePrice.compareTo(new BigDecimal(0))==0){
|
|
|
+// onlineCoursePrice = vipGroup.getOnlineClassesUnitPrice();
|
|
|
+// }
|
|
|
+// BigDecimal offlineCoursePrice = courseScheduleStudentPaymentDao.findVipGroupCoursePrice(vipGroup.getId().intValue(),TeachModeEnum.OFFLINE.getCode());
|
|
|
+// if(Objects.isNull(offlineCoursePrice)||offlineCoursePrice.compareTo(new BigDecimal(0))==0){
|
|
|
+// offlineCoursePrice = vipGroup.getOfflineClassesUnitPrice();
|
|
|
+// }
|
|
|
|
|
|
BigDecimal surplusCourseTotalPrice = new BigDecimal(0);
|
|
|
BigDecimal singleClassPrice=vipGroupApplyDto.getSingleClassPrice();
|
|
@@ -1696,16 +1716,29 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
courseScheduleService.batchAddCourseSchedule(vipGroupApplyDto.getCourseSchedules());
|
|
|
|
|
|
- TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(), vipGroup.getVipGroupCategoryId());
|
|
|
+ ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroup.getId().intValue(), vipGroup.getUserId());
|
|
|
|
|
|
- BigDecimal onlineTeacherSalary,offlineTeacherSalary;
|
|
|
- if(Objects.nonNull(byTeacherAndCategory)){
|
|
|
- onlineTeacherSalary=byTeacherAndCategory.getOnlineClassesSalary();
|
|
|
- offlineTeacherSalary=byTeacherAndCategory.getOfflineClassesSalary();
|
|
|
- }else{
|
|
|
- ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroup.getId().intValue(), vipGroup.getUserId());
|
|
|
- onlineTeacherSalary=classGroupTeacherSalary.getOnlineClassesSalary();
|
|
|
- offlineTeacherSalary=classGroupTeacherSalary.getSalary();
|
|
|
+ BigDecimal onlineTeacherSalary=null,offlineTeacherSalary=null,zero=new BigDecimal(0);
|
|
|
+ if(Objects.nonNull(classGroupTeacherSalary)){
|
|
|
+ onlineTeacherSalary=classGroupTeacherSalary.getOnlineClassesSalary();
|
|
|
+ offlineTeacherSalary=classGroupTeacherSalary.getSalary();
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Objects.isNull(onlineTeacherSalary)){
|
|
|
+ onlineTeacherSalary = new BigDecimal(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Objects.isNull(offlineTeacherSalary)){
|
|
|
+ offlineTeacherSalary = new BigDecimal(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(onlineTeacherSalary.compareTo(zero)<=0
|
|
|
+ &&offlineTeacherSalary.compareTo(zero)<=0){
|
|
|
+ TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(), vipGroup.getVipGroupCategoryId());
|
|
|
+ if(Objects.nonNull(byTeacherAndCategory)){
|
|
|
+ onlineTeacherSalary=byTeacherAndCategory.getOnlineClassesSalary();
|
|
|
+ offlineTeacherSalary=byTeacherAndCategory.getOfflineClassesSalary();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//创建老师单节课课酬信息
|
|
@@ -1722,7 +1755,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
|
|
|
SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(classGroupStudent.getUserId());
|
|
|
if(sysUserCashAccount.getCourseBalance().compareTo(surplusCourseTotalPrice)<0){
|
|
|
- throw new BizException("[{}]学生课程余额不足",classGroupStudent.getUserName());
|
|
|
+ throw new BizException("学生[{}]的课程余额不足",classGroupStudent.getUserName());
|
|
|
}
|
|
|
List<CourseScheduleStudentPayment> courseScheduleStudentPayments=new ArrayList<>();
|
|
|
for (CourseSchedule vipGroupCourseSchedule : vipGroupApplyDto.getCourseSchedules()) {
|
|
@@ -1877,6 +1910,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
classGroupDao.update(classGroup);
|
|
|
classGroupService.updateClassGroupInfo(classGroup.getId());
|
|
|
|
|
|
+ courseScheduleTeacherSalaryService.updateVipGroupCourseTeacherSalary(vipGroupId.intValue(),studentIds.size());
|
|
|
+
|
|
|
try {
|
|
|
ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
|
|
|
// 创建群组
|