소스 검색

Merge remote-tracking branch 'origin/master'

周箭河 5 년 전
부모
커밋
fffcf2fbb5

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -268,6 +268,17 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
     Integer countClassGroupNormalStudentNum(@Param("classGroupId") Integer classGroupId);
 
     /**
+     * @describe 统计课程组上状态正常的学员数量
+     * @author Joburgess
+     * @date 2020.08.05
+     * @param groupType:
+     * @param groupId:
+     * @return int
+     */
+    int countGroupNormalStudentNum(@Param("groupType") GroupType groupType,
+                                   @Param("groupId") String groupId);
+
+    /**
      * @describe 统计vip课或乐团下的学生人数
      * @author Joburgess
      * @date 2019/12/14

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -354,14 +354,14 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * @param month:
-     * @param organIdList:
+     * @param classGroupIds:
      * @return java.util.List<java.util.Date>
      * @describe 获取当月有课的日期
      * @author Joburgess
      * @date 2019/10/18
      */
     List<Date> getCourseScheduleDate(@Param("month") Date month,
-                                     @Param("organIdList") String organIdList,
+                                     @Param("classGroupIds") List<Integer> classGroupIds,
                                      @Param("type") String type);
 
     /**

+ 0 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherCourseSalaryDto.java


+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -178,12 +178,12 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @param computeTotalPrice: 是否计算课程购买总价
      * @return java.util.Map
      */
-    <K extends VipGroup> Map countVipGroupPredictFee(K vipGroup,
+    <K extends VipGroup> Map<String, BigDecimal> countVipGroupPredictFee(K vipGroup,
                                                      Integer teacherId,
                                                      BigDecimal onlineClassesUnitPrice,
-                                                     BigDecimal offlineClassesUnitPrice,
-                                                     boolean computeTotalPrice,
-                                                     boolean useDefaultTeacherSalary);
+                                                     BigDecimal offlineClassesUnitPrice);
+
+
 
     /**
      * @Author: Joburgess

+ 28 - 33
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -779,7 +779,28 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
     @Override
     public List<Date> getCourseScheduleDates(Date month, String organIdList, String type) {
-        return courseScheduleDao.getCourseScheduleDate(month, organIdList,type);
+		Map<String, Object> params = new HashMap<>();
+		params.put("organIdList", organIdList);
+
+		List<Group> groups = groupDao.searchGroups(params);
+		List<Integer> classGroupIds=new ArrayList<>();
+		if(!CollectionUtils.isEmpty(groups)){
+			Map<GroupType, List<Group>> groupTypeGroupsMap = groups.stream().collect(Collectors.groupingBy(Group::getGroupType));
+			for (Map.Entry<GroupType, List<Group>> groupTypeListEntry : groupTypeGroupsMap.entrySet()) {
+				List<String> groupIds = groupTypeListEntry.getValue().stream().map(Group::getId).collect(Collectors.toList());
+				List<ClassGroup> classGroups = classGroupDao.findByMusicGroupsAndType(groupIds, groupTypeListEntry.getKey().getCode());
+				if(!CollectionUtils.isEmpty(classGroups)){
+					List<Integer> tempClassGroupIds=classGroups.stream().map(ClassGroup::getId).collect(Collectors.toList());
+					classGroupIds.addAll(tempClassGroupIds);
+				}
+			}
+			if(CollectionUtils.isEmpty(classGroupIds)){
+				return Collections.EMPTY_LIST;
+			}
+		}else{
+			return Collections.EMPTY_LIST;
+		}
+        return courseScheduleDao.getCourseScheduleDate(month, classGroupIds,type);
     }
 
     @Override
@@ -2711,27 +2732,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						}
 
 					} else if (newCourseSchedule.getGroupType() == GroupType.VIP) {
-						Map<Integer, TeacherDefaultVipGroupSalary> map = vipGroupSalaryMap.get(teacherId);
-						if (map == null) {
-							throw new BizException("老师[]没有设置默认课酬,请先设置", teacherId);
-						}
-						if (vipGroup == null) {
-							throw new BizException("课程[{}]记录存在异常,请联系管理员", courseScheduleId);
-						}
+						Map<String, BigDecimal> salaryMap = vipGroupService.countVipGroupPredictFee(vipGroup, teacherId, null, null);
 
 						BigDecimal teacherSalary=BigDecimal.ZERO;
 
-						ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroup.getId().intValue(), teacherId);
-
-						if(Objects.nonNull(classGroupTeacherSalary)){
-							teacherSalary=newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE?classGroupTeacherSalary.getSalary():classGroupTeacherSalary.getOnlineClassesSalary();
-						}
-						if(Objects.isNull(teacherSalary)||teacherSalary.compareTo(BigDecimal.ZERO)<=0){
-							TeacherDefaultVipGroupSalary tdvs = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(teacherId,vipGroup.getVipGroupCategoryId());
-							if (tdvs == null||Objects.isNull(tdvs.getOfflineClassesSalary())) {
-								throw new BizException("老师[]没有设置默认课酬,请先设置", teacherId);
-							}
-							teacherSalary=tdvs.getOfflineClassesSalary();
+						if(Objects.nonNull(salaryMap)){
+							teacherSalary=newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE?salaryMap.get("offlineTeacherSalary"):salaryMap.get("onlineTeacherSalary");
 						}
 
 						ts.setExpectSalary(teacherSalary);
@@ -2938,25 +2944,14 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
                     BigDecimal onlineTeacherSalary = new BigDecimal(0), offlineTeacherSalary = new BigDecimal(0);
 
-                    if (teacherIsChange) {
-                        TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(newCourseSchedule.getActualTeacherId(), byCourseSchedule.getVipGroupCategoryId());
-                        if (Objects.nonNull(byTeacherAndCategory)) {
-                            onlineTeacherSalary = byTeacherAndCategory.getOfflineClassesSalary();
-                            offlineTeacherSalary = byTeacherAndCategory.getOfflineClassesSalary();
-                        }
-                    } else {
-                        ClassGroupTeacherSalary byClassGroupAndTeacher = classGroupTeacherSalaryDao.findByClassGroupAndTeacher(oldCourseSchedule.getClassGroupId(), newCourseSchedule.getActualTeacherId());
-                        if (Objects.nonNull(byClassGroupAndTeacher)) {
-                            onlineTeacherSalary = byClassGroupAndTeacher.getOnlineClassesSalary();
-                            offlineTeacherSalary = byClassGroupAndTeacher.getSalary();
-                        }
-                    }
+					Map<String, BigDecimal> salaryMap = vipGroupService.countVipGroupPredictFee(byCourseSchedule, newCourseSchedule.getActualTeacherId(), null, null);
 
                     List<CourseSchedule> courseSchedules = new ArrayList<>();
                     courseSchedules.add(newCourseSchedule);
                     courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(byCourseSchedule,
                             courseSchedules,
-                            onlineTeacherSalary, offlineTeacherSalary);
+							salaryMap.get("onlineTeacherSalary"),
+							salaryMap.get("offlineTeacherSalary"));
                     if (Objects.nonNull(oldCourseSchedule.getActualTeacherId()) && teacherIsChange) {
                         beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
                     }

+ 6 - 49
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -738,57 +738,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     public void updateVipGroupCourseTeacherSalary(Integer vipGroupId, Integer oldTeacherId) {
         VipGroup vipGroup = vipGroupService.get(vipGroupId.longValue());
 
-        Integer studentNum = classGroupStudentMapperDao.countGroupStudentNum(vipGroupId.toString(), GroupType.VIP.getCode());
+        BigDecimal onlineTeacherSalary=BigDecimal.ZERO,
+                offlineTeacherSalary=BigDecimal.ZERO;
 
-        if(Objects.isNull(oldTeacherId)){
-            oldTeacherId=vipGroup.getUserId();
-        }
-
-        ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroupId, oldTeacherId);
-
-        if(Objects.isNull(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);
-        }
-
-        TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(), vipGroup.getVipGroupCategoryId());
+        Map<String, BigDecimal> salary = vipGroupService.countVipGroupPredictFee(vipGroup, vipGroup.getUserId(), null, null);
 
-        BigDecimal onlineTeacherSalary,
-                offlineTeacherSalary;
-
-        onlineTeacherSalary=classGroupTeacherSalary.getOnlineClassesSalary();
-        if(Objects.isNull(onlineTeacherSalary)){
-            onlineTeacherSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
-        }
-        offlineTeacherSalary=classGroupTeacherSalary.getSalary();
-        if(Objects.isNull(offlineTeacherSalary)){
-            offlineTeacherSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
-        }
-
-        if(Objects.isNull(onlineTeacherSalary)||Objects.isNull(offlineTeacherSalary)){
-            throw new BizException("教师课酬异常");
-        }
-
-        VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
-
-        BigDecimal studentNumDecimal = new BigDecimal(studentNum);
-        BigDecimal oldStudentNumDecimal = new BigDecimal(vipGroupCategory.getStudentNum());
-
-        if(Objects.nonNull(onlineTeacherSalary)||onlineTeacherSalary.compareTo(BigDecimal.ZERO)<=0){
-            onlineTeacherSalary = onlineTeacherSalary
-                    .divide(oldStudentNumDecimal, CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN)
-                    .multiply(studentNumDecimal).setScale(0, BigDecimal.ROUND_HALF_UP);
-        }
-        if(Objects.nonNull(offlineTeacherSalary)||offlineTeacherSalary.compareTo(BigDecimal.ZERO)<=0){
-            offlineTeacherSalary = offlineTeacherSalary
-                    .divide(oldStudentNumDecimal,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN)
-                    .multiply(studentNumDecimal).setScale(0,BigDecimal.ROUND_HALF_UP);
+        if(Objects.nonNull(salary)){
+            onlineTeacherSalary=salary.get("onlineTeacherSalary");
+            offlineTeacherSalary=salary.get("offlineTeacherSalary");
         }
 
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByGroupWithNotStart(vipGroupId.toString(), GroupType.VIP.getCode());

+ 48 - 52
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -273,9 +273,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		Map<String, BigDecimal> costInfo = countVipGroupPredictFee(vipGroupApplyBaseInfoDto,
 				vipGroupApplyBaseInfoDto.getUserId(),
 				vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
-				vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice(),
-				true,
-				true);
+				vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice());
 
 //		BigDecimal offlineClassNum=new BigDecimal(vipGroupApplyBaseInfoDto.getOfflineClassesNum());
 //		BigDecimal onlineClassNum=new BigDecimal(vipGroupApplyBaseInfoDto.getOnlineClassesNum());
@@ -976,9 +974,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee(K vipGroup,
 																			   Integer teacherId,
 																			   BigDecimal onlineClassesUnitPrice,
-																			   BigDecimal offlineClassesUnitPrice,
-																			   boolean computeTotalPrice,
-																			   boolean useDefaultTeacherSalary){
+																			   BigDecimal offlineClassesUnitPrice){
 
 		if(Objects.isNull(teacherId)){
 			throw new BizException("请指定教师");
@@ -988,10 +984,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("请指定课程形式");
 		}
 
-		if(Objects.isNull(vipGroup.getSingleClassMinutes())){
-			throw new BizException("请指定课程时长");
-		}
-
 		VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
 		if(Objects.isNull(vipGroupCategory)){
 			throw new BizException("未找到课程形式");
@@ -1000,6 +992,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(teacherId,
 				vipGroup.getVipGroupCategoryId());
 
+		if(Objects.isNull(teacherDefaultVipGroupSalary)){
+			throw new BizException("请设置教师课酬");
+		}
+
 		if(Objects.isNull(vipGroup.getVipGroupActivityId())){
 			throw new BizException("请指定活动方案");
 		}
@@ -1010,6 +1006,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("指定的活动方案不存在");
 		}
 
+		Teacher teacher = teacherDao.get(teacherId);
+
 		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
 
 		if(Objects.isNull(vipGroupSalarySettlementDto)){
@@ -1018,12 +1016,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		Map<String,BigDecimal> results=new HashMap<>(1);
 
-		//课程时长与结算单位时长占比
 		BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
 		BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
-		onlineClassesUnitPrice=Objects.isNull(onlineClassesUnitPrice)?new BigDecimal(0):onlineClassesUnitPrice;
+		onlineClassesUnitPrice=Objects.isNull(onlineClassesUnitPrice)?vipGroup.getOnlineClassesUnitPrice():onlineClassesUnitPrice;
+		if(Objects.isNull(onlineClassesUnitPrice)){
+			onlineClassesUnitPrice = BigDecimal.ZERO;
+		}
 		BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
-		offlineClassesUnitPrice=Objects.isNull(offlineClassesUnitPrice)?new BigDecimal(0):offlineClassesUnitPrice;
+		offlineClassesUnitPrice=Objects.isNull(offlineClassesUnitPrice)?vipGroup.getOfflineClassesUnitPrice():offlineClassesUnitPrice;
+		if(Objects.isNull(offlineClassesUnitPrice)){
+			offlineClassesUnitPrice = BigDecimal.ZERO;
+		}
 		BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
 		BigDecimal totalClassNum=offlineClassNum.add(onlineClassNum);
 		BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
@@ -1067,13 +1070,25 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
 
+		if(JobNatureEnum.PART_TIME.equals(teacher.getJobNature())||vipGroupCategory.getStudentNum()>1){
+			int normalStudentNum = 0;
+			BigDecimal ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+			BigDecimal ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+			if(Objects.nonNull(vipGroup.getId())){
+				normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(GroupType.VIP, vipGroup.getId().toString());
+			}
+			if(normalStudentNum>0&&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);
+			return results;
+		}
+
 		//教师课酬线上单课酬计算
 		if(Objects.nonNull(vipGroupSalarySettlementDto.getOnlineSalarySettlement())){
-			if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!useDefaultTeacherSalary
-					&&vipGroupActivity.getSalaryReadonlyFlag().equals("1")){
-				teacherOnlineSalary=((VipGroupApplyBaseInfoDto) vipGroup).getOnlineTeacherSalary();
-				results.put("onlineTeacherSalary",teacherOnlineSalary);
-			}
 			if(Objects.isNull(teacherOnlineSalary)){
 				switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
 					case TEACHER_DEFAULT:
@@ -1100,14 +1115,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				}
 
 			}
-		}else{
-			results.put("onlineTeacherSalary", new BigDecimal(0));
 		}
 
 		//教师线下单课酬计算
 		if(Objects.nonNull(vipGroupSalarySettlementDto.getOfflineSalarySettlement())){
-			if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!useDefaultTeacherSalary
-					&&vipGroupActivity.getSalaryReadonlyFlag().equals("1")){
+			if(vipGroup instanceof VipGroupApplyBaseInfoDto){
 				teacherOfflineSalary=((VipGroupApplyBaseInfoDto) vipGroup).getOfflineTeacherSalary();
 				results.put("offlineTeacherSalary",teacherOfflineSalary);
 			}
@@ -1132,8 +1144,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						throw new BizException("未指定课酬结算标准!");
 				}
 			}
-		}else{
-			results.put("offlineTeacherSalary", new BigDecimal(0));
 		}
 
         return results;
@@ -1876,12 +1886,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			}
 			courseScheduleService.batchAddCourseSchedule(newCourseSchedules);
 
-			TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(), vipGroup.getVipGroupCategoryId());
-
-			if(Objects.isNull(teacherDefaultVipGroupSalary)){
-				throw new BizException("请设置默认课酬");
-			}
-
 			ClassGroupTeacherMapper oldClassGroupTeacherMapper = classGroupTeacherMapperDao.findByClassGroupAndTeacher(classGroup.getId(),oldTeacherId);
 			if(Objects.nonNull(oldClassGroupTeacherMapper)){
 				ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper();
@@ -1893,11 +1897,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
 			}
 
+			Map<String, BigDecimal> salaryMap = countVipGroupPredictFee(vipGroup, vipGroup.getUserId(), null, null);
+
 			//创建老师单节课课酬信息
 			courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroup,
 					newCourseSchedules,
-					teacherDefaultVipGroupSalary.getOfflineClassesSalary(),
-					teacherDefaultVipGroupSalary.getOfflineClassesSalary());
+					salaryMap.get("onlineTeacherSalary"),
+					salaryMap.get("offlineTeacherSalary"));
 		}
 
 		BigDecimal surplusCourseFee = new BigDecimal(0);
@@ -2524,12 +2530,15 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		courseScheduleService.batchAddCourseSchedule(vipGroupApplyDto.getCourseSchedules());
 
-        ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroup.getId().intValue(), vipGroup.getUserId());
+		Map<String, BigDecimal> map = countVipGroupPredictFee(vipGroup, vipGroup.getUserId(), null, null);
+
+		BigDecimal teacherSalary=BigDecimal.ZERO;
 
 		BigDecimal onlineTeacherSalary=null,offlineTeacherSalary=null,zero=new BigDecimal(0);
-		if(Objects.nonNull(classGroupTeacherSalary)){
-            onlineTeacherSalary=classGroupTeacherSalary.getOnlineClassesSalary();
-            offlineTeacherSalary=classGroupTeacherSalary.getSalary();
+
+		if(Objects.nonNull(map)){
+			onlineTeacherSalary=map.get("onlineTeacherSalary");
+			offlineTeacherSalary=map.get("offlineTeacherSalary");
 		}
 
 		if(Objects.isNull(onlineTeacherSalary)){
@@ -2540,19 +2549,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			offlineTeacherSalary = new BigDecimal(0);
 		}
 
-		TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(), vipGroup.getVipGroupCategoryId());
-
-		if(onlineTeacherSalary.compareTo(zero)<=0){
-            if(Objects.nonNull(byTeacherAndCategory)){
-                onlineTeacherSalary=byTeacherAndCategory.getOfflineClassesSalary();
-            }
-		}
-		if(offlineTeacherSalary.compareTo(zero)<=0){
-			if(Objects.nonNull(byTeacherAndCategory)){
-				offlineTeacherSalary=byTeacherAndCategory.getOfflineClassesSalary();
-			}
-		}
-
 		//创建老师单节课课酬信息
 		courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroup,
 				vipGroupApplyDto.getCourseSchedules(),
@@ -2650,13 +2646,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			if(courseNum==0){
 				courseScheduleService.batchAddCourseSchedule(courseSchedules);
 
-				ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroupId.intValue(), vipGroup.getUserId());
+				Map<String, BigDecimal> salaryMap = countVipGroupPredictFee(vipGroup, vipGroup.getUserId(), null, null);
 
 				//创建老师单节课课酬信息
 				courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroup,
 						courseSchedules,
-						classGroupTeacherSalary.getOnlineClassesSalary(),
-						classGroupTeacherSalary.getSalary());
+						salaryMap.get("onlineTeacherSalary"),
+						salaryMap.get("offlineTeacherSalary"));
 			}
             imGroupMemberList.add(new ImGroupMember(vipGroup.getUserId().toString()));
 		}

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -354,6 +354,17 @@
             AND status_!='QUIT' AND status_!='QUIT_SCHOOL'
     </select>
 
+    <select id="countGroupNormalStudentNum" resultType="int">
+        SELECT
+            COUNT( user_id_ )
+        FROM
+          class_group_student_mapper
+        WHERE
+            group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+	        AND music_group_id_= #{groupId}
+            AND status_='NORMAL'
+    </select>
+
     <select id="countGroupStudentNum" resultType="int">
         SELECT
             COUNT( user_id_ )

+ 17 - 15
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -954,23 +954,25 @@
 
     <select id="getCourseScheduleDate" resultType="java.util.Date">
         SELECT
-        cs.class_date_
+            cs.class_date_
         FROM
-        music_group mg
-        LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
-        LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
+            course_schedule cs
+            LEFT JOIN teacher t ON cs.actual_teacher_id_=t.id_
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        AND FIND_IN_SET(mg.organ_id_,#{organIdList}) AND cs.id_ IS NOT NULL
-        <if test="month==null">
-            AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
-        </if>
-        <if test="month!=null">
-            AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
-        </if>
-        <if test="type!=null and type!=''">
-            AND cs.type_=#{type}
-        </if>
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+            AND cs.class_group_id_ IN
+            <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
+                #{classGroupId}
+            </foreach>
+            <if test="month==null">
+                AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+            </if>
+            <if test="month!=null">
+                AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+            </if>
+            <if test="type!=null and type!=''">
+                AND cs.group_type_=#{type}
+            </if>
         GROUP BY
         cs.class_date_
     </select>

+ 0 - 3
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -129,9 +129,6 @@ public class RoomServiceImpl implements RoomService {
         String userId = sysUser.getId().toString();
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
         CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
-        if(courseSchedule.getTeachMode() == TeachModeEnum.OFFLINE){
-            throw new BizException("加入失败:线下课不允许此操作");
-        }
         if(teacher != null && userId.equals(courseSchedule.getActualTeacherId())){
             courseScheduleStudentPaymentDao.adjustPlayMidi(Long.parseLong(roomId),null,null);
             userName = sysUser.getRealName();

+ 7 - 107
mec-util/src/main/java/com/ym/mec/util/excel/POIUtil.java

@@ -6,8 +6,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -17,30 +15,21 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.apache.commons.beanutils.ConvertUtils;
 import org.apache.commons.beanutils.NestedNullException;
 import org.apache.commons.beanutils.PropertyUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.BasicCookieStore;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.ssl.SSLContextBuilder;
-import org.apache.http.ssl.TrustStrategy;
-import org.apache.http.util.EntityUtils;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
 import org.apache.poi.hssf.usermodel.HSSFFont;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
@@ -539,95 +528,6 @@ public class POIUtil {
 		return result;
 	}
 
-	public static void main(String[] args) {
-		File file = new File("e:/reward.xlsx");
-		String sheetName = "reward";
-		Map<String, List<Map<String, Object>>> map = null;
-		try {
-			map = POIUtil.importExcel(file, 1);
-		} catch (IOException e) {
-			e.printStackTrace();
-			return;
-		}
-		if (map != null) {
-			// Map<String, Object> loginParam = new HashMap<String, Object>();
-
-			SSLContextBuilder builder = new SSLContextBuilder();
-			try {
-				builder.loadTrustMaterial(null, new TrustStrategy() {
-
-					@Override
-					public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-						return true;
-					}
-				});
-			} catch (Exception e) {
-				e.printStackTrace();
-				return;
-			}
-
-			HttpPost httpPost = null;
-			CloseableHttpClient httpClient = null;
-			try {
-				SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(builder.build());
-				httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).setDefaultCookieStore(new BasicCookieStore()).build();
-				// 登陆
-				httpPost = new HttpPost("https://ehjinrong.com/manage/admin/login.do?userName=sadmin&password=Hello@ehjr&captcha=411049");
-
-				HttpResponse httpResponse = httpClient.execute(httpPost);
-				HttpEntity httpEntity = httpResponse.getEntity();
-				String str = EntityUtils.toString(httpEntity);
-				System.out.println("--------" + str);
-				EntityUtils.consume(httpEntity);
-
-				// 发放奖励
-				for (Map<String, Object> row : map.get(sheetName)) {
-					try {
-						Long arg0 = Long.parseLong(row.get("user_id_").toString());
-						double arg1 = Double.parseDouble(row.get("reward").toString());
-						//String arg2 = row.get("tender_id_").toString();
-
-						Map<String, Object> parameterMap = new HashMap<String, Object>();
-						parameterMap.put("userId", arg0);
-						parameterMap.put("amount", arg1);
-						parameterMap.put("memo", "结清");
-
-						List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
-						if (parameterMap != null) {
-							for (Entry<String, Object> entry : parameterMap.entrySet()) {
-								String name = entry.getKey();
-								String value = ConvertUtils.convert(entry.getValue());
-								if (StringUtils.isNotEmpty(name)) {
-									nameValuePairs.add(new BasicNameValuePair(name, value));
-								}
-							}
-						}
-						httpPost = new HttpPost("https://ehjinrong.com/manage/sysAccount/fundAllocate.do");
-						httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
-						httpResponse = httpClient.execute(httpPost);
-						httpEntity = httpResponse.getEntity();
-						EntityUtils.toString(httpEntity);
-						EntityUtils.consume(httpEntity);
-
-						System.out.println("  userId:" + arg0 + "  reward:" + arg1);
-					} catch (Exception e) {
-						e.printStackTrace();
-					}
-				}
-			} catch (Exception e) {
-				e.printStackTrace();
-			} finally {
-				httpPost.releaseConnection();
-				try {
-					httpClient.close();
-				} catch (IOException e) {
-					e.printStackTrace();
-				}
-			}
-
-		}
-	}
-
 	/**
 	 * 创建excel文档
 	 *

+ 1 - 3
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -285,9 +285,7 @@ public class VipGroupManageController extends BaseController {
         Map results = vipGroupService.countVipGroupPredictFee(vipGroup,
                 vipGroup.getUserId(),
                 vipGroup.getOnlineClassesUnitPrice(),
-                vipGroup.getOfflineClassesUnitPrice(),
-                true,
-                false);
+                vipGroup.getOfflineClassesUnitPrice());
         return succeed(results);
     }