Browse Source

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

yonge 3 years ago
parent
commit
ed2f6053ca
22 changed files with 215 additions and 164 deletions
  1. 0 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  3. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupCategoryDao.java
  4. 2 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java
  5. 28 24
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  6. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
  7. 62 54
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  8. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderCourseSettingsServiceImpl.java
  9. 30 20
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  10. 7 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  11. 6 28
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupCategoryServiceImpl.java
  12. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  13. 0 7
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  14. 20 1
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  15. 7 1
      mec-biz/src/main/resources/config/mybatis/VipGroupCategoryMapper.xml
  16. 1 2
      mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  17. 2 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  18. 1 4
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherSubjectController.java
  19. 4 2
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  20. 10 3
      mec-web/src/main/java/com/ym/mec/web/controller/SubjectController.java
  21. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java
  22. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduSubjectController.java

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

@@ -767,12 +767,6 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     List<Mapper> queryTeacherCoursesTimesOfTomorrow();
 
-    /**
-     * 查询老师30分钟内未上的课程
-     *
-     * @return
-     */
-    List<Mapper> queryTeacherNotStartCourseScheduleIn30Mins();
 
     /**
      * @param courseScheduleIds: 课程编号列表

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java

@@ -93,7 +93,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
      *
      * @return
      */
-    List<Subject> findSubSubjects(@Param("tenantId") Integer tenantId);
+    List<Subject> findSubSubjects(@Param("parentSubjectId") Integer parentSubjectId);
 
     List<Subject> findBySubjectByIdList(@Param("subjectIdList") String subjectIdList);
 
@@ -162,4 +162,13 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
      */
     List<StudentRegistration> getRegisterSubject(@Param("musicGroupId") String musicGroupId,
                                                  @Param("userIds") List<Integer> userIds);
+
+    /**
+     * 按id或名称模糊搜索
+     *
+     * @param parentSubjectId 按父Id查询
+     * @param search 搜索条件
+     * @return 查询结果
+     */
+    List<Subject> search(@Param("parentSubjectId")Integer parentSubjectId, @Param("search") String search);
 }

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupCategoryDao.java

@@ -6,13 +6,15 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Set;
 
 public interface VipGroupCategoryDao extends BaseDAO<Integer, VipGroupCategory> {
 
-    List<VipGroupCategory> findAllByOrgan(@Param("organId") String organId, @Param("cloudRoomUpLimit") Integer cloudRoomUpLimit);
+    List<VipGroupCategory> findAllByOrgan(@Param("organId") String organId);
 
     List<VipGroupCategory> findTeacherDefaultSalary(Integer userId);
 
     List<ConditionDto> findConditionCategorys();
 
+    List<VipGroupCategory> findByIds(@Param("categoryIds") Set<Integer> categoryIds);
 }

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

@@ -8,10 +8,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 
@@ -350,7 +347,7 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      *
      * @return
      */
-    List<VipGroup> getVipGroupByIds(@Param("ids") List<Long> ids);
+    List<VipGroup> getVipGroupByIds(@Param("ids") Collection<Long> ids);
 
     /**
      * 获取课程关联教务老师名称

+ 28 - 24
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -15,6 +15,7 @@ import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.Date;
@@ -272,15 +273,6 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	void courseSwap(Long courseScheduleId1, Long courseScheduleId2);
 
 	/**
-	 * @Author: Joburgess
-	 * @Date: 2019/10/14
-	 * @params [day1, day2]
-	 * @return void
-	 * @describe 对调两天的课程
-	 */
-	void courseSwapWithDay(Date day1, Date day2);
-
-	/**
 	 * @describe 课程时间调整
 	 * @author Joburgess
 	 * @date 2020.09.09
@@ -448,11 +440,6 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	void teacherCoursesScheduleRemind();
 
 	/**
-	 * 老师上课提醒
-	 */
-	void teacherSignInRemind();
-
-	/**
 	 * @describe 获取班级的课程计划
 	 * @author Joburgess
 	 * @date 2019/11/5
@@ -609,7 +596,6 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 */
 	List<CourseScheduleModifyLog> queryCourseAdjustDetail(Long courseScheduleId);
 
-
 	/**
 	 * @describe 重叠课程查找
 	 * @author qnc99
@@ -618,15 +604,6 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 */
 	void courseRepeatCheck();
 
-//	/**
-//	 * @describe 将被合并的课程替换为主课程
-//	 * @author qnc99
-//	 * @date 2020/12/7 0007
-//	 * @param courseSchedules:
-//	 * @return void
-//	 */
-//	List<CourseSchedule> classGroupNotStartMergeCourseReplace(Long classGroupId);
-
 	/**
 	 * @describe 课程合并
 	 * @author qnc99
@@ -647,4 +624,31 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	void mergeCourseSplit(Long mainCourseId, Integer operatorId);
 
 	int endCountCourseSchedules(Map<String, Object> params);
+
+	/**
+	* @description: 校验分部线上课排课人数上线
+	 * @param studentNum
+	* @return void
+	* @author zx
+	* @date 2022/1/5 15:52
+	*/
+	void checkOnlineCategory(Integer studentNum);
+
+	/**
+	* @description: 校验分部线上课排课人数上线
+	 * @param courseSchedules
+	* @return void
+	* @author zx
+	* @date 2022/1/5 15:52
+	*/
+	void checkOnlineCategory(List<CourseSchedule> courseSchedules);
+
+	/**
+	* @description: 校验分部线上课排课人数上线
+	 * @param courseSchedules
+	* @return void
+	* @author zx
+	* @date 2022/1/5 15:52
+	*/
+	void checkOnlineCategory(List<CourseSchedule> courseSchedules,TeachModeEnum teachMode);
 }

+ 8 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java

@@ -82,7 +82,7 @@ public interface SubjectService extends BaseService<Integer, Subject> {
      * 获取子级科目列表
      * @return
      */
-    List<Subject> findSubSubjects(Integer tenantId);
+    List<Subject> findSubSubjects(Integer parentSubjectId);
 
     List<Subject> findBySubjectByIdList(List<Integer> subjectIdList);
 
@@ -102,4 +102,11 @@ public interface SubjectService extends BaseService<Integer, Subject> {
      * @return
      */
     SubFeeSettingDto setSubjectInfo(Integer chargeTypeId);
+
+    /**
+     * 按名称和Id模糊搜索
+     * @param search 搜索条件
+     * @return 查询结果
+     */
+    List<Subject> search(Integer parentSubjectId, String search);
 }

+ 62 - 54
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -25,6 +25,7 @@ import com.ym.mec.biz.event.source.SendSeoMessageSource;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import org.apache.commons.collections.ListUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -167,6 +168,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private PracticeGroupSellPriceDao practiceGroupSellPriceDao;
     @Autowired
 	private TenantAssetsInfoService tenantAssetsInfoService;
+    @Autowired
+	private TenantConfigService tenantConfigService;
+    @Autowired
+	private VipGroupCategoryDao vipGroupCategoryDao;
 
     private final Logger LOGGER = LoggerFactory
             .getLogger(this.getClass());
@@ -2391,6 +2396,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 .stream().map(Long::parseLong).collect(Collectors.toList());
         //所有的课程
         List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
+        //校验机构线上课人数上限
+		this.checkOnlineCategory(courseSchedules,vipGroupCourseAdjustInfo.getTeachMode());
         courseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
 		//获取操作日志
 		List<CourseScheduleModifyLog> modifyLogs = getModifyLogs(courseScheduleIds, courseSchedules, user.getId(), now);
@@ -3068,6 +3075,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult courseAdjust(List<CourseSchedule> newCourseSchedules, Boolean allowZeroSalary) {
+    	//校验分部线上课排课人数上线
+		this.checkOnlineCategory(newCourseSchedules);
+
         Date date = new Date();
 		// 课程信息处理
 		List<Long> courseScheduleIds = newCourseSchedules.stream().map(CourseSchedule::getId).distinct().collect(Collectors.toList());
@@ -3897,10 +3907,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         courseAdjust(courseSchedules, true);
     }
 
-    @Override
-    public void courseSwapWithDay(Date day1, Date day2) {
-
-    }
 
     @Override
     public List<CourseSchedule> findClassGroupNoStartCourseSchedules(List<Integer> classGroupIds, GroupType groupType) {
@@ -4356,21 +4362,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     }
 
     @Override
-    public void teacherSignInRemind() {
-        List<Mapper> mapperList = courseScheduleDao.queryTeacherNotStartCourseScheduleIn30Mins();
-        for (Mapper mapper : mapperList) {
-            Integer userId = (Integer) mapper.getKey();
-            String scheduleName = (String) mapper.getValue();
-
-            Map<Integer, String> receivers = new HashMap<Integer, String>();
-            receivers.put(userId, userId + "");
-
-            sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_ATTEND_CLASS_MESSAGE,
-                    receivers, null, 0, "2","TEACHER", scheduleName);
-        }
-    }
-
-    @Override
     public List<CourseSchedule> findCourseScheduleByClassGroup(Integer classGroupId) {
         if (Objects.isNull(classGroupId)) {
             throw new BizException("请指定班级");
@@ -5450,38 +5441,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		System.out.println("重复课程数量:" + courseRepeatIdMap.size());
 	}
 
-//	@Override
-//	public List<CourseSchedule> classGroupNotStartMergeCourseReplace(Long classGroupId) {
-//		List<CourseSchedule> courseSchedules = courseScheduleDao.getClassGroupCourses(classGroupId);
-//		Set<Long> newCourseIds = courseSchedules.stream().filter(c -> Objects.nonNull(c.getNewCourseId())).map(CourseSchedule::getNewCourseId).collect(Collectors.toSet());
-//		if(CollectionUtils.isEmpty(newCourseIds)){
-//			return Collections.EMPTY_LIST;
-//		}
-//
-//		Date now = new Date();
-//
-//		List<CourseSchedule> mainCourses = courseScheduleDao.findByCourseScheduleIds(new ArrayList<>(newCourseIds));
-//		Map<Long, CourseSchedule> idCourseMap = mainCourses.stream().collect(Collectors.toMap(CourseSchedule::getId, c -> c, (c1, c2) -> c1));
-//		Iterator<CourseSchedule> iterator = courseSchedules.iterator();
-//		while (iterator.hasNext()){
-//			CourseSchedule next = iterator.next();
-//			if(Objects.isNull(next.getNewCourseId())){
-//				continue;
-//			}
-//			CourseSchedule mainCourse = idCourseMap.get(next.getNewCourseId());
-//			if(next.getClassGroupId().equals(mainCourse.getClassGroupId())||mainCourse.getStartClassTime().compareTo(now)<0){
-//				iterator.remove();
-//			}
-//		}
-//		for (CourseSchedule courseSchedule : courseSchedules) {
-//			if(Objects.isNull(courseSchedule.getNewCourseId())){
-//				continue;
-//			}
-//			courseSchedule = idCourseMap.get(courseSchedule.getId());
-//		}
-//		return courseSchedules;
-//	}
-
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public HttpResponseResult courseMerge(CourseMergeDto courseMergeInfo) {
@@ -5526,8 +5485,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			courseSchedule.setNote("课程合并");
 		}
 		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseScheduleIds(allCourseIds);
-		Map<Long, Set<Integer>> courseStudentIdsMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.mapping(CourseScheduleStudentPayment::getUserId, Collectors.toSet())));
-		Set<Integer> allStudentIds = courseScheduleStudentPayments.stream().map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toSet());
+//		Map<Long, Set<Integer>> courseStudentIdsMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.mapping(CourseScheduleStudentPayment::getUserId, Collectors.toSet())));
+//		Set<Integer> allStudentIds = courseScheduleStudentPayments.stream().map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toSet());
 
 		Map<Integer, CourseScheduleStudentPayment> mainStudentCourseMap = courseScheduleStudentPayments.stream().filter(c -> courseMergeInfo.getId().equals(c.getCourseScheduleId())).collect(Collectors.toMap(CourseScheduleStudentPayment::getUserId, c -> c, (c1, c2) -> c1));
 
@@ -5538,7 +5497,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		for (Map.Entry<Integer, List<CourseScheduleStudentPayment>> otherStudentCourseMapEntry : otherStudentCourseMap.entrySet()) {
 			List<CourseScheduleStudentPayment> studentCoursePayments = otherStudentCourseMapEntry.getValue();
-			BigDecimal salary = studentCoursePayments.stream().map(CourseScheduleStudentPayment::getExpectPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+//			BigDecimal salary = studentCoursePayments.stream().map(CourseScheduleStudentPayment::getExpectPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
 			if(mainStudentCourseMap.containsKey(otherStudentCourseMapEntry.getKey())){
 //				CourseScheduleStudentPayment updatePayment = mainStudentCourseMap.get(otherStudentCourseMapEntry.getKey());
 //				updatePayment.setExpectPrice(updatePayment.getExpectPrice().add(salary));
@@ -5706,4 +5665,53 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	public int endCountCourseSchedules(Map<String, Object> params) {
 		return courseScheduleDao.endCountCourseSchedules(params);
 	}
+
+    @Override
+    public void checkOnlineCategory(Integer studentNum) {
+		Integer tenantId = TenantContextHolder.getTenantId();
+		//查询云教室扣费标准
+		TenantConfig tenantConfig = tenantConfigService.getOne(new WrapperUtil<TenantConfig>()
+				.hasEq("tenant_id_", tenantId).queryWrapper());
+		if (Objects.isNull(tenantConfig)) {
+			return;
+		}
+		//云教室人数上限(含老师)
+		Integer cloudRoomUpLimit = Optional.ofNullable(tenantConfig.getConfig())
+				.map(c -> JSON.parseObject(c, TenantConfigDetail.class))
+				.map(TenantConfigDetail::getCloud_room_rule)
+				.map(TenantConfigDetail.CloudRoomRule::getCloud_room_up_limit).orElse(null);
+		if(studentNum >= cloudRoomUpLimit){
+			throw new BizException("当前机构只允许{}人以内的线上课",cloudRoomUpLimit);
+		}
+	}
+
+	@Override
+	public void checkOnlineCategory(List<CourseSchedule> courseSchedules) {
+		List<CourseSchedule> collect = courseSchedules.stream().filter(e -> e.getTeachMode() == TeachModeEnum.ONLINE).collect(Collectors.toList());
+		if(collect != null && collect.size() > 0){
+			checkMaxStudentNum(collect);
+		}
+	}
+
+	private void checkMaxStudentNum(List<CourseSchedule> courseSchedules){
+		Set<Long> vipGroupIds = courseSchedules.stream().filter(e->e.getGroupType() == VIP).map(e -> Long.parseLong(e.getMusicGroupId())).collect(Collectors.toSet());
+		if(vipGroupIds != null && vipGroupIds.size() > 0){
+			List<VipGroup> vipGroupList = vipGroupDao.getVipGroupByIds(vipGroupIds);
+			if(vipGroupList != null && vipGroupList.size() > 0){
+				Set<Integer> categoryIds = vipGroupList.stream().map(e -> e.getVipGroupCategoryId()).collect(Collectors.toSet());
+				List<VipGroupCategory> categories = vipGroupCategoryDao.findByIds(categoryIds);
+				if(categories != null && categories.size() > 0){
+					Integer maxStudentNum = categories.stream().max(Comparator.comparing(VipGroupCategory::getStudentNum)).map(e->e.getStudentNum()).get();
+					this.checkOnlineCategory(maxStudentNum);
+				}
+			}
+		}
+	}
+
+	@Override
+	public void checkOnlineCategory(List<CourseSchedule> courseSchedules, TeachModeEnum teachMode) {
+		if(teachMode == TeachModeEnum.ONLINE){
+			checkMaxStudentNum(courseSchedules);
+		}
+	}
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderCourseSettingsServiceImpl.java

@@ -24,6 +24,7 @@ import java.util.function.BiFunction;
 import java.util.function.BinaryOperator;
 import java.util.stream.Collectors;
 
+import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType.SCHOOL;
 import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum.AUDITING;
 import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType.MUSIC_APPLY;
 import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType.MUSIC_RENEW;
@@ -78,6 +79,9 @@ public class MusicGroupPaymentCalenderCourseSettingsServiceImpl extends BaseServ
     public void batchInsert(MusicGroupPaymentCalender musicGroupPaymentCalender) {
 		List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingss = musicGroupPaymentCalender.getMusicGroupPaymentCalenderCourseSettingsList();
 		if (musicGroupPaymentCalenderCourseSettingss != null && musicGroupPaymentCalenderCourseSettingss.size() > 0) {
+			if (musicGroupPaymentCalender.getPayUserType() == SCHOOL) {
+				musicGroupPaymentCalenderCourseSettingss.forEach(e->e.setCourseCurrentPrice(BigDecimal.ZERO));
+			}
 			MusicGroupOrganizationCourseSettings courseSettings = musicGroupOrganizationCourseSettingsService.get(musicGroupPaymentCalender
 					.getMusicGroupOrganizationCourseSettingId());
 			for (MusicGroupPaymentCalenderCourseSettings musicGroupPaymentCalenderCourseSettings : musicGroupPaymentCalenderCourseSettingss) {

+ 30 - 20
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -557,25 +557,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		}
 		musicGroupPaymentBaseCalender.setMusicGroup(musicGroup);
 
-		//计算缴费项目总金额(前端录入)
-		BigDecimal courseActualAmount = musicGroupPaymentCalenderCourseSettingsService.getActualAmount(musicGroupPaymentBaseCalender);
-		BigDecimal memberActualAmount = musicGroupPaymentCalenderMemberService.getActualAmount(musicGroupPaymentBaseCalender);
-		BigDecimal repairActualAmount = musicGroupPaymentCalenderRepairService.getActualAmount(musicGroupPaymentBaseCalender);
-		BigDecimal activityActualAmount = musicGroupPaymentCalenderActivityService.getActualAmount(musicGroupPaymentBaseCalender);
-
-		BigDecimal actualTotalAmount = courseActualAmount.add(memberActualAmount)
-				.add(repairActualAmount)
-				.add(activityActualAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
-		//计算项目原现价
-		BigDecimal courseCurrentAmount = musicGroupPaymentCalenderCourseSettingsService.getCurrentAmount(musicGroupPaymentBaseCalender);
-		BigDecimal memberCurrentAmount = musicGroupPaymentCalenderMemberService.getCurrentAmount(musicGroupPaymentBaseCalender);
-		BigDecimal repairCurrentAmount = musicGroupPaymentCalenderRepairService.getCurrentAmount(musicGroupPaymentBaseCalender);
-		BigDecimal activityCurrentAmount = musicGroupPaymentCalenderActivityService.getCurrentAmount(musicGroupPaymentBaseCalender);
-
-		BigDecimal currentTotalAmount = courseCurrentAmount.add(memberCurrentAmount)
-				.add(repairCurrentAmount)
-				.add(activityCurrentAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
-
 		//计算缴费项目原价
 		BigDecimal courseOriginalAmount = musicGroupPaymentCalenderCourseSettingsService.getOriginalAmount(musicGroupPaymentBaseCalender);
 		BigDecimal memberOriginalAmount = musicGroupPaymentCalenderMemberService.getOriginalAmount(musicGroupPaymentBaseCalender);
@@ -586,10 +567,30 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				.add(activityOriginalAmount)
 				.add(repairOriginalAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
 
+		BigDecimal actualTotalAmount = BigDecimal.ZERO;
 		PaymentCalenderStatusEnum status;
 		if (musicGroupPaymentBaseCalender.getPayUserType() == SCHOOL) {
 			status = AUDITING;
 		} else {
+			//计算缴费项目总金额(前端录入)
+			BigDecimal courseActualAmount = musicGroupPaymentCalenderCourseSettingsService.getActualAmount(musicGroupPaymentBaseCalender);
+			BigDecimal memberActualAmount = musicGroupPaymentCalenderMemberService.getActualAmount(musicGroupPaymentBaseCalender);
+			BigDecimal repairActualAmount = musicGroupPaymentCalenderRepairService.getActualAmount(musicGroupPaymentBaseCalender);
+			BigDecimal activityActualAmount = musicGroupPaymentCalenderActivityService.getActualAmount(musicGroupPaymentBaseCalender);
+
+			actualTotalAmount = courseActualAmount.add(memberActualAmount)
+					.add(repairActualAmount)
+					.add(activityActualAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
+
+			//计算项目原现价
+			BigDecimal courseCurrentAmount = musicGroupPaymentCalenderCourseSettingsService.getCurrentAmount(musicGroupPaymentBaseCalender);
+			BigDecimal memberCurrentAmount = musicGroupPaymentCalenderMemberService.getCurrentAmount(musicGroupPaymentBaseCalender);
+			BigDecimal repairCurrentAmount = musicGroupPaymentCalenderRepairService.getCurrentAmount(musicGroupPaymentBaseCalender);
+			BigDecimal activityCurrentAmount = musicGroupPaymentCalenderActivityService.getCurrentAmount(musicGroupPaymentBaseCalender);
+
+			BigDecimal currentTotalAmount = courseCurrentAmount.add(memberCurrentAmount)
+					.add(repairCurrentAmount)
+					.add(activityCurrentAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
 			status = actualTotalAmount.compareTo(currentTotalAmount) == 0 ? NO:AUDITING;
 		}
 
@@ -630,9 +631,12 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		//保存会员缴费信息
 		MusicGroupPaymentCalenderMember calenderMember = musicGroupPaymentBaseCalender.getCalenderMember();
 		if(calenderMember != null){
-			calenderMember = musicGroupPaymentCalenderMemberService.initBean(musicGroupPaymentBaseCalender.getCalenderMember());
+			calenderMember = musicGroupPaymentCalenderMemberService.initBean(calenderMember);
 			calenderMember.setOriginalAmount(memberOriginalAmount);
 			calenderMember.setCalenderId(calenderId);
+			if (musicGroupPaymentBaseCalender.getPayUserType() == SCHOOL) {
+				calenderMember.setActualAmount(BigDecimal.ZERO);
+			}
 			musicGroupPaymentCalenderMemberService.insert(calenderMember);
 		}
 		//保存乐保缴费信息
@@ -640,12 +644,18 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		if(musicRepair != null){
 			musicRepair.setOriginalAmount(repairOriginalAmount);
 			musicRepair.setCalenderId(calenderId);
+			if (musicGroupPaymentBaseCalender.getPayUserType() == SCHOOL) {
+				musicRepair.setActualAmount(BigDecimal.ZERO);
+			}
 			musicGroupPaymentCalenderRepairService.insert(musicRepair);
 		}
 		//保存活动缴费信息
 		List<MusicGroupPaymentCalenderActivity> calenderActivityList = musicGroupPaymentBaseCalender.getCalenderActivityList();
 		if(calenderActivityList != null && calenderActivityList.size() > 0){
 			musicGroupPaymentCalenderActivityService.initBean(calenderActivityList);
+			if (musicGroupPaymentBaseCalender.getPayUserType() == SCHOOL) {
+				calenderActivityList.forEach(e->e.setActualAmount(BigDecimal.ZERO));
+			}
 			musicGroupPaymentCalenderActivityService.batchInsert(musicGroupPaymentBaseCalender,calenderId);
 		}
 		//保存课程费用列表

+ 7 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java

@@ -196,8 +196,8 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
     }
 
     @Override
-    public List<Subject> findSubSubjects(Integer tenantId) {
-        return subjectDao.findSubSubjects(tenantId);
+    public List<Subject> findSubSubjects(Integer parentSubjectId) {
+        return subjectDao.findSubSubjects(parentSubjectId);
     }
 
     @Override
@@ -219,4 +219,9 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
     public SubFeeSettingDto setSubjectInfo(Integer chargeTypeId) {
         return null;
     }
+
+    @Override
+    public List<Subject> search(Integer parentSubjectId, String search) {
+        return  subjectDao.search(parentSubjectId, search);
+    }
 }

+ 6 - 28
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupCategoryServiceImpl.java

@@ -1,33 +1,24 @@
 package com.ym.mec.biz.service.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.ym.mec.biz.dal.dto.ConditionDto;
-import com.ym.mec.biz.dal.entity.TenantConfig;
-import com.ym.mec.biz.dal.entity.TenantConfigDetail;
-import com.ym.mec.biz.service.TenantConfigService;
-import com.ym.mec.common.exception.BizException;
-import com.ym.mec.common.page.WrapperUtil;
-import com.ym.mec.common.tenant.TenantContextHolder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
+import com.ym.mec.biz.dal.dto.ConditionDto;
 import com.ym.mec.biz.dal.entity.VipGroupCategory;
+import com.ym.mec.biz.service.TenantConfigService;
 import com.ym.mec.biz.service.VipGroupCategoryService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import java.util.List;
 import java.util.Objects;
-import java.util.Optional;
 
 @Service
 public class VipGroupCategoryServiceImpl extends BaseServiceImpl<Integer, VipGroupCategory>  implements VipGroupCategoryService {
 	
 	@Autowired
 	private VipGroupCategoryDao vipGroupCategoryDao;
-	@Autowired
-	private TenantConfigService tenantConfigService;
 
 	@Override
 	public BaseDAO<Integer, VipGroupCategory> getDAO() {
@@ -36,20 +27,7 @@ public class VipGroupCategoryServiceImpl extends BaseServiceImpl<Integer, VipGro
 
 	@Override
 	public List<VipGroupCategory> findAllByOrgan(String organId) {
-		Integer tenantId = TenantContextHolder.getTenantId();
-		//查询云教室扣费标准
-		TenantConfig tenantConfig = tenantConfigService.getOne(new WrapperUtil<TenantConfig>()
-				.hasEq("tenant_id_", tenantId).queryWrapper());
-		if (Objects.isNull(tenantConfig)) {
-			return null;
-		}
-		//云教室人数上限(含老师)
-		Integer cloudRoomUpLimit = Optional.ofNullable(tenantConfig.getConfig())
-				.map(c -> JSON.parseObject(c, TenantConfigDetail.class))
-				.map(TenantConfigDetail::getCloud_room_rule)
-				.map(TenantConfigDetail.CloudRoomRule::getCloud_room_up_limit).orElse(null);
-
-		return vipGroupCategoryDao.findAllByOrgan(organId,cloudRoomUpLimit);
+		return vipGroupCategoryDao.findAllByOrgan(organId);
 	}
 
 	@Override

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -218,6 +218,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(StringUtils.isBlank(vipGroupApplyBaseInfoDto.getStudentIdList())){
 			throw new BizException("请选择学员");
 		}
+		//校验机构可排线上课人数上线
+		if(vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum()>0){
+			courseScheduleService.checkOnlineCategory(vipGroupApplyBaseInfoDto.getStudentNum());
+		}
 
         if(Objects.isNull(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary())){
 			throw new BizException("请设置教师课酬");
@@ -1183,6 +1187,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				||(!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE))&&(courseScheduleGroup.get(TeachModeEnum.ONLINE).size()< applyBaseInfo.getOnlineClassesNum()))){
 			throw new BizException("线上课课时数量安排有误");
 		}
+		//校验线上课学员上限
+		if(applyBaseInfo.getOnlineClassesNum() > 0){
+			courseScheduleService.checkOnlineCategory(applyBaseInfo.getStudentNum());
+		}
 
 		if(applyBaseInfo.getOfflineClassesNum()>0 && Objects.isNull(applyBaseInfo.getTeacherSchoolId())){
 			throw new BizException("请设置教学点");

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

@@ -1809,13 +1809,6 @@
         group by cssp.user_id_
     </select>
 
-    <select id="queryTeacherNotStartCourseScheduleIn30Mins" resultMap="Mapper">
-        select cssp.user_id_ key_, cs.name_ value_
-        from course_schedule cs
-                 right join course_schedule_teacher_salary cssp on cs.id_ = cssp.course_schedule_id_
-        where CONCAT(cs.class_date_, ' ', cs.start_class_time_) &lt; DATE_ADD(now(), INTERVAL 30 MINUTE)
-          and cs.status_ = 'NOT_START' AND cs.pre_course_flag_ = 0
-    </select>
 
     <resultMap id="IntegerAndIntegerListDto" type="com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto">
         <result property="id" column="id_"/>

+ 20 - 1
mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -136,7 +136,25 @@
     </select>
     <select id="findSubSubjects" resultMap="Subject">
         SELECT * FROM `subject`
-        WHERE parent_subject_id_ != 0 AND del_flag_ = 0
+        <where>
+            parent_subject_id_ != 0 AND del_flag_ = 0
+            <if test="parentSubjectId != null and parentSubjectId != ''">
+                AND parent_subject_id_ = #{parentSubjectId}
+            </if>
+        </where>
+    </select>
+
+    <select id="search" resultMap="Subject">
+        SELECT * FROM `subject`
+        <where>
+            del_flag_ = 0
+            <if test="parentSubjectId != null and parentSubjectId != ''">
+                AND parent_subject_id_ = #{parentSubjectId}
+            </if>
+            <if test="search != null and search != ''">
+                AND (id_ = #{search} or name_ like concat('%', #{search}, '%'))
+            </if>
+        </where>
     </select>
 
     <sql id="querySubPageSql">
@@ -241,4 +259,5 @@
             #{userId}
         </foreach>
     </select>
+
 </mapper>

+ 7 - 1
mec-biz/src/main/resources/config/mybatis/VipGroupCategoryMapper.xml

@@ -34,7 +34,7 @@
 	<select id="findAllByOrgan" resultMap="VipGroupCategory">
 		SELECT vgc.*,vgdcup.online_classes_unit_price_,vgdcup.offline_classes_unit_price_ FROM vip_group_category vgc
 		LEFT JOIN vip_group_default_classes_unit_price_ vgdcup ON vgc.id_=vgdcup.vip_group_category_id_ AND FIND_IN_SET(vgdcup.organ_id_,#{organId})
-		WHERE vgc.del_flag_ != 1 AND vgc.student_num_ &lt; #{cloudRoomUpLimit}
+		WHERE vgc.del_flag_ != 1
 		ORDER BY id_
 	</select>
 
@@ -110,4 +110,10 @@
 	<select id="findConditionCategorys" resultType="com.ym.mec.biz.dal.dto.ConditionDto">
       	select id_ id,name_ `name` from vip_group_category where del_flag_ != 1
     </select>
+	<select id="findByIds" resultType="com.ym.mec.biz.dal.entity.VipGroupCategory">
+		SELECT * FROM vip_group_category WHERE del_flag_ = 0 AND id_ IN
+		<foreach collection="categoryIds" open="(" close=")" item="id" separator=",">
+			#{id}
+		</foreach>
+	</select>
 </mapper>

+ 1 - 2
mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -318,8 +318,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取子集科目列表")
     @GetMapping("subject/findSubSubjects")
     public Object findSubSubjects(){
-        Integer tenantId = TenantContextHolder.getTenantId();
-        return succeed(subjectService.findSubSubjects(tenantId));
+        return succeed(subjectService.findSubSubjects(null));
     }
 
     @ApiOperation(value = "获取用户所在分部的年级列表)")

+ 2 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -259,6 +259,7 @@ public class TeacherCourseScheduleController extends BaseController {
         if(Objects.isNull(classDateAdjustDto.getClassGroupId())){
             classDateAdjustDto.setClassGroupId(oldCourseSchedule.getClassGroupId());
         }
+        classDateAdjustDto.setMusicGroupId(oldCourseSchedule.getMusicGroupId());
         List<CourseSchedule> courseSchedules=new ArrayList<>();
         courseSchedules.add(classDateAdjustDto);
         return scheduleService.courseAdjust(courseSchedules, true);
@@ -286,6 +287,7 @@ public class TeacherCourseScheduleController extends BaseController {
         if(Objects.isNull(courseSchedule.getClassGroupId())){
             courseSchedule.setClassGroupId(oldCourseSchedule.getClassGroupId());
         }
+        courseSchedule.setMusicGroupId(oldCourseSchedule.getMusicGroupId());
         List<CourseSchedule> courseSchedules=new ArrayList<>();
         courseSchedules.add(courseSchedule);
         scheduleService.courseAdjust(courseSchedules, true);

+ 1 - 4
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherSubjectController.java

@@ -43,10 +43,7 @@ public class TeacherSubjectController extends BaseController {
     @ApiOperation(value = "获取子集科目列表")
     @GetMapping("/findSubSubjects")
     public Object findSubSubjects(Integer tenantId){
-        if(tenantId == null){
-            tenantId = TenantContextHolder.getTenantId();
-        }
-        return succeed(subjectService.findSubSubjects(tenantId));
+        return succeed(subjectService.findSubSubjects(null));
     }
 
 }

+ 4 - 2
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -190,7 +190,7 @@ public class CourseScheduleController extends BaseController {
 
     @ApiOperation(value = "课时调整")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/classStartDateAdjust','system')")
-    @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    @PostMapping(value = "/classStartDateAdjust")
     public HttpResponseResult classStartDateAdjust(CourseSchedule courseSchedule, Boolean allowZeroSalary){
         if(Objects.isNull(allowZeroSalary)){
             allowZeroSalary = false;
@@ -213,7 +213,8 @@ public class CourseScheduleController extends BaseController {
         if(Objects.isNull(courseSchedule.getClassGroupId())){
             courseSchedule.setClassGroupId(oldCourseSchedule.getClassGroupId());
         }
-        List<CourseSchedule> courseSchedules=new ArrayList<>();
+        courseSchedule.setMusicGroupId(oldCourseSchedule.getMusicGroupId());
+        List<CourseSchedule> courseSchedules = new ArrayList<>();
         courseSchedules.add(courseSchedule);
         return courseScheduleService.courseAdjust(courseSchedules, allowZeroSalary);
     }
@@ -252,6 +253,7 @@ public class CourseScheduleController extends BaseController {
         return courseScheduleService.classGroupTeacherAdjust(classGroupIds,teacherId,targetTeacherId, allowZeroSalary);
     }
 
+    //新雷说这个接口没有地方用过了
     @ApiOperation(value = "课时调整-批量")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchClassStartDateAdjust')")
     @PostMapping(value = "/batchClassStartDateAdjust")

+ 10 - 3
mec-web/src/main/java/com/ym/mec/web/controller/SubjectController.java

@@ -94,10 +94,17 @@ public class SubjectController extends BaseController {
         return succeed(subjectService.findSubApplyDetail(musicGroupId));
     }
 
-    @ApiOperation(value = "获取子集科目列表")
+    @ApiOperation(value = "获取子集科目列表按父Id")
     @GetMapping("/findSubSubjects")
     @PreAuthorize("@pcs.hasPermissions('subject/findSubSubjects')")
-    public Object findSubSubjects(Integer tenantId){
-        return succeed(subjectService.findSubSubjects(tenantId));
+    public Object findSubSubjects(Integer parentSubjectId){
+        return succeed(subjectService.findSubSubjects(parentSubjectId));
+    }
+
+    @ApiOperation(value = "搜索按Id和名称")
+    @GetMapping("/search")
+    // @PreAuthorize("@pcs.hasPermissions('subject/search')")
+    public Object search(Integer parentSubjectId, String search){
+        return succeed(subjectService.search(parentSubjectId, search));
     }
 }

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java

@@ -138,7 +138,7 @@ public class EduRepairController extends BaseController {
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
-        return succeed(subjectService.findSubSubjects(1));
+        return succeed(subjectService.findSubSubjects( null));
     }
 
     @ApiOperation("获取学生信息")

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/education/EduSubjectController.java

@@ -25,7 +25,7 @@ public class EduSubjectController extends BaseController {
     @ApiOperation(value = "获取子集科目列表")
     @GetMapping("/findSubSubjects")
     public Object findSubSubjects(Integer tenantId){
-        return succeed(subjectService.findSubSubjects(tenantId));
+        return succeed(subjectService.findSubSubjects(null));
     }
 
     @ApiOperation(value = "根据科目编号查询科目")