Преглед на файлове

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan преди 5 години
родител
ревизия
f25bf53db3

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

@@ -180,6 +180,17 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
     Integer countClassGroupStudentNum(@Param("classGroupId") Integer classGroupId);
 
     /**
+     * @describe 统计vip课或乐团下的学生人数
+     * @author Joburgess
+     * @date 2019/12/14
+     * @param groupId:
+     * @param groupType:
+     * @return java.lang.Integer
+     */
+    Integer countGroupStudentNum(@Param("groupId") String groupId,
+                                 @Param("groupType") String groupType);
+
+    /**
      * @param classGroupId: 班级编号
      * @param userIds:      学生编号
      * @return java.lang.Integer

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

@@ -796,4 +796,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     Integer countCourseNum(@Param("vipGroupId") Long vipGroupId,@Param("teachMode") String teachMode);
+
+    /**
+     * @describe 根据课程编号获取课程类型
+     * @author Joburgess
+     * @date 2019/12/15
+     * @param courseIds: 课程编号列表
+     * @return java.lang.String
+     */
+    List<Map<Integer, String>> getTeachModeById(@Param("courseIds") List<Long> courseIds);
 }

+ 29 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -95,6 +95,15 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 									   @Param("userIds") List<Integer> userIds);
 
 	/**
+	 * @param courseScheduleTeacherSalaries:
+	 * @return int
+	 * @describe 批量更新教师预计薪水
+	 * @author Joburgess
+	 * @date 2019/10/23
+	 */
+	int batchUpdateTeacherExpectSalarys(@Param("courseScheduleTeacherSalaries") List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries);
+
+	/**
 	 * @describe 根据课程编号与老师编号删除对应教师课酬记录
 	 * @author Joburgess
 	 * @date 2019/12/2
@@ -223,4 +232,24 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	 */
 	int deleteByMusicGroupId(@Param("musicGroupId")String musicGroupId, @Param("groupType")GroupType groupType);
 
+	/**
+	 * @describe 获取乐团获取小课的课酬记录
+	 * @author Joburgess
+	 * @date 2019/12/14
+	 * @param groupId:
+	 * @param groupType:
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary>
+	 */
+	List<CourseScheduleTeacherSalary> findByGroup(@Param("groupId")String groupId, @Param("groupType")String groupType);
+
+	/**
+	 * @describe 获取乐团获取小课的课酬记录
+	 * @author Joburgess
+	 * @date 2019/12/14
+	 * @param groupId:
+	 * @param groupType:
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary>
+	 */
+	List<CourseScheduleTeacherSalary> findByGroupWithNotStart(@Param("groupId")String groupId, @Param("groupType")String groupType);
+
 }

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

@@ -8,6 +8,16 @@ public class TeacherBasicDto {
 
     private String username;
 
+    private Integer organId;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
     public Integer getId() {
         return id;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -60,4 +60,14 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      * @return
      */
     PageInfo<TeacherSalaryDto> querySalaries(CourseScheduleTeacherSalaryQueryInfo queryInfo);
+
+    /**
+     * @describe 更新vip课剩余课时的课酬
+     * @author Joburgess
+     * @date 2019/12/14
+     * @param vipGroupId: vip课程编号
+     * @param studentChangeNum: 学员变化数量,增加为正,减少为负
+     * @return void
+     */
+    void updateVipGroupCourseTeacherSalary(Integer vipGroupId, Integer studentChangeNum);
 }

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

@@ -447,7 +447,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		//将课程计划按照开课时间排序
 		allCourseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
-        System.out.println(DateUtil.dateToString(new Date(), "HH:mm:ss"));
 		if(allCourseSchedules.size()>1){
 		    //记录连续冲突的次数
 		    int repeatTimes=1;

+ 79 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -55,6 +55,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private ClassGroupDao classGroupDao;
     @Autowired
     private TeacherDao teacherDao;
+    @Autowired
+    private ClassGroupStudentMapperDao classGroupStudentMapperDao;
+    @Autowired
+    private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
+    @Autowired
+    private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
+    @Autowired
+    private VipGroupCategoryDao vipGroupCategoryDao;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -554,4 +562,75 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         pageInfo.setRows(dataList);
         return pageInfo;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateVipGroupCourseTeacherSalary(Integer vipGroupId, Integer studentChangeNum) {
+        VipGroup vipGroup = vipGroupService.get(vipGroupId.longValue());
+        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||Objects.isNull(classGroupTeacherSalary)){
+            TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(),
+                    vipGroup.getVipGroupCategoryId());
+            VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
+            if(Objects.isNull(teacherDefaultVipGroupSalary)){
+                throw new BizException("请设置课酬");
+            }
+            onlineTeacherSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary();
+            offlineTeacherSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+            oldStudentNum = vipGroupCategory.getStudentNum();
+        }else{
+            onlineTeacherSalary=classGroupTeacherSalary.getOnlineClassesSalary();
+            offlineTeacherSalary=classGroupTeacherSalary.getSalary();
+        }
+
+        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);
+        }
+
+        BigDecimal studentNumDecimal = new BigDecimal(studentNum);
+        BigDecimal oldStudentNumDecimal = new BigDecimal(oldStudentNum);
+
+        if(Objects.nonNull(onlineTeacherSalary)){
+            onlineTeacherSalary = onlineTeacherSalary
+                    .divide(oldStudentNumDecimal, CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN)
+                    .multiply(studentNumDecimal).setScale(0,BigDecimal.ROUND_HALF_UP);
+        }
+        if(Objects.nonNull(offlineTeacherSalary)){
+            offlineTeacherSalary = offlineTeacherSalary
+                    .divide(oldStudentNumDecimal,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN)
+                    .multiply(studentNumDecimal).setScale(0,BigDecimal.ROUND_HALF_UP);
+        }
+
+        classGroupTeacherSalary.setOnlineClassesSalary(onlineTeacherSalary);
+        classGroupTeacherSalary.setSalary(offlineTeacherSalary);
+
+        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByGroupWithNotStart(vipGroupId.toString(), GroupType.VIP.getCode());
+        List<Long> courseIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList());
+        List<Map<Integer, String>> teachModeById = courseScheduleDao.getTeachModeById(courseIds);
+        Map<Integer, String> coureTeachModeMap = MapUtil.convertIntegerMap(teachModeById);
+        for(int i=0;i<courseScheduleTeacherSalaries.size();i++){
+            String courseType = coureTeachModeMap.get(courseScheduleTeacherSalaries.get(i).getCourseScheduleId());
+            if(courseType.equals(TeachModeEnum.ONLINE.getCode())){
+                courseScheduleTeacherSalaries.get(i).setExpectSalary(onlineTeacherSalary);
+            }else if(courseType.equals(TeachModeEnum.OFFLINE.getCode())){
+                courseScheduleTeacherSalaries.get(i).setExpectSalary(offlineTeacherSalary);
+            }
+        }
+        courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalarys(courseScheduleTeacherSalaries);
+        classGroupTeacherSalaryDao.update(classGroupTeacherSalary);
+    }
 }

+ 68 - 33
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -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()]);
 			// 创建群组

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

@@ -246,6 +246,18 @@
             class_group_id_ = #{classGroupId}
             AND status_!='QUIT'
     </select>
+
+    <select id="countGroupStudentNum" resultType="int">
+        SELECT
+            COUNT( user_id_ )
+        FROM
+          class_group_student_mapper
+        WHERE
+            group_type_ = #{groupType}
+            AND music_group_id_ = #{groupId}
+            AND status_!='QUIT'
+    </select>
+
     <select id="countClassGroupExitStudentNum" resultType="int">
         SELECT
             COUNT( user_id_ )

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1617,4 +1617,10 @@
             AND cs.teach_mode_ = #{teachMode}
         </if>
     </select>
+    <select id="getTeachModeById" resultType="map">
+      SELECT id_ as 'key',teach_mode_ as 'value' FROM course_schedule WHERE id_ IN
+      <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
+          #{courseId}
+      </foreach>
+    </select>
 </mapper>

+ 29 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -87,6 +87,15 @@
 			</if>
 		</set> WHERE id_ = #{id} 
 	</update>
+
+	<update id="batchUpdateTeacherExpectSalarys">
+		<foreach collection="courseScheduleTeacherSalaries" item="courseScheduleTeacherSalary" separator=";">
+			UPDATE course_schedule_teacher_salary
+				SET expect_salary_ = #{courseScheduleTeacherSalary.expectSalary},update_time_ = NOW()
+			WHERE
+				id_ = #{courseScheduleTeacherSalary.id}
+		</foreach>
+	</update>
 	
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
@@ -382,6 +391,26 @@
 			</foreach>
 		GROUP BY course_schedule_id_
 	</select>
+    <select id="findByGroup" resultMap="CourseScheduleTeacherSalary">
+		SELECT
+			*
+		FROM
+			course_schedule_teacher_salary
+		WHERE
+			group_type_ = #{groupType}
+			AND music_group_id_ = #{groupId}
+	</select>
+	<select id="findByGroupWithNotStart" resultMap="CourseScheduleTeacherSalary">
+		SELECT
+			*
+		FROM
+			course_schedule_teacher_salary csts
+			LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
+		WHERE
+			csts.group_type_ = #{groupType}
+			AND csts.music_group_id_ = #{groupId}
+			AND CONCAT(cs.class_date_, ' ', cs.start_class_time_)>NOW()
+	</select>
 
     <delete id="deleteByMusicGroupId" parameterType="map" >
 		DELETE cssp FROM course_schedule_teacher_salary cssp left join course_schedule cs on cssp.course_schedule_id_ = cs.id_ WHERE cssp.music_group_id_=#{musicGroupId} AND cssp.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and cs.status_ = 'NOT_START'

+ 1 - 4
mec-biz/src/main/resources/config/mybatis/SchoolMapper.xml

@@ -138,10 +138,7 @@
     <select id="findVipSchoolByUserId" resultMap="School">
         SELECT * FROM school WHERE del_flag_ != 1
         <if test="organId != null">
-        AND (FIND_IN_SET(organ_id_,#{organId}) and user_id_ is NULL  or user_id_ = #{userId})
-        </if>
-        <if test="organId == null">
-        	and user_id_ = #{userId}
+        AND ((FIND_IN_SET(organ_id_,#{organId}) and user_id_ is NULL) or user_id_ = #{userId})
         </if>
     </select>
 </mapper>

+ 3 - 1
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -274,9 +274,11 @@
         <result property="id" column="id_"/>
         <result property="username" column="username_"/>
         <result property="realName" column="real_name_"/>
+        <result property="organId" column="organ_id_"/>
     </resultMap>
     <select id="findTeachers" resultMap="TeacherBasicDto">
-        SELECT su.id_,su.username_,su.real_name_ FROM sys_user su
+        SELECT su.id_,su.username_,su.real_name_,t.organ_id_ FROM sys_user su
+        LEFT JOIN teacher t ON su.id_=t.id_
         <where>
             <if test="userIds != null">
                 su.id_ IN

+ 31 - 23
mec-web/src/main/java/com/ym/mec/web/controller/SchoolController.java

@@ -1,27 +1,32 @@
 package com.ym.mec.web.controller;
 
-import com.timevale.tgtext.text.pdf.PdfStructTreeController.returnType;
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
-import com.ym.mec.biz.dal.entity.Employee;
-import com.ym.mec.biz.dal.entity.School;
-import com.ym.mec.biz.dal.page.SchoolQueryInfo;
-import com.ym.mec.biz.service.SchoolService;
-import com.ym.mec.common.controller.BaseController;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.School;
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.page.SchoolQueryInfo;
+import com.ym.mec.biz.service.SchoolService;
+import com.ym.mec.common.controller.BaseController;
 
 @RequestMapping("school")
 @Api(tags = "学校(教学点)服务")
@@ -32,6 +37,10 @@ public class SchoolController extends BaseController {
     private SchoolService schoolService;
     @Autowired
     private EmployeeDao employeeDao;
+    
+    @Autowired
+    private TeacherDao teacherDao;
+    
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
@@ -118,18 +127,17 @@ public class SchoolController extends BaseController {
     @ApiOperation(value = "获取教师vip课教学点")
     @GetMapping("/findVipSchoolByTeacher")
     public Object findVipSchoolByTeacher(@ApiParam(value = "教师编号", required = true) Integer userId){
-    	SysUser sysUser = sysUserFeignService.queryUserInfo();
+    	SysUser sysUser = sysUserFeignService.queryUserById(userId);
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
-        String organidList = null;
-        if(!sysUser.getIsSuperAdmin()){
-            Employee employee = employeeDao.get(sysUser.getId());
-            if(employee == null){
-            	return failed("非法请求");
-            }
-            organidList = employee.getOrganIdList();
+        StringBuffer sb = new StringBuffer();
+        sb.append(sysUser.getOrganId());
+        Teacher teacher = teacherDao.get(userId);
+        if(teacher == null){
+        	return failed("老师信息不存在");
         }
-        return succeed(schoolService.findVipSchoolByTeacher(userId,organidList,null));
+        sb.append(",").append(teacher.getFlowOrganRange());
+        return succeed(schoolService.findVipSchoolByTeacher(userId,sb.toString(),null));
     }
 }