|
@@ -20,8 +20,10 @@ import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Isolation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
@@ -610,52 +612,39 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public void updateVipGroupCourseTeacherSalary(Integer vipGroupId, Integer studentChangeNum, VipGroupStatusEnum vipGroupStatusEnum) {
|
|
|
+ @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
+ public void updateVipGroupCourseTeacherSalary(Integer vipGroupId, Integer oldTeacherId) {
|
|
|
VipGroup vipGroup = vipGroupService.get(vipGroupId.longValue());
|
|
|
- if(Objects.isNull(vipGroupStatusEnum)){
|
|
|
- vipGroupStatusEnum=vipGroup.getStatus();
|
|
|
- }
|
|
|
+
|
|
|
Integer studentNum = classGroupStudentMapperDao.countGroupStudentNum(vipGroupId.toString(), GroupType.VIP.getCode());
|
|
|
- Integer oldStudentNum = studentNum-studentChangeNum;
|
|
|
- if(oldStudentNum<0){
|
|
|
- oldStudentNum=0;
|
|
|
- }
|
|
|
- ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroupId, vipGroup.getUserId());
|
|
|
- BigDecimal onlineTeacherSalary,
|
|
|
- offlineTeacherSalary;
|
|
|
- if((oldStudentNum==0&&!vipGroupStatusEnum.equals(VipGroupStatusEnum.APPLYING))
|
|
|
- ||Objects.isNull(classGroupTeacherSalary)){
|
|
|
- TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(),
|
|
|
- vipGroup.getVipGroupCategoryId());
|
|
|
- if(Objects.isNull(teacherDefaultVipGroupSalary)){
|
|
|
- throw new BizException("请设置课酬");
|
|
|
- }
|
|
|
- onlineTeacherSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary();
|
|
|
- offlineTeacherSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- }else{
|
|
|
- onlineTeacherSalary=classGroupTeacherSalary.getOnlineClassesSalary();
|
|
|
- offlineTeacherSalary=classGroupTeacherSalary.getSalary();
|
|
|
- }
|
|
|
|
|
|
- if(oldStudentNum==0){
|
|
|
- VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
|
|
|
- oldStudentNum = vipGroupCategory.getStudentNum();
|
|
|
+ if(Objects.isNull(oldTeacherId)){
|
|
|
+ oldTeacherId=vipGroup.getUserId();
|
|
|
}
|
|
|
|
|
|
+ ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroupId, oldTeacherId);
|
|
|
+
|
|
|
if(Objects.isNull(classGroupTeacherSalary)){
|
|
|
- ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(vipGroupId.toString(), GroupType.VIP.getCode());
|
|
|
- classGroupTeacherSalary=new ClassGroupTeacherSalary();
|
|
|
- classGroupTeacherSalary.setGroupType(GroupType.VIP);
|
|
|
- classGroupTeacherSalary.setMusicGroupId(vipGroupId.toString());
|
|
|
- classGroupTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
- classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
|
|
|
- classGroupTeacherSalary.setUserId(vipGroup.getUserId());
|
|
|
- classGroupTeacherSalaryDao.insert(classGroupTeacherSalary);
|
|
|
+ throw new BizException("教师课酬异常");
|
|
|
+ }
|
|
|
+ ClassGroupTeacherSalary newClassGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroupId, vipGroup.getUserId());
|
|
|
+ if(!oldTeacherId.equals(vipGroup.getUserId())&&Objects.isNull(newClassGroupTeacherSalary)){
|
|
|
+ newClassGroupTeacherSalary=new ClassGroupTeacherSalary();
|
|
|
+ BeanUtils.copyProperties(classGroupTeacherSalary,newClassGroupTeacherSalary);
|
|
|
+ newClassGroupTeacherSalary.setUserId(vipGroup.getUserId());
|
|
|
+ classGroupTeacherSalaryDao.insert(newClassGroupTeacherSalary);
|
|
|
}
|
|
|
|
|
|
+ BigDecimal onlineTeacherSalary,
|
|
|
+ offlineTeacherSalary;
|
|
|
+
|
|
|
+ onlineTeacherSalary=classGroupTeacherSalary.getOnlineClassesSalary();
|
|
|
+ offlineTeacherSalary=classGroupTeacherSalary.getSalary();
|
|
|
+
|
|
|
+ VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
|
|
|
+
|
|
|
BigDecimal studentNumDecimal = new BigDecimal(studentNum);
|
|
|
- BigDecimal oldStudentNumDecimal = new BigDecimal(oldStudentNum);
|
|
|
+ BigDecimal oldStudentNumDecimal = new BigDecimal(vipGroupCategory.getStudentNum());
|
|
|
|
|
|
if(Objects.nonNull(onlineTeacherSalary)){
|
|
|
onlineTeacherSalary = onlineTeacherSalary
|
|
@@ -668,9 +657,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
.multiply(studentNumDecimal).setScale(0,BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
|
|
|
- classGroupTeacherSalary.setOnlineClassesSalary(onlineTeacherSalary);
|
|
|
- classGroupTeacherSalary.setSalary(offlineTeacherSalary);
|
|
|
-
|
|
|
List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByGroupWithNotStart(vipGroupId.toString(), GroupType.VIP.getCode());
|
|
|
if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
|
|
|
List<Long> courseIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList());
|
|
@@ -686,7 +672,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
}
|
|
|
courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalarys(courseScheduleTeacherSalaries);
|
|
|
}
|
|
|
- classGroupTeacherSalaryDao.update(classGroupTeacherSalary);
|
|
|
}
|
|
|
|
|
|
@Override
|