zouxuan 3 rokov pred
rodič
commit
0b94d7eaea

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupService.java

@@ -11,6 +11,7 @@ import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -344,6 +345,8 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 
     Map countPracticeGroupPredictFee(PracticeGroupApplyBaseInfoDto practice, Integer userId);
 
+	Map<String, BigDecimal> countPracticeGroupPredictFee1(PracticeGroup practice, Integer userId);
+
     /**
     * @description: 网管课申请
      * @param practiceGroupApplyDto

+ 75 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -158,6 +158,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private ActivityUserMapperDao activityUserMapperDao;
     @Autowired
 	private MusicGroupTrainPlanService musicGroupTrainPlanService;
+    @Autowired
+	private PracticeGroupSellPriceDao practiceGroupSellPriceDao;
 
     private final Logger LOGGER = LoggerFactory
             .getLogger(this.getClass());
@@ -664,6 +666,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 									courseScheduleTeacherSalary.setExpectSalary(salary);
 								}
 							}
+							Integer vipGroupActivityId = practiceGroup.getVipGroupActivityId();
+							if(vipGroupActivityId != null){
+								ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(practiceGroup.getId(),"PRACTICE");
+								if(activityUserMapper != null){
+									Map<String, BigDecimal> map = practiceGroupService.countPracticeGroupPredictFee1(practiceGroup, cgtm.getUserId());
+									if(practiceGroup.getId().equals(activityUserMapper.getPracticeGroupId())){
+										courseScheduleTeacherSalary.setExpectSalary(map.get("onlineTeacherSalary"));
+									}else {
+										courseScheduleTeacherSalary.setExpectSalary(map.get("giveTeacherDefaultSalary"));
+									}
+								}
+							}
 						} else if (type == CourseScheduleType.VIP) {
 
 						} else {
@@ -746,6 +760,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
 					}
 
+					PracticeGroupSellPrice practiceGroupSellPrice = practiceGroupSellPriceDao.get(organId);
+					if(practiceGroupSellPrice == null){
+						throw new BizException("请配置网管课价格");
+					}
 					// 学生缴费记录
 					for (ClassGroupStudentMapper cgsm : classGroupStudentMapperList) {
 						CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
@@ -754,9 +772,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
 						courseScheduleStudentPayment.setUserId(cgsm.getUserId());
 						courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
+						courseScheduleStudentPayment.setActualPrice(BigDecimal.ZERO);
 						courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
 						courseScheduleStudentPayment.setCreateTime(now);
 						courseScheduleStudentPayment.setUpdateTime(now);
+						courseScheduleStudentPayment.setOriginalPrice(practiceGroupSellPrice.getSingleClassMinutesPrice());
 						courseScheduleStudentPayments.add(courseScheduleStudentPayment);
 					}
 
@@ -3815,6 +3835,21 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 									throw new BizException("请设置老师 的网管课课酬");
 								}
 							}
+							PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(newCourseSchedule.getMusicGroupId()));
+							if(practiceGroup != null){
+								Integer vipGroupActivityId = practiceGroup.getVipGroupActivityId();
+								if(vipGroupActivityId != null){
+									ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(practiceGroup.getId(),"PRACTICE");
+									if(activityUserMapper != null){
+										Map<String, BigDecimal> map = practiceGroupService.countPracticeGroupPredictFee1(practiceGroup, ts.getUserId());
+										if(practiceGroup.getId().equals(activityUserMapper.getPracticeGroupId())){
+											ts.setExpectSalary(map.get("onlineTeacherSalary"));
+										}else {
+											ts.setExpectSalary(map.get("giveTeacherDefaultSalary"));
+										}
+									}
+								}
+							}
 						}
 					}
 
@@ -5088,7 +5123,25 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         courseScheduleDao.update(oldCourseSchedule);
 
         PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(oldCourseSchedule.getMusicGroupId()));
-
+		List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
+		if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
+			throw new BizException("请设置老师默认课酬");
+		}
+		BigDecimal salary = teacherDefaultPracticeGroupSalaries.get(0).getMainTeacherSalary();
+		if(practiceGroup != null){
+			Integer vipGroupActivityId = practiceGroup.getVipGroupActivityId();
+			if(vipGroupActivityId != null){
+				ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(practiceGroup.getId(),"PRACTICE");
+				if(activityUserMapper != null){
+					Map<String, BigDecimal> map = practiceGroupService.countPracticeGroupPredictFee1(practiceGroup, teacherId);
+					if(practiceGroup.getId().equals(activityUserMapper.getPracticeGroupId())){
+						salary = map.get("onlineTeacherSalary");
+					}else {
+						salary = map.get("giveTeacherDefaultSalary");
+					}
+				}
+			}
+		}
 		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedule(courseScheduleId);
 		if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
 			SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
@@ -5098,11 +5151,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				if(teacherSalary.compareTo(courseScheduleTeacherSalary.getExpectSalary())==0){
 					continue;
 				}
-				List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
-				if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
-					throw new BizException("请设置老师默认课酬");
-				}
-				courseScheduleTeacherSalary.setExpectSalary(teacherDefaultPracticeGroupSalaries.get(0).getMainTeacherSalary());
+				courseScheduleTeacherSalary.setExpectSalary(salary);
 			}
 			courseScheduleTeacherSalaryDao.batchUpdate(courseScheduleTeacherSalaries);
 		}
@@ -5198,16 +5247,31 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					BigDecimal teacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
 					List<Long> courseIds = groupNotStartCourses.stream().map(CourseSchedule::getId).collect(Collectors.toList());
 					List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseIds);
+					List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
+					if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
+						throw new BizException("请设置老师默认课酬");
+					}
+					BigDecimal salary = teacherDefaultPracticeGroupSalaries.get(0).getMainTeacherSalary();
+					if(practiceGroup != null){
+						Integer vipGroupActivityId = practiceGroup.getVipGroupActivityId();
+						if(vipGroupActivityId != null){
+							ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(practiceGroup.getId(),"PRACTICE");
+							if(activityUserMapper != null){
+								Map<String, BigDecimal> map = practiceGroupService.countPracticeGroupPredictFee1(practiceGroup, teacherId);
+								if(practiceGroup.getId().equals(activityUserMapper.getPracticeGroupId())){
+									salary = map.get("onlineTeacherSalary");
+								}else {
+									salary = map.get("giveTeacherDefaultSalary");
+								}
+							}
+						}
+					}
 					for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
 						courseScheduleTeacherSalary.setUserId(teacherId);
 						if(teacherSalary.compareTo(courseScheduleTeacherSalary.getExpectSalary())==0){
 							continue;
 						}
-						List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
-						if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
-							throw new BizException("请设置老师默认课酬");
-						}
-						courseScheduleTeacherSalary.setExpectSalary(teacherDefaultPracticeGroupSalaries.get(0).getMainTeacherSalary());
+						courseScheduleTeacherSalary.setExpectSalary(salary);
 					}
 					courseScheduleTeacherSalaryDao.batchUpdate(courseScheduleTeacherSalaries);
 				}

+ 27 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -94,6 +94,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Autowired
     private SysConfigService sysConfigService;
     @Autowired
+    private PracticeGroupService practiceGroupService;
+    @Autowired
     private RedisTemplate redisTemplate;
 
     private static final Logger LOGGER = LoggerFactory
@@ -929,11 +931,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
             //是否是赠送课程
             ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(vipGroup.getId(),"VIP");
+            Map<String, BigDecimal> salary = vipGroupService.countVipGroupPredictFee1(vipGroup, vipGroup.getUserId(), null);
             for(int i=0;i<courseScheduleTeacherSalaries.size();i++){
                 if(!courseScheduleTeacherSalaries.get(i).getEnableChangeSalary()){
                     continue;
                 }
-                Map<String, BigDecimal> salary = vipGroupService.countVipGroupPredictFee1(vipGroup, vipGroup.getUserId(), courseScheduleTeacherSalaries.get(i).getCourseScheduleId());
                 offlineTeacherSalary = salary.get("offlineTeacherSalary");
 
                 if(activityUserMapper != null){
@@ -1435,22 +1437,44 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private void createPracticeGroupCourseTeacherSalaries(CourseSchedule courseSchedule, List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries){
         List<Integer> teacherIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toList());
 
+        PracticeGroup practiceGroup = null;
+        if(courseScheduleTeacherSalaries != null && courseScheduleTeacherSalaries.size() > 0){
+            String musicGroupId = courseScheduleTeacherSalaries.get(0).getMusicGroupId();
+            if(StringUtils.isNotEmpty(musicGroupId)){
+                practiceGroup = practiceGroupService.get(Long.parseLong(courseScheduleTeacherSalaries.get(0).getMusicGroupId()));
+            }
+        }
+
         SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
         BigDecimal freeTeacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
 
         List<TeacherDefaultPracticeGroupSalary> allTeacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao.queryByUserIdList(teacherIds);
         Map<Integer, List<TeacherDefaultPracticeGroupSalary>> teacherSalaryMap = allTeacherDefaultPracticeGroupSalaryList.stream().collect(Collectors.groupingBy(TeacherDefaultPracticeGroupSalary::getUserId));
         for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
-            List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherSalaryMap.get(courseScheduleTeacherSalary.getUserId());
 
-            if(Objects.nonNull(courseScheduleTeacherSalary.getExpectSalary())&&freeTeacherSalary.compareTo(courseScheduleTeacherSalary.getExpectSalary())==0){
+            if(Objects.nonNull(courseScheduleTeacherSalary.getExpectSalary()) && freeTeacherSalary.compareTo(courseScheduleTeacherSalary.getExpectSalary()) == 0){
                 courseScheduleTeacherSalary.setExpectSalary(freeTeacherSalary);
             }else{
+                List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherSalaryMap.get(courseScheduleTeacherSalary.getUserId());
                 if (teacherDefaultPracticeGroupSalaryList != null && teacherDefaultPracticeGroupSalaryList.size() > 0) {
                     courseScheduleTeacherSalary.setExpectSalary(teacherDefaultPracticeGroupSalaryList.get(0).getMainTeacherSalary());
                 } else {
                     throw new BizException("请设置老师 的网管课课酬");
                 }
+                if(practiceGroup != null){
+                    Integer vipGroupActivityId = practiceGroup.getVipGroupActivityId();
+                    if(vipGroupActivityId != null){
+                        ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(practiceGroup.getId(),"PRACTICE");
+                        if(activityUserMapper != null){
+                            Map<String, BigDecimal> map = practiceGroupService.countPracticeGroupPredictFee1(practiceGroup, courseScheduleTeacherSalary.getUserId());
+                            if(practiceGroup.getId().equals(activityUserMapper.getPracticeGroupId())){
+                                courseScheduleTeacherSalary.setExpectSalary(map.get("onlineTeacherSalary"));
+                            }else {
+                                courseScheduleTeacherSalary.setExpectSalary(map.get("giveTeacherDefaultSalary"));
+                            }
+                        }
+                    }
+                }
             }
         }
     }

+ 46 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -4614,7 +4614,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         if (Objects.isNull(practiceGroupSellPrice)) {
             throw new BizException("所在城市暂不参与此活动");
         }
-        Map<String,BigDecimal> results = new HashMap<>(1);
+        Map<String,BigDecimal> results = new HashMap<>(3);
 
         BigDecimal totalPrice = BigDecimal.ZERO;
         if(practice.getAllCourseNum() != null){
@@ -4656,6 +4656,51 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     }
 
     @Override
+    public Map<String, BigDecimal> countPracticeGroupPredictFee1(PracticeGroup practice, Integer teacherId) {
+        if(Objects.isNull(teacherId)){
+            throw new BizException("请指定教师");
+        }
+        SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
+        Integer practiceCourseMinutes = practiceCourseMinutesConfig.getParanValue(Integer.class);
+        TeacherDefaultPracticeGroupSalary teacherDefaultPracticeGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(teacherId,practiceCourseMinutes);
+
+        if(Objects.isNull(teacherDefaultPracticeGroupSalary)){
+            throw new BizException("请设置老师课酬");
+        }
+        Map<String,BigDecimal> results = new HashMap<>(2);
+
+        //课程购买费用计算
+        VipGroupSalarySettlementTypeDto salarySettlement = null;
+        VipGroupSalarySettlementTypeDto givePracticeSalarySettlement = null;
+        if(practice.getVipGroupActivityId() != null){
+            VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(practice.getVipGroupActivityId());
+            VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
+            if(Objects.isNull(vipGroupSalarySettlementDto)){
+                throw new BizException("课酬结算方案错误");
+            }
+            salarySettlement = vipGroupSalarySettlementDto.getPracticeSalarySettlement();
+            givePracticeSalarySettlement = vipGroupSalarySettlementDto.getGivePracticeSalarySettlement();
+        }
+        //教师课酬线上单课酬计算
+        BigDecimal teacherDefaultSalary = teacherDefaultPracticeGroupSalary.getMainTeacherSalary();
+        BigDecimal giveTeacherDefaultSalary = teacherDefaultSalary;
+        if(Objects.nonNull(salarySettlement)){
+            if(salarySettlement.getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY){
+                teacherDefaultSalary = salarySettlement.getSettlementValue();
+            }
+        }
+        if(Objects.nonNull(givePracticeSalarySettlement)){
+            if(givePracticeSalarySettlement.getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY){
+                giveTeacherDefaultSalary = givePracticeSalarySettlement.getSettlementValue();
+            }
+        }
+
+        results.put("onlineTeacherSalary",teacherDefaultSalary.setScale(2, BigDecimal.ROUND_HALF_UP));
+        results.put("giveTeacherDefaultSalary",giveTeacherDefaultSalary.setScale(2, BigDecimal.ROUND_HALF_UP));
+        return results;
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public Object createPracticeGroup(PracticeGroupApplyDto practice) {
         PracticeGroupApplyBaseInfoDto applyBaseInfoDto = practice.getPracticeGroupApplyBaseInfoDto();

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -422,7 +422,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 					}
 				}
 			}
-			map.put(OrderDetailTypeEnum.MAINTENANCE.getCode(), totalAmount);
+			map.put(OrderDetailTypeEnum.MAINTENANCE.getCode(), totalAmount.multiply(new BigDecimal(0.995)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP));
 		} else {
 			map.put(OrderDetailTypeEnum.MAINTENANCE.getCode(), BigDecimal.ZERO);
 		}