Explorar el Código

Merge remote-tracking branch 'origin/yonge' into yonge

# Conflicts:
#	mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
Joe hace 5 años
padre
commit
dc0cf27632
Se han modificado 46 ficheros con 843 adiciones y 365 borrados
  1. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java
  2. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherMapperDao.java
  3. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  4. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassGroupDto.java
  5. 24 13
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroup.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  7. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherDefaultMusicGroupSalary.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ClassGroupStudentStatusEnum.java
  9. 2 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ClassGroupTypeEnum.java
  10. 75 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ClassGroupQueryInfo.java
  11. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  12. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  13. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java
  14. 174 80
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  15. 55 29
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java
  17. 82 78
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  18. 4 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  19. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java
  20. 9 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  21. 42 15
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultMusicGroupSalaryServiceImpl.java
  22. 43 8
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  23. 4 3
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  24. 8 4
      mec-biz/src/main/resources/config/mybatis/TeacherDefaultMusicGroupSalaryMapper.xml
  25. 12 4
      mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java
  26. 7 6
      mec-client-api/src/main/java/com/ym/mec/im/fallback/ImFeignServiceFallback.java
  27. 10 10
      mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java
  28. 5 7
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/HttpResponseResult.java
  29. 0 3
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImBaseMessage.java
  30. 52 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupMessage.java
  31. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImPlayMidiMessage.java
  32. 9 10
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImPrivateMessage.java
  33. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImTxtMessage.java
  34. 4 4
      mec-gateway/mec-gateway-web/src/main/java/com/ym/mec/gateway/web/filter/AuthFilter.java
  35. 16 3
      mec-im/src/main/java/com/ym/controller/PrivateController.java
  36. 24 2
      mec-im/src/main/java/com/ym/controller/RoomController.java
  37. 43 0
      mec-im/src/main/java/com/ym/pojo/CustomMessage.java
  38. 37 0
      mec-im/src/main/java/com/ym/pojo/PlayMidiMessageData.java
  39. 4 1
      mec-im/src/main/java/com/ym/service/Impl/MessageServiceImpl.java
  40. 2 14
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  41. 1 3
      mec-im/src/main/java/com/ym/service/RoomService.java
  42. 15 11
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java
  43. 6 1
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/YimeiSmsPlugin.java
  44. 1 1
      mec-util/src/main/java/com/ym/mec/util/idcard/IdcardInfoExtractor.java
  45. 36 15
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  46. 2 4
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

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

@@ -95,7 +95,7 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
      * @author Joburgess
      * @date 2019/10/18
      */
-    String[] findStudentNumByClassGroupId(@Param("classGroupId") Long classGroupId);
+    String[] findStudentNumByClassGroupId(@Param("classGroupId") Integer classGroupId);
 
     /**
      * @describe 获取课程上的学员名称集合

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

@@ -44,7 +44,7 @@ public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeac
      * @Date: 2019/10/18
      * @describe 根据班级编号和教师类型获取老师信息
      */
-    ClassGroupTeacherMapper findByClassGroupAndRole(@Param("classGroupId") Long classGroupId,
+    ClassGroupTeacherMapper findByClassGroupAndRole(@Param("classGroupId") Integer classGroupId,
                                                     @Param("teacherRole") TeachTypeEnum teacherRole);
 
     /**
@@ -83,7 +83,7 @@ public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeac
      * @param classGroupId
      * @return
      */
-    String queryTeachingNames(Long classGroupId);
+    String queryTeachingNames(Integer classGroupId);
 
     /**
      * @param classGroupIds: 班级编号列表

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

@@ -631,12 +631,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                                                                           @Param("endTime") Date endTime);
 
     /**
-     * 查询班级未开始的课程
+     * 查询班级上指定状态的课程
      *
      * @param classGroupId
+     * @param status
      * @return
      */
-    List<CourseSchedule> findNoStartCoursesByClassGroupId(@Param("classGroupId") Integer classGroupId);
+    List<CourseSchedule> findCoursesByClassGroupId(@Param("classGroupId") Integer classGroupId,@Param("status") CourseStatusEnum status);
 
     /**
      * @param courseScheduleId: 课程编号

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassGroupDto.java

@@ -13,7 +13,7 @@ import java.util.Date;
 public class TeacherClassGroupDto {
 
     @ApiModelProperty(value = "班级编号")
-    private Long classGroupId;
+    private Integer classGroupId;
 
     @ApiModelProperty(value = "班级名称")
     private String classGroupName;
@@ -197,11 +197,11 @@ public class TeacherClassGroupDto {
         this.subjectIdList = subjectIdList;
     }
 
-    public Long getClassGroupId() {
+    public Integer getClassGroupId() {
         return classGroupId;
     }
 
-    public void setClassGroupId(Long classGroupId) {
+    public void setClassGroupId(Integer classGroupId) {
         this.classGroupId = classGroupId;
     }
 

+ 24 - 13
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroup.java

@@ -1,5 +1,8 @@
 package com.ym.mec.biz.dal.entity;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import io.swagger.annotations.ApiModelProperty;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -23,10 +26,6 @@ public class ClassGroup {
 	private String musicGroupId;
 
 	/**  */
-	@ApiModelProperty(value = "上课模式", required = true)
-	private String teachMode = "OFFLINE";
-
-	/**  */
 	@ApiModelProperty(value = "科目编号(多个,号分割)", required = true)
 	private String subjectIdList;
 
@@ -57,7 +56,7 @@ public class ClassGroup {
 	private String classNames;
 
 	/** 预计招生人数 */
-	@ApiModelProperty(value = "预计招生人数",hidden = true)
+	@ApiModelProperty(value = "预计招生人数", required = true)
 	private Integer expectStudentNum;
 
 	/** 学生数 */
@@ -86,6 +85,10 @@ public class ClassGroup {
 	
 	@ApiModelProperty(value = "班级图标",required = false)
 	private String img;
+	
+	private List<ClassGroupTeacherMapper> teacherMapperList = new ArrayList<ClassGroupTeacherMapper>();
+	
+	private List<CourseSchedule> courseScheduleList = new ArrayList<CourseSchedule>();
 
 	public String getViewGroupName() {
 		return viewGroupName;
@@ -111,14 +114,6 @@ public class ClassGroup {
 		this.groupName = groupName;
 	}
 
-	public String getTeachMode() {
-		return teachMode;
-	}
-
-	public void setTeachMode(String teachMode) {
-		this.teachMode = teachMode;
-	}
-
 	public Integer getCurrentClassTimes() {
 		return currentClassTimes;
 	}
@@ -255,6 +250,22 @@ public class ClassGroup {
 		this.img = img;
 	}
 
+	public List<ClassGroupTeacherMapper> getTeacherMapperList() {
+		return teacherMapperList;
+	}
+
+	public void setTeacherMapperList(List<ClassGroupTeacherMapper> teacherMapperList) {
+		this.teacherMapperList = teacherMapperList;
+	}
+
+	public List<CourseSchedule> getCourseScheduleList() {
+		return courseScheduleList;
+	}
+
+	public void setCourseScheduleList(List<CourseSchedule> courseScheduleList) {
+		this.courseScheduleList = courseScheduleList;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -31,7 +31,7 @@ public class CourseSchedule {
 
 		SINGLE("SINGLE", "单技课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), COMPREHENSIVE("COMPREHENSIVE", "综合课"), PRACTICE(
 				"PRACTICE", "网管课"), ENLIGHTENMENT("ENLIGHTENMENT", "启蒙课"), TRAINING_SINGLE("TRAINING_SINGLE", "集训单技课"), TRAINING_MIX("TRAINING_MIX", "集训合奏课"), CLASSROOM(
-				"CLASSROOM", "课堂课"),COMM("COMM","对外课程"),TRIAL("TRIAL","试听课");
+				"CLASSROOM", "课堂课"),COMM("COMM","对外课程"),HIGH_ONLINE("HIGH_ONLINE","线上小班课");
 
 		private String code;
 

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherDefaultMusicGroupSalary.java

@@ -38,6 +38,9 @@ public class TeacherDefaultMusicGroupSalary {
 	/** 助教薪酬 */
 	@ApiModelProperty(value = "助教30分钟课酬",required = false)
 	private BigDecimal assistantTeacher30MinSalary;
+	
+	@ApiModelProperty(value = "课酬规则",required = false)
+	private String salaryRuleJson;
 
 	/**  */
 	private java.util.Date createTime;
@@ -101,6 +104,14 @@ public class TeacherDefaultMusicGroupSalary {
 		this.assistantTeacher30MinSalary = assistantTeacher30MinSalary;
 	}
 
+	public String getSalaryRuleJson() {
+		return salaryRuleJson;
+	}
+
+	public void setSalaryRuleJson(String salaryRuleJson) {
+		this.salaryRuleJson = salaryRuleJson;
+	}
+
 	public Date getCreateTime() {
 		return createTime;
 	}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ClassGroupStudentStatusEnum.java

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum ClassGroupStudentStatusEnum implements BaseEnum<String, ClassGroupStudentStatusEnum> {
-    NORMAL("NORMAL", "在读"), LEAVE("LEAVE", "请假"), QUIT("QUIT", "退班"), QUIT_SCHOOL("QUIT_SCHOOL","休学");
+    NORMAL("NORMAL", "在读"), QUIT("QUIT", "退班"), QUIT_SCHOOL("QUIT_SCHOOL","休学");
 
     private String code;
 

+ 2 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ClassGroupTypeEnum.java

@@ -6,14 +6,8 @@ import com.ym.mec.common.enums.BaseEnum;
  * 班级类型
  */
 public enum ClassGroupTypeEnum implements BaseEnum<String, ClassGroupTypeEnum> {
-	NORMAL("NORMAL", "普通班级"),
-	MIX("MIX", "合奏班级"),
-	HIGH("HIGH", "提高班"),
-	VIP("VIP", "vip课"),
-	DEMO("DEMO", "试听课"),
-	PRACTICE("PRACTICE", "网管课"),
-	SNAP("SNAP", "临时班级"),
-	COMM("COMM","对外课程");
+	NORMAL("NORMAL", "普通班级"), MIX("MIX", "合奏班级"), HIGH("HIGH", "提高班"), VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), PRACTICE("PRACTICE", "网管课"), SNAP("SNAP",
+			"临时班级"), COMM("COMM", "对外课程"), HIGH_ONLINE("HIGH_ONLINE", "线上小班课");
 
 	private String code;
 

+ 75 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ClassGroupQueryInfo.java

@@ -0,0 +1,75 @@
+package com.ym.mec.biz.dal.page;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.common.page.QueryInfo;
+
+public class ClassGroupQueryInfo extends QueryInfo {
+	
+	@ApiModelProperty(value = "班级编号", required = false)
+	private Integer id;
+
+	@ApiModelProperty(value = "课程组编号", required = false)
+    private String musicGroupId;
+    
+	@ApiModelProperty(value = "班级类型(普通班级、合奏班级、提高课班级、VIP班级、试听课)", required = false)
+    private ClassGroupTypeEnum type;
+    
+	@ApiModelProperty(value = "课程组类型(MUSIC、VIP、DEMO、PRACTICE、COMM、REPAIR)", required = true)
+    private GroupType groupType;
+    
+    @ApiModelProperty(value = "班级名称", required = false)
+    private String name;
+    
+    private Integer delFlag;
+
+	public Integer getId() {
+		return id;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+
+	public ClassGroupTypeEnum getType() {
+		return type;
+	}
+
+	public void setType(ClassGroupTypeEnum type) {
+		this.type = type;
+	}
+
+	public GroupType getGroupType() {
+		return groupType;
+	}
+
+	public void setGroupType(GroupType groupType) {
+		this.groupType = groupType;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Integer getDelFlag() {
+		return delFlag;
+	}
+
+	public void setDelFlag(Integer delFlag) {
+		this.delFlag = delFlag;
+	}
+}

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -16,6 +16,10 @@ import java.util.List;
 import java.util.Map;
 
 public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
+	
+	public PageInfo<ClassGroup> queryPage(ClassGroupQueryInfo queryInfo);
+	
+	boolean create(ClassGroup classGroup);
 
     /**
      * 查询老师乐团课课程
@@ -225,7 +229,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return com.ym.mec.biz.dal.dto.TeacherClassHeadInfo
      * @describe 获取班级信息
      */
-    TeacherClassHeadInfo findTeacherClassGroupInfo(Long classGroupId);
+    TeacherClassHeadInfo findTeacherClassGroupInfo(Integer classGroupId);
 
     /**
      * @describe 获取班级对应学生列表

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -185,6 +185,8 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     String EDU_TEACHER_BASE_URL = "edu_teacher_base_url";
 
+    String HOLIDAY_SETTING = "holiday_setting";
+
     /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @params paramName

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -39,10 +39,10 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	/**
 	 * 推送im自定义节拍器消息
 	 * @param senderId
-	 * @param targetIds
+	 * @param roomId
 	 * @param content
 	 */
-	void batchSendImPlayMidiMessage(String senderId,String[] targetIds, String content);
+	void batchSendImPlayMidiMessage(String senderId,String roomId, String content);
 
 	/**
 	 * 批量发送消息

+ 174 - 80
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -24,6 +25,7 @@ import com.ym.mec.jiari.JiaRiFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateConvertor;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -124,6 +126,98 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
+	public PageInfo<ClassGroup> queryPage(ClassGroupQueryInfo queryInfo) {
+    	PageInfo<ClassGroup> pageInfo = new PageInfo<ClassGroup>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+		
+		List<ClassGroup> dataList = new ArrayList<ClassGroup>();
+		int count = this.findCount(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = this.getDAO().queryPage(params);
+		}
+		for (ClassGroup cg : dataList) {
+			cg.setTeacherMapperList(classGroupTeacherMapperDao.findClassGroupTeachers(cg.getId() + ""));
+			cg.setCourseScheduleList(courseScheduleDao.findCoursesByClassGroupId(cg.getId(), null));
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean create(ClassGroup classGroup) {
+		
+		if(classGroup.getType() == null){
+			throw new BizException("班级类型不能为空");
+		}
+		if(classGroup.getGroupType() == null){
+			throw new BizException("课程组类型不能为空");
+		}
+        String userIds = classGroup.getUserIds();
+
+        Set<String> userIdStrSet = new HashSet<String>();
+        
+        if(StringUtils.isNotBlank(userIds)){
+        	userIdStrSet = new HashSet<>(Arrays.asList(userIds.split(",")));
+        }
+
+        Date date = new Date();
+        classGroup.setCreateTime(date);
+        classGroup.setUpdateTime(date);
+        classGroup.setStudentNum(userIdStrSet.size());
+        //创建班级
+        insert(classGroup);
+        
+        //设置班级上的老师
+        List<ClassGroupTeacherMapper> teacherMapperList = classGroup.getTeacherMapperList();
+        for(ClassGroupTeacherMapper tm : teacherMapperList){
+        	tm.setClassGroupId(classGroup.getId());
+        	tm.setMusicGroupId(classGroup.getMusicGroupId());
+        	tm.setGroupType(classGroup.getGroupType());
+        	tm.setCreateTime(date);
+        	tm.setUpdateTime(date);
+        }
+        
+        if(teacherMapperList.size() > 0){
+        	classGroupTeacherMapperDao.classGroupTeachersInsert(teacherMapperList);
+        }
+
+        //2、插入班级学生关联关系
+		List<Integer> userIdList = new ArrayList<>();
+		List<ClassGroupStudentMapper> classGroupStudentList = new ArrayList<>();
+		for (String userId : userIdStrSet) {
+			ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+			classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
+			classGroupStudentMapper.setClassGroupId(classGroup.getId());
+			classGroupStudentMapper.setUserId(Integer.parseInt(userId));
+			classGroupStudentMapper.setCreateTime(date);
+			classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+			classGroupStudentMapper.setGroupType(GroupType.MUSIC);
+			classGroupStudentList.add(classGroupStudentMapper);
+
+			StudentRegistration studentRegistration = new StudentRegistration();
+			studentRegistration.setClassGroupId(classGroup.getId());
+			studentRegistration.setUserId(Integer.parseInt(userId));
+			studentRegistration.setMusicGroupId(classGroup.getMusicGroupId());
+			studentRegistrationDao.updateByUserIdAndMusicGroupId(studentRegistration);
+
+			userIdList.add(Integer.parseInt(userId));
+		}
+		if (classGroupStudentList.size() > 0) {
+			classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentList);
+		}
+
+		// 加入IM群组
+		if (userIdList.size() > 0) {
+			addImGroup(classGroup, userIdList);
+		}
+        return true;
+    }
+
+	@Override
     public List<ClassGroup> findClassGroup4Teacher(Integer teacherId) {
         return classGroupDao.findClassGroup4Teacher(teacherId);
     }
@@ -358,19 +452,17 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
 				String courseScheduleName = subjectList.stream().map(subject -> subject.getName()).collect(Collectors.joining("/"));
 
-				Map<String, Integer> holidayDays = new HashMap<>();
-				Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
+                Set<String> holidayDays = new HashSet<>();
+
 				if (highClassGroup.getHoliday()) {
-					holiday = jiaRiFeignService.query(now.getYear());
-					holidayDays = holiday.get(now.getYear());
+                    SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+                    if(Objects.nonNull(holidaySetting)&&StringUtils.isNotBlank(holidaySetting.getParanValue())){
+                        holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
+                    }
 				}
 
 				WhileNode: while (highClassGroup.getCourseTimes() > times) {
-					if (highClassGroup.getHoliday() && !holiday.containsKey(now.getYear())) {
-						holiday = jiaRiFeignService.query(now.getYear());
-						holidayDays = holiday.get(now.getYear());
-					}
-					if (highClassGroup.getHoliday() && holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MMdd")))) {
+					if (highClassGroup.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
 						now = now.plusDays(1);
 						continue;
 					}
@@ -1109,7 +1201,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public TeacherClassHeadInfo findTeacherClassGroupInfo(Long classGroupId) {
+    public TeacherClassHeadInfo findTeacherClassGroupInfo(Integer classGroupId) {
         if (Objects.isNull(classGroupId)) {
             throw new BizException("请指定班级");
         }
@@ -1346,21 +1438,19 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         BigDecimal expectPrice = new BigDecimal("0");
         int times = 0;
 
-        Map<String, Integer> holidayDays = new HashMap<>();
-        Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
+        Set<String> holidayDays = new HashSet<>();
+
         if (classGroup4MixDto.getHoliday()) {
-            holiday = jiaRiFeignService.query(now.getYear());
-            holidayDays = holiday.get(now.getYear());
+            SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+            if(Objects.nonNull(holidaySetting)&&StringUtils.isNotBlank(holidaySetting.getParanValue())){
+                holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
+            }
         }
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         WhileNode:
         while (true) {
-            if(classGroup4MixDto.getHoliday() && !holiday.containsKey(now.getYear())){
-                holiday = jiaRiFeignService.query(now.getYear());
-                holidayDays = holiday.get(now.getYear());
-            }
-            if (classGroup4MixDto.getHoliday() && holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MMdd")))) {
+            if (classGroup4MixDto.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
                 now = now.plusDays(1);
                 continue;
             }
@@ -1446,22 +1536,25 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                     }
 
+                    salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
+
+
                     //课堂课课酬
-                    if (musicGroup.isClassroomLessons()) {
-                        //课程时长与结算单位时长占比
-                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                    if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)) {
+                        salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                     }
                     //基础技能提高课
                     if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
-                        //课程时长与结算单位时长占比
-                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                        salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                         if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
-                            baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
+                            salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                         }
                     }
-                    salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    //线上小班课
+                    if(classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)){
+                        Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupTeacherMapper.getClassGroupId());
+                        salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+                    }
 
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                     courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
@@ -1637,21 +1730,18 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
 
         int times = 0;
-        Map<String, Integer> holidayDays = new HashMap<>();
-        Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
+        Set<String> holidayDays = new HashSet<>();
         if (classGroup4MixDto.getHoliday()) {
-            holiday = jiaRiFeignService.query(now.getYear());
-            holidayDays = holiday.get(now.getYear());
+            SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+            if(Objects.nonNull(holidaySetting)&&StringUtils.isNotBlank(holidaySetting.getParanValue())){
+                holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
+            }
         }
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         WhileNode:
         while (true) {
-            if(classGroup4MixDto.getHoliday() && !holiday.containsKey(now.getYear())){
-                holiday = jiaRiFeignService.query(now.getYear());
-                holidayDays = holiday.get(now.getYear());
-            }
-            if (classGroup4MixDto.getHoliday() && holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MMdd")))) {
+            if (classGroup4MixDto.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
                 now = now.plusDays(1);
                 continue;
             }
@@ -1727,21 +1817,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                     }
-                    //课堂课课酬
-                    if (musicGroup.isClassroomLessons()) {
-                        //课程时长与结算单位时长占比
-                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-                    }
-                    //基础技能提高课
-                    if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
-                        //课程时长与结算单位时长占比
-                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-                        if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
-                            baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
-                        }
-                    }
+
                     salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
 
                     for (CourseScheduleTeacherSalary teacherSalary : allTeacherSalarys) {
@@ -1753,6 +1829,23 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         }
                     }
 
+                    //课堂课课酬
+                    if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)) {
+                        salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                    }
+                    //基础技能提高课
+                    if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
+                        salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                        if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                            salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
+                        }
+                    }
+                    //线上小班课
+                    if(classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)){
+                        Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupTeacherMapper.getClassGroupId());
+                        salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+                    }
+
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                     courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
                     courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
@@ -1904,21 +1997,18 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         BigDecimal expectPrice = new BigDecimal("0");
         int times = 0;
-        Map<String, Integer> holidayDays = new HashMap<>();
-        Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
+        Set<String> holidayDays = new HashSet<>();
         if (classGroup4MixDto.getHoliday()) {
-            holiday = jiaRiFeignService.query(now.getYear());
-            holidayDays = holiday.get(now.getYear());
+            SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+            if(Objects.nonNull(holidaySetting)&&StringUtils.isNotBlank(holidaySetting.getParanValue())){
+                holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
+            }
         }
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         WhileNode:
         while (true) {
-            if(classGroup4MixDto.getHoliday() && !holiday.containsKey(now.getYear())){
-                holiday = jiaRiFeignService.query(now.getYear());
-                holidayDays = holiday.get(now.getYear());
-            }
-            if (classGroup4MixDto.getHoliday() && holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MMdd")))) {
+            if (classGroup4MixDto.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
                 now = now.plusDays(1);
                 continue;
             }
@@ -1998,23 +2088,25 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                     }
+
+                    salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
+
                     //课堂课课酬
-                    if (musicGroup.isClassroomLessons()) {
-                        //课程时长与结算单位时长占比
-                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                    if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)) {
+                        salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                     }
                     //基础技能提高课
                     if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
-                        //课程时长与结算单位时长占比
-                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                        salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                         if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
-                            baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
+                            salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                         }
                     }
-
-                    salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    //线上小班课
+                    if(classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)){
+                        Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupTeacherMapper.getClassGroupId());
+                        salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+                    }
 
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                     courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
@@ -2268,18 +2360,20 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             List<String> subjects = subjectService.findBySubIds(highClassGroup.getSubjectIdList());
             highClassGroup.setSubjectName(subjects.stream().collect(Collectors.joining(",")));
 
-            ClassGroupTeacherMapper bishopTeacher = classGroupTeacherMapperDao.findByClassGroupAndRole(highClassGroup.getId().longValue(), TeachTypeEnum.BISHOP);
+            ClassGroupTeacherMapper bishopTeacher = classGroupTeacherMapperDao.findByClassGroupAndRole(highClassGroup.getId(), TeachTypeEnum.BISHOP);
             highClassGroup.setTeacherName(bishopTeacher.getUserName());
             highClassGroup.setUserId(bishopTeacher.getUserId());
             CourseSchedule courseSchedule = courseScheduleDao.findOneCourseScheduleByClassGroupId(highClassGroup.getId());
-            highClassGroup.setStartClassTime(DateUtil.format(courseSchedule.getStartClassTime(), "HH:mm"));
-            highClassGroup.setEndClassTime(DateUtil.format(courseSchedule.getEndClassTime(), "HH:mm"));
-
-            Calendar calendar = Calendar.getInstance();
-            calendar.setTime(courseSchedule.getClassDate());
-            Integer dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
-            dayOfWeek = dayOfWeek.equals(0) ? 7 : dayOfWeek;
-            highClassGroup.setDayOfWeek(dayOfWeek);
+			if (courseSchedule != null) {
+				highClassGroup.setStartClassTime(DateUtil.format(courseSchedule.getStartClassTime(), "HH:mm"));
+				highClassGroup.setEndClassTime(DateUtil.format(courseSchedule.getEndClassTime(), "HH:mm"));
+
+				Calendar calendar = Calendar.getInstance();
+				calendar.setTime(courseSchedule.getClassDate());
+				Integer dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
+				dayOfWeek = dayOfWeek.equals(0) ? 7 : dayOfWeek;
+				highClassGroup.setDayOfWeek(dayOfWeek);
+			}
         }
         return highClassGroupList;
     }

+ 55 - 29
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.ClassGroupTeachersDto;
 import com.ym.mec.biz.dal.entity.*;
@@ -54,6 +55,8 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     private CourseScheduleDao courseScheduleDao;
     @Autowired
     private TeacherDao teacherDao;
+    @Autowired
+    private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 
     @Override
     public BaseDAO<Long, ClassGroupTeacherMapper> getDAO() {
@@ -230,23 +233,25 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                     classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                 }
+
+                salary = baseSalary.multiply(classTimeDuty).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+
                 //课堂课课酬
                 if (musicGroup.isClassroomLessons()) {
-                    //课程时长与结算单位时长占比
-                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(40), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                    baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                    salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                 }
                 //基础技能提高课
                 if (classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
-                    //课程时长与结算单位时长占比
-                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                    baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                    salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                     if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
-                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
+                        salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                     }
                 }
-
-                salary = baseSalary.multiply(classTimeDuty).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+                //线上小班课
+                if(classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)){
+                    Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupTeacherMapper.getClassGroupId());
+                    salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+                }
 
                 //课程与老师薪水表
                 CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
@@ -326,22 +331,6 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                     classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                 }
-                //课堂课课酬
-                if (musicGroup.isClassroomLessons()) {
-                    //课程时长与结算单位时长占比
-                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(40), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                    baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-                }
-                //基础技能提高课
-                if (classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
-                    //课程时长与结算单位时长占比
-                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                    baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
-                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
-                    }
-                }
-
                 salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
 
                 for (CourseScheduleTeacherSalary teacherSalary : allTeacherSalarys) {
@@ -353,6 +342,23 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                     }
                 }
 
+                //课堂课课酬
+                if (musicGroup.isClassroomLessons()) {
+                    salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                }
+                //基础技能提高课
+                if (classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
+                    salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                    if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                        salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
+                    }
+                }
+                //线上小班课
+                if(classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)){
+                    Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupTeacherMapper.getClassGroupId());
+                    salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+                }
+
                 //课程与老师薪水表
                 CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                 courseScheduleTeacherSalary.setCourseScheduleId(classGroupNoStartCourseSchedule.getId());
@@ -418,7 +424,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         List<Map<String, String>> musicGroupSettlementTypeByCourse = courseScheduleTeacherSalaryDao.findMusicGroupSettlementTypeByCourse(courseScheduleIds);
         Map<String, String> musicGroupSettlementsMap = MapUtil.convertMybatisMap(musicGroupSettlementTypeByCourse);
 
-        courseSchedules.forEach(courseSchedule -> {
+        for (CourseSchedule courseSchedule : courseSchedules) {
             if (Objects.isNull(courseSchedule.getType())) {
                 courseSchedule.setType(oldCourseSchedules.get(courseSchedule.getId()).getType());
             }
@@ -480,7 +486,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                         teacherId,
                         teacherDefaultMusicGroupSalaryWithTeacherId));
             }
-        });
+        }
         if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaryList)){
             courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
         }
@@ -513,6 +519,8 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         //课时长度
         int duration = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
 
+        BigDecimal teacherDefaultSalary=BigDecimal.ZERO;
+
         //如果结算方式是教师默认课酬
         if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT.getCode())) {
             BigDecimal baseTime = new BigDecimal(30);
@@ -524,10 +532,10 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
             }
             //课程时长与结算单位时长占比
             BigDecimal classTimeDuty = new BigDecimal(duration).divide(baseTime, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-            BigDecimal teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
+            teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
             teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
         } else if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY.getCode())) {
-            BigDecimal teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
+            teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
             BigDecimal baseTime = new BigDecimal(90);
             if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
                 baseTime = new BigDecimal(45);
@@ -540,6 +548,24 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
             BigDecimal classTimeDuty = new BigDecimal(duration).divide(baseTime, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
             teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
         }
+
+        //课堂课课酬
+        if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)) {
+            teacherSalary = teachType.equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
+        }
+        //基础技能提高课
+        if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
+            teacherSalary = teachType.equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
+            if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                teacherSalary = teachType.equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
+            }
+        }
+        //线上小班课
+        if(courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)){
+            Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(courseSchedule.getClassGroupId());
+            teacherSalary = JSON.parseObject(teacherDefaultMusicGroupSalaryWithTeacherId.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+        }
+
         CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary(
                 courseSchedule.getId(),
                 teachType,

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

@@ -296,7 +296,7 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
     public TeacherClassHeadInfo getCourseInfoHead(Integer id) {
         CourseSchedule courseSchedule = courseScheduleDao.get(id.longValue());
         ClassGroup classGroup = classGroupService.get(courseSchedule.getClassGroupId());
-        TeacherClassHeadInfo teacherClassGroupInfo = classGroupService.findTeacherClassGroupInfo(courseSchedule.getClassGroupId().longValue());
+        TeacherClassHeadInfo teacherClassGroupInfo = classGroupService.findTeacherClassGroupInfo(courseSchedule.getClassGroupId());
         teacherClassGroupInfo.setClassDate(DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy年MM月dd日"));
         teacherClassGroupInfo.setStartClassTime(DateUtil.dateToString(courseSchedule.getStartClassTime(), "HH:mm"));
         teacherClassGroupInfo.setEndClassTime(DateUtil.dateToString(courseSchedule.getEndClassTime(), "HH:mm"));

+ 82 - 78
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -396,22 +396,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<CourseScheduleTeacherSalary>();
 		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
 		List<TeacherAttendance> teacherAttendances = new ArrayList<TeacherAttendance>();
-		Map<String, Integer> holidayDays = new HashMap<>();
+		Set<String> holidayDays = new HashSet<>();
 		if (isJumpHoliday) {
-			try {
-		        Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
-				holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
-				holidayDays = holiday.get(calendar.get(Calendar.YEAR));
-
-			} catch (Exception e) {
-				throw new BizException("获取节假日失败",e);
+			SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+			if(Objects.nonNull(holidaySetting)&&StringUtils.isNotBlank(holidaySetting.getParanValue())){
+				holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
 			}
 		}
 		calendar.setTime(startDate);
 
 		int currentCourseTimes = 0;
 		while (coursesTimes != currentCourseTimes) {
-            if (holidayDays.containsKey(DateUtil.format(calendar.getTime(), "MMdd"))) {
+            if (holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) {
                 calendar.add(Calendar.DATE, 1);
                 continue;
             }
@@ -534,11 +530,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 								}
 							}
 							if (StringUtils.equals(settlementType, "TEACHER_DEFAULT")) {
-								if (type == CourseScheduleType.CLASSROOM) {
-									unitMinutes = 40;
-								} else if (type == CourseScheduleType.HIGH) {
-									unitMinutes = 45;
-								}
 								if (courseScheduleTeacherSalary.getTeacherRole() == TeachTypeEnum.BISHOP) {
 									courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(tdms.getMainTeacher30MinSalary().doubleValue() * newMinutes
 											/ unitMinutes));
@@ -561,6 +552,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 											/ unitMinutes));
 								}
 							}
+
+							//课堂课课酬
+							if (type == CourseScheduleType.CLASSROOM) {
+								BigDecimal salary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? tdms.getMainTeacher30MinSalary() : tdms.getAssistantTeacher30MinSalary();
+								courseScheduleTeacherSalary.setExpectSalary(salary);
+							}
+							//基础技能提高课
+							if (type == CourseScheduleType.HIGH) {
+								BigDecimal salary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? tdms.getMainTeacher30MinSalary() : tdms.getAssistantTeacher30MinSalary();
+								if (StringUtils.equals(settlementType, "GRADIENT_SALARY")) {
+									salary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? tdms.getMainTeacher90MinSalary() : tdms.getAssistantTeacher90MinSalary();
+								}
+								courseScheduleTeacherSalary.setExpectSalary(salary);
+							}
+							//线上小班课
+							if(type == CourseScheduleType.HIGH_ONLINE){
+								Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroup.getId());
+								BigDecimal salary = JSON.parseObject(tdms.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+								courseScheduleTeacherSalary.setExpectSalary(salary);
+							}
 						}
 						courseScheduleTeacherSalary.setCreateTime(now);
 						courseScheduleTeacherSalary.setUpdateTime(now);
@@ -1956,25 +1967,17 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         calendar.setTime(courseCreateStartTime);
         List<Date> courseStartDates = new ArrayList<>();
 
-        Map<String, Integer> holidayDays = new HashMap<>();
-        Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
+		Set<String> holidayDays = new HashSet<>();
 
-        try {
-            if (vipGroupCourseAdjustInfo.isHoliday()) {
-                holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
-                holidayDays = holiday.get(calendar.get(Calendar.YEAR));
-            }
-        } catch (DecodeException e) {
-            LOGGER.error("节假日解析错误");
-            vipGroupCourseAdjustInfo.setHoliday(false);
-        }
+		if (vipGroupCourseAdjustInfo.isHoliday()) {
+			SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+			if(StringUtils.isNotBlank(holidaySetting.getParanValue())){
+				holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
+			}
+		}
 
         while (true) {
-            if (vipGroupCourseAdjustInfo.isHoliday() && !holiday.containsKey(calendar.get(Calendar.YEAR))) {
-                holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
-                holidayDays = holiday.get(calendar.get(Calendar.YEAR));
-            }
-            if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.containsKey(DateUtil.format(calendar.getTime(), "MMdd"))) {
+            if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) {
                 calendar.add(Calendar.DATE, 1);
                 continue;
             }
@@ -2118,8 +2121,14 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(coursePostPoneInfo.getRecoveryDate());
 
-        Map<String, Integer> holidayDays = new HashMap<>();
-        Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
+		Set<String> holidayDays = new HashSet<>();
+
+		if (coursePostPoneInfo.isSkipHoliday()) {
+			SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+			if(Objects.nonNull(holidaySetting)&&StringUtils.isNotBlank(holidaySetting.getParanValue())){
+				holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
+			}
+		}
 
         classGroupCourseSchedulesWithDate.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
 
@@ -2136,17 +2145,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
             calendar.setTime(courseSchedule.getClassDate());
             calendar.add(Calendar.DATE, betweenDays);
-            try {
-                if (coursePostPoneInfo.isSkipHoliday() && !holiday.containsKey(calendar.get(Calendar.YEAR))) {
-                    holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
-                    holidayDays = holiday.get(calendar.get(Calendar.YEAR));
-                }
-            } catch (Exception e) {
-                LOGGER.error("节假日解析错误");
-                coursePostPoneInfo.setSkipHoliday(false);
-            }
 
-            if (coursePostPoneInfo.isSkipHoliday() && holidayDays.containsKey(DateUtil.format(calendar.getTime(), "MMdd"))) {
+            if (coursePostPoneInfo.isSkipHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) {
                 betweenDays=betweenDays+7;
                 calendar.add(Calendar.DATE, betweenDays);
                 i=i-1;
@@ -2204,27 +2204,19 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(courseCreateStartTime);
 
-        Map<String, Integer> holidayDays = new HashMap<>();
-        Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
+		Set<String> holidayDays = new HashSet<>();
 
-        try {
-            if (vipGroupCourseAdjustInfo.isHoliday()) {
-                holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
-                holidayDays = holiday.get(calendar.get(Calendar.YEAR));
-            }
-        } catch (DecodeException e) {
-            LOGGER.error("节假日解析错误");
-            vipGroupCourseAdjustInfo.setHoliday(false);
-        }
+		if (vipGroupCourseAdjustInfo.isHoliday()) {
+			SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+			if(Objects.nonNull(holidaySetting)&&StringUtils.isNotBlank(holidaySetting.getParanValue())){
+				holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
+			}
+		}
 
         List<CourseSchedule> courseSchedules = new ArrayList<>();
 
         while (true) {
-            if (vipGroupCourseAdjustInfo.isHoliday() && !holiday.containsKey(calendar.get(Calendar.YEAR))) {
-                holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
-                holidayDays = holiday.get(calendar.get(Calendar.YEAR));
-            }
-            if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.containsKey(DateUtil.format(calendar.getTime(), "MMdd"))) {
+            if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) {
                 calendar.add(Calendar.DATE, 1);
                 continue;
             }
@@ -2643,6 +2635,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 							}
 						}
 
+						//课堂课课酬
+						if (newCourseSchedule.getType() == CourseScheduleType.CLASSROOM) {
+							BigDecimal salary = ts.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? tdms.getMainTeacher30MinSalary() : tdms.getAssistantTeacher30MinSalary();
+							ts.setExpectSalary(salary);
+						}
+						//基础技能提高课
+						if (newCourseSchedule.getType() == CourseScheduleType.HIGH) {
+							BigDecimal salary = ts.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? tdms.getMainTeacher30MinSalary() : tdms.getAssistantTeacher30MinSalary();
+							if (StringUtils.equals(settlementType, "GRADIENT_SALARY")) {
+								salary = ts.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? tdms.getMainTeacher90MinSalary() : tdms.getAssistantTeacher90MinSalary();
+							}
+							ts.setExpectSalary(salary);
+						}
+						//线上小班课
+						if(newCourseSchedule.getType() == CourseScheduleType.HIGH_ONLINE){
+							Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(ts.getClassGroupId());
+							BigDecimal salary = JSON.parseObject(tdms.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+							ts.setExpectSalary(salary);
+						}
+
 					} else if (newCourseSchedule.getGroupType() == GroupType.VIP) {
 						/*Map<Integer, TeacherDefaultVipGroupSalary> map = vipGroupSalaryMap.get(teacherId);
 						if (map == null) {
@@ -3421,7 +3433,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
     @Override
     public List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer classGroupId) {
-        return courseScheduleDao.findNoStartCoursesByClassGroupId(classGroupId);
+        return courseScheduleDao.findCoursesByClassGroupId(classGroupId, CourseStatusEnum.NOT_START);
     }
 
 
@@ -3569,31 +3581,23 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(courseGenerateInfo.getCourseCreateStartTime());
 
-        Map<String, Integer> holidayDays = new HashMap<>();
-        Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
+        Set<String> holidayDays = new HashSet<>();
 
-        try {
-            if (courseGenerateInfo.isSkipHoliday()) {
-                holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
-                holidayDays = holiday.get(calendar.get(Calendar.YEAR));
-            }
-        } catch (DecodeException e) {
-            LOGGER.error("节假日解析错误");
-            courseGenerateInfo.setSkipHoliday(false);
-        }
+		if (courseGenerateInfo.isSkipHoliday()) {
+			SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+			if(Objects.nonNull(holidaySetting)&&StringUtils.isNotBlank(holidaySetting.getParanValue())){
+				holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
+			}
+		}
 
         List<CourseSchedule> courseSchedules = new ArrayList<>();
         Date now=new Date();
 
         while (true) {
-            if (courseGenerateInfo.isSkipHoliday() && !holiday.containsKey(calendar.get(Calendar.YEAR))) {
-                holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
-                holidayDays = holiday.get(calendar.get(Calendar.YEAR));
-            }
-            if (courseGenerateInfo.isSkipHoliday() && holidayDays.containsKey(DateUtil.format(calendar.getTime(), "MMdd"))) {
-                calendar.add(Calendar.DATE, 1);
-                continue;
-            }
+			if (courseGenerateInfo.isSkipHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) {
+				calendar.add(Calendar.DATE, 1);
+				continue;
+			}
             int i = calendar.get(Calendar.DAY_OF_WEEK);
             if (i == 1) {
                 i = 7;

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -86,6 +86,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
 
+    //按节数计算课酬的课程类型
+    protected static final Set<CourseSchedule.CourseScheduleType> UNIT_PRICE_COURSE_TYPES=new HashSet<>(Arrays.asList(CourseSchedule.CourseScheduleType.CLASSROOM, CourseSchedule.CourseScheduleType.HIGH, CourseSchedule.CourseScheduleType.HIGH_ONLINE));
+
     @Override
     public BaseDAO<Long, CourseScheduleTeacherSalary> getDAO() {
         return courseScheduleTeacherSalaryDao;
@@ -618,8 +621,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             //教师课酬
             BigDecimal teacherSalary = new BigDecimal(0);
 
-            if(durationIsChange){
-
+            if(durationIsChange&&!UNIT_PRICE_COURSE_TYPES.contains(courseSchedule.getType())){
                 //根据课程类型获取对应的默认课酬设置列表
                 List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithCourseType = teacherDefaultMusicGroupSalariesGroupByCourseType.get(courseSchedule.getType());
                 if (CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithCourseType)) {

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

@@ -139,7 +139,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         Date now=new Date();
         courseGroup.setSingleClassMinutes(courseCycleInfo.getSingleClassMinutes());
         courseGroup.setStatus(GroupStatusEnum.NORMAL);
-        courseGroup.setOrganId(teacher.getOrganId());
+        courseGroup.setOrganId(teacher.getTeacherOrganId());
         List<CourseSchedule> newCourses = courseScheduleService.createCourses(courseGroupCreateInfo.getCourseCycleInfo(),true);
         for (CourseSchedule newCourse : newCourses) {
             newCourse.setTeachMode(TeachModeEnum.ONLINE);

+ 9 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -12,6 +12,7 @@ import com.ym.mec.biz.dal.enums.SendStatusEnum;
 import com.ym.mec.biz.service.SysMessageConfigService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.ImGroupMessage;
 import com.ym.mec.common.entity.ImPlayMidiMessage;
 import com.ym.mec.common.entity.ImPrivateMessage;
 import com.ym.mec.common.entity.ImTxtMessage;
@@ -22,7 +23,6 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.string.MessageFormatter;
-
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -193,13 +193,14 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	@Override
-	public void batchSendImPlayMidiMessage(String senderId,String[] targetIds, String content) {
-		ImPrivateMessage privateMessage = new ImPrivateMessage();
-		privateMessage.setObjectName("DY:PlayMidiMessage");
-		privateMessage.setTargetId(targetIds);
-		privateMessage.setSenderId(senderId);
-		privateMessage.setContent(new ImPlayMidiMessage(content,null));
-		imFeignService.privateSend(privateMessage);
+	public void batchSendImPlayMidiMessage(String senderId,String roomId, String content) {
+		ImGroupMessage groupMessage = new ImGroupMessage();
+//		privateMessage.setObjectName("DY:PlayMidiMessage");
+		groupMessage.setTargetId(roomId.split(","));
+		groupMessage.setSenderId(senderId);
+		groupMessage.setContent(new ImPlayMidiMessage(content,null));
+		groupMessage.setType("DY:PlayMidiMessage");
+		imFeignService.privateSendCustom(groupMessage);
 	}
 
 	@Override
@@ -212,7 +213,6 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		privateMessage.setObjectName("RC:TxtMsg");
 		privateMessage.setTargetId(studentId.split(","));
 		privateMessage.setSenderId(sysUser.getId().toString());
-		privateMessage.setIsIncludeSender(1);
 		privateMessage.setContent(new ImTxtMessage(content,null));
 		imFeignService.privateSend(privateMessage);
 	}

+ 42 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultMusicGroupSalaryServiceImpl.java

@@ -15,6 +15,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
@@ -39,6 +42,9 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 
 	@Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+	
+	@Autowired
+	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 
 	@Autowired
 	private MusicGroupDao musicGroupDao;
@@ -84,6 +90,8 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 				}*/
 				salaryMap.put(ms.getCourseScheduleType(), ms);
 			}
+			
+			Map<Integer,Integer> classGroupStudentNumMap = new HashMap<Integer, Integer>();
 
 			if (salaryMap.size() > 0) {
 
@@ -115,33 +123,52 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 								BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(ts.getCourseSchedule().getStartClassTime(), ts.getCourseSchedule()
 										.getEndClassTime()));
 								int mins = 0;
-								if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.GRADIENT_SALARY) {// 3.0课酬
-									mins = 90;
-									if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM) {
-										mins = 40;
-									} else if (tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
-										mins = 45;
+								if(tdms.getCourseScheduleType() == CourseScheduleType.HIGH_ONLINE) {
+									if (!classGroupStudentNumMap.containsKey(ts.getClassGroupId())) {
+										// 查询 班级人数
+										String[] strs = classGroupStudentMapperDao.findStudentNumByClassGroupId(ts.getClassGroupId());
+										classGroupStudentNumMap.put(ts.getClassGroupId(), strs.length);
+									}
+									String salaryRuleJson = tdms.getSalaryRuleJson();
+									if (StringUtils.isNotBlank(salaryRuleJson)) {
+										JSONObject obj = JSON.parseObject(salaryRuleJson);
+										ts.setExpectSalary(new BigDecimal(obj.getDouble(classGroupStudentNumMap.get(ts.getClassGroupId()) + "")));
+										list.add(ts);
 									}
+									
+								} else if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.GRADIENT_SALARY) {// 3.0课酬
+									mins = 90;
 									// 判断是助教、主教
 									if (ts.getTeacherRole() == TeachTypeEnum.BISHOP) {
-										ts.setExpectSalary(duration.divide(new BigDecimal(mins), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getMainTeacher90MinSalary()));
+										if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM || tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
+											ts.setExpectSalary(tdms.getMainTeacher90MinSalary());
+										}else{
+											ts.setExpectSalary(duration.divide(new BigDecimal(mins), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getMainTeacher90MinSalary()));
+										}
 									} else {
-										ts.setExpectSalary(duration.divide(new BigDecimal(mins), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getAssistantTeacher90MinSalary()));
+										if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM || tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
+											ts.setExpectSalary(tdms.getAssistantTeacher90MinSalary());
+										}else{
+											ts.setExpectSalary(duration.divide(new BigDecimal(mins), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getAssistantTeacher90MinSalary()));
+										}
 									}
 									list.add(ts);
 								} else if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.TEACHER_DEFAULT) {// 默认课酬
 									mins = 30;
-									if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM) {
-										mins = 40;
-									} else if (tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
-										mins = 45;
-									}
 									BigDecimal minsDecimal = new BigDecimal(mins);
 									// 判断是助教、主教
 									if (ts.getTeacherRole() == TeachTypeEnum.BISHOP) {
-										ts.setExpectSalary(duration.divide(minsDecimal, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getMainTeacher30MinSalary()));
+										if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM || tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
+											ts.setExpectSalary(tdms.getMainTeacher30MinSalary());
+										}else{
+											ts.setExpectSalary(duration.divide(minsDecimal, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getMainTeacher30MinSalary()));
+										}
 									} else {
-										ts.setExpectSalary(duration.divide(minsDecimal, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getAssistantTeacher30MinSalary()));
+										if (tdms.getCourseScheduleType() == CourseScheduleType.CLASSROOM || tdms.getCourseScheduleType() == CourseScheduleType.HIGH) {
+											ts.setExpectSalary(tdms.getAssistantTeacher30MinSalary());
+										}else{
+											ts.setExpectSalary(duration.divide(minsDecimal, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getAssistantTeacher30MinSalary()));
+										}
 									}
 									list.add(ts);
 								}

+ 43 - 8
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -22,10 +22,6 @@
         <result column="total_class_times_" property="totalClassTimes"/>
         <result column="img_" property="img"/>
         <result column="current_class_times_" property="currentClassTimes"/>
-        <!--<association property="musicGroupId" javaType="com.ym.mec.biz.dal.entity.MusicGroup" >-->
-        <!--<result column="name_" property="name"/>-->
-        <!--<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>-->
-        <!--</association>-->
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.entity.ClassGroup4Teacher" id="ClassGroup4Teacher">
@@ -151,15 +147,54 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="ClassGroup" parameterType="map">
-        SELECT * FROM class_group where del_flag_ = 0 ORDER BY id_
+        SELECT * FROM class_group 
+        <where>
+        	<if test="delFlag != null">
+				and del_flag_ = #{delFlag}
+			</if>
+        	<if test="id != null">
+				and id_ = #{id}
+			</if>
+        	<if test="type != null">
+				and type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+        	<if test="groupType != null">
+				and group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+        	<if test="musicGroupId != null and musicGroupId != ''">
+				and music_group_id_ = #{musicGroupId}
+			</if>
+        	<if test="name != null and name != ''">
+				and name_ LIKE CONCAT('%',#{name},'%')
+			</if>
+        </where>
+        ORDER BY id_ desc
         <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-        SELECT COUNT(*)
-        FROM class_group
-        where del_flag_ = 0
+        SELECT COUNT(*) FROM class_group
+        <where>
+        	<if test="delFlag != null">
+				and del_flag_ = #{delFlag}
+			</if>
+        	<if test="id != null">
+				and id_ = #{id}
+			</if>
+        	<if test="type != null">
+				and type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+        	<if test="groupType != null">
+				and group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+        	<if test="musicGroupId != null and musicGroupId != ''">
+				and music_group_id_ = #{musicGroupId}
+			</if>
+        	<if test="name != null and name != ''">
+				and name_ LIKE CONCAT('%',#{name},'%')
+			</if>
+        </where>
     </select>
 
     <!-- 查询根据主教助教查询班级信息 -->

+ 4 - 3
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1480,12 +1480,13 @@
         ORDER BY CONCAT(cs.class_date_,' ',cs.start_class_time_)
     </select>
     <!-- 查找班级未开始的课程 -->
-    <select id="findNoStartCoursesByClassGroupId" resultMap="CourseSchedule">
+    <select id="findCoursesByClassGroupId" resultMap="CourseSchedule">
         SELECT *
         FROM course_schedule
         WHERE class_group_id_ = #{classGroupId}
-          AND status_ = 'NOT_START'
-          AND group_type_ = 'MUSIC'
+        <if test="status != null">
+            and status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
     </select>
 
     <resultMap id="CourseAttendanceDetailHeadInfoDto" type="com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto">

+ 8 - 4
mec-biz/src/main/resources/config/mybatis/TeacherDefaultMusicGroupSalaryMapper.xml

@@ -11,6 +11,7 @@
 		<result column="assistant_teacher_90min_salary_" property="assistantTeacher90MinSalary" />
 		<result column="main_teacher_30min_salary_" property="mainTeacher30MinSalary" />
 		<result column="assistant_teacher_30min_salary_" property="assistantTeacher30MinSalary" />
+		<result column="salary_rule_json_" property="salaryRuleJson" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 	</resultMap>
@@ -32,19 +33,19 @@
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO teacher_default_music_group_salary
 		(user_id_,course_schedule_type_,main_teacher_90min_salary_,assistant_teacher_90min_salary_,main_teacher_30min_salary_,
-		assistant_teacher_30min_salary_,create_time_,update_time_)
+		assistant_teacher_30min_salary_,salary_rule_json_,create_time_,update_time_)
 		VALUES(#{userId},#{courseScheduleType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 		#{mainTeacher90MinSalary},#{assistantTeacher90MinSalary},
-		#{mainTeacher30MinSalary},#{assistantTeacher30MinSalary},now(),now())
+		#{mainTeacher30MinSalary},#{assistantTeacher30MinSalary},#{salaryRuleJson},now(),now())
 	</insert>
 	<insert id="batchAdd" parameterType="list">
 		INSERT INTO teacher_default_music_group_salary
 		(user_id_,course_schedule_type_,main_teacher_90min_salary_,assistant_teacher_90min_salary_,main_teacher_30min_salary_,
-		assistant_teacher_30min_salary_,create_time_,update_time_)
+		assistant_teacher_30min_salary_,salary_rule_json_,create_time_,update_time_)
 		VALUES
 		<foreach collection="salaries" item="item" separator=",">
 			(#{item.userId},#{item.courseScheduleType.code},#{item.mainTeacher90MinSalary},
-			#{item.assistantTeacher90MinSalary},#{item.mainTeacher30MinSalary},#{item.assistantTeacher30MinSalary},now(),now())
+			#{item.assistantTeacher90MinSalary},#{item.mainTeacher30MinSalary},#{item.assistantTeacher30MinSalary},#{item.salaryRuleJson},now(),now())
 		</foreach>
 	</insert>
 
@@ -74,6 +75,9 @@
 			<if test="assistantTeacher30MinSalary != null">
 				assistant_teacher_30min_salary_ = #{assistantTeacher30MinSalary},
 			</if>
+			<if test="salaryRuleJson != null">
+				salary_rule_json_ = #{salaryRuleJson},
+			</if>
 		</set>
 		WHERE id_ = #{id}
 	</update>

+ 12 - 4
mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java

@@ -1,15 +1,12 @@
 package com.ym.mec.im;
 
-import com.ym.mec.common.entity.ImPrivateMessage;
+import com.ym.mec.common.entity.*;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import com.ym.mec.common.config.FeignConfiguration;
-import com.ym.mec.common.entity.ImGroupModel;
-import com.ym.mec.common.entity.ImResult;
-import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.im.fallback.ImFeignServiceFallback;
 
 import java.util.List;
@@ -99,4 +96,15 @@ public interface ImFeignService {
 	//{"senderId":"325","targetId":[1094986],"objectName":"RC:TxtMsg",
 	// "content":{"content":"www.baidu.com"}}
 	Object privateSend(@RequestBody ImPrivateMessage privateMessage);
+
+	/**
+	 * 发送群组自定义消息
+	 * @param groupMessage
+	 * @return
+	 */
+	@PostMapping(value = "private/sendCustom")
+	//body模板
+	//{"senderId":"325","targetId":[1094986],"objectName":"RC:TxtMsg",
+	// "content":{"content":"www.baidu.com"}}
+	Object privateSendCustom(@RequestBody ImGroupMessage groupMessage);
 }

+ 7 - 6
mec-client-api/src/main/java/com/ym/mec/im/fallback/ImFeignServiceFallback.java

@@ -1,12 +1,8 @@
 package com.ym.mec.im.fallback;
 
-import com.ym.mec.common.entity.ImPrivateMessage;
-import org.springframework.stereotype.Component;
-
-import com.ym.mec.common.entity.ImGroupModel;
-import com.ym.mec.common.entity.ImResult;
-import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.common.entity.*;
 import com.ym.mec.im.ImFeignService;
+import org.springframework.stereotype.Component;
 
 import java.util.List;
 
@@ -63,4 +59,9 @@ public class ImFeignServiceFallback implements ImFeignService {
     public Object privateSend(ImPrivateMessage privateMessage) {
         return null;
     }
+
+    @Override
+    public Object privateSendCustom(ImGroupMessage groupMessage) {
+        return null;
+    }
 }

+ 10 - 10
mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java

@@ -18,36 +18,36 @@ public class BaseController {
 	
 	private final static Logger logger = LoggerFactory.getLogger(BaseController.class);
 
-	public static HttpResponseResult succeed(Object object) {
+	public static <T> HttpResponseResult<T> succeed(T object) {
 		return getResponseData(true, HttpStatus.OK, object, "");
 	}
 
-	public static HttpResponseResult succeed() {
+	public static <T> HttpResponseResult<T> succeed() {
 		return getResponseData(true, HttpStatus.OK, null, "");
 	}
 
-	public static HttpResponseResult succeedData(Object obj) {
+	public static <T> HttpResponseResult<T> succeedData(T obj) {
 		return getResponseData(true, HttpStatus.OK, obj, "操作成功");
 	}
 
-	public static HttpResponseResult warned(String message) {
+	public static HttpResponseResult<String> warned(String message) {
 		return failed(HttpStatus.MULTI_STATUS, message);
 	}
 
-	public static HttpResponseResult failed() {
+	public static HttpResponseResult<String> failed() {
 		return failed("");
 	}
 
-	public static HttpResponseResult failed(String msg) {
+	public static HttpResponseResult<String> failed(String msg) {
 		return failed(HttpStatus.INTERNAL_SERVER_ERROR, msg);
 	}
 
-	public static HttpResponseResult failed(HttpStatus statusCode, String msg) {
+	public static HttpResponseResult<String> failed(HttpStatus statusCode, String msg) {
 		return getResponseData(false, statusCode, null, msg);
 	}
 
-	private static HttpResponseResult getResponseData(boolean status, HttpStatus statusCode, Object data, String message) {
-		HttpResponseResult obj = new HttpResponseResult();
+	private static <T> HttpResponseResult<T> getResponseData(boolean status, HttpStatus statusCode, T data, String message) {
+		HttpResponseResult<T> obj = new HttpResponseResult<T>();
 		obj.setStatus(status);
 		obj.setCode(statusCode.value());
 		obj.setData(data);
@@ -63,7 +63,7 @@ public class BaseController {
 	 * @return
 	 */
 	@ExceptionHandler(Exception.class)
-	public HttpResponseResult handleException(Exception ex, HttpServletRequest request) {
+	public HttpResponseResult<String> handleException(Exception ex, HttpServletRequest request) {
 		Throwable e = ExceptionUtils.getRootCause(ex);
 		if (e == null) {
 			e = ex;

+ 5 - 7
mec-common/common-core/src/main/java/com/ym/mec/common/entity/HttpResponseResult.java

@@ -5,23 +5,21 @@ import org.springframework.http.HttpStatus;
 /**
  * HttpResponse 返回结果
  */
-public class HttpResponseResult {
-
-	public final static int TIME_OUT = -1;
+public class HttpResponseResult<T> {
 
 	private boolean status = true;
 	private String msg;
-	private Object data;
+	private T data;
 	private int code;
 
-	public HttpResponseResult(boolean status, int code, Object data, String message) {
+	public HttpResponseResult(boolean status, int code, T data, String message) {
 		this.status = status;
 		this.msg = message;
 		this.data = data;
 		this.code = code;
 	}
 
-	public HttpResponseResult(boolean status, HttpStatus resultCode, Object data, String message) {
+	public HttpResponseResult(boolean status, HttpStatus resultCode, T data, String message) {
 		this.status = status;
 		this.msg = message;
 		this.data = data;
@@ -59,7 +57,7 @@ public class HttpResponseResult {
 		return data;
 	}
 
-	public void setData(Object data) {
+	public void setData(T data) {
 		this.data = data;
 	}
 

+ 0 - 3
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImBaseMessage.java

@@ -1,9 +1,6 @@
 package com.ym.mec.common.entity;
 
 public abstract class ImBaseMessage {
-    public ImBaseMessage() {
-    }
-
     public abstract String getType();
 
     public abstract String toString();

+ 52 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupMessage.java

@@ -0,0 +1,52 @@
+package com.ym.mec.common.entity;
+
+public class ImGroupMessage extends ImMessageModel {
+    public Integer isIncludeSender;
+    public Integer isPersisted;
+    public Integer contentAvailable;
+    public String[] toUserId;
+    private String type;
+
+    public ImGroupMessage() {
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Integer getIsIncludeSender() {
+        return isIncludeSender;
+    }
+
+    public void setIsIncludeSender(Integer isIncludeSender) {
+        this.isIncludeSender = isIncludeSender;
+    }
+
+    public Integer getIsPersisted() {
+        return isPersisted;
+    }
+
+    public void setIsPersisted(Integer isPersisted) {
+        this.isPersisted = isPersisted;
+    }
+
+    public Integer getContentAvailable() {
+        return contentAvailable;
+    }
+
+    public void setContentAvailable(Integer contentAvailable) {
+        this.contentAvailable = contentAvailable;
+    }
+
+    public String[] getToUserId() {
+        return toUserId;
+    }
+
+    public void setToUserId(String[] toUserId) {
+        this.toUserId = toUserId;
+    }
+}

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImPlayMidiMessage.java

@@ -13,7 +13,7 @@ public class ImPlayMidiMessage extends ImBaseMessage {
     }
 
     public String getType() {
-        return "DY:PlayMidiMessage";
+        return TYPE;
     }
 
     public String getContent() {

+ 9 - 10
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImPrivateMessage.java

@@ -2,6 +2,7 @@ package com.ym.mec.common.entity;
 
 public class ImPrivateMessage extends ImMessageModel {
     public String count;
+    public String type;
     //是否在融云服务器存储, 0: 不存储, 1: 存储, 默认: 1
     public Integer isPersisted;
     public Integer isCounted;
@@ -14,21 +15,19 @@ public class ImPrivateMessage extends ImMessageModel {
     public ImPrivateMessage() {
     }
 
-    public ImPrivateMessage(String senderId, String[] targetId, String objectName, ImTxtMessage content, String pushContent, String pushData, String count, Integer isPersisted, Integer isCounted, Integer verifyBlacklist, Integer isIncludeSender, Integer contentAvailable) {
-        super(senderId, targetId, objectName, content, pushContent, pushData);
-        this.count = count;
-        this.isPersisted = isPersisted;
-        this.isCounted = isCounted;
-        this.verifyBlacklist = verifyBlacklist;
-        this.isIncludeSender = isIncludeSender;
-        this.contentAvailable = contentAvailable;
-    }
-
     public ImPrivateMessage setSenderId(String senderId) {
         super.setSenderId(senderId);
         return this;
     }
 
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
     public String[] getTargetId() {
         return super.getTargetId();
     }

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImTxtMessage.java

@@ -13,7 +13,7 @@ public class ImTxtMessage extends ImBaseMessage {
     }
 
     public String getType() {
-        return "RC:TxtMsg";
+        return TYPE;
     }
 
     public String getContent() {

+ 4 - 4
mec-gateway/mec-gateway-web/src/main/java/com/ym/mec/gateway/web/filter/AuthFilter.java

@@ -12,7 +12,7 @@ import com.netflix.zuul.exception.ZuulException;
 public class AuthFilter extends ZuulFilter {
 
 	@Override
-	public Object run() throws ZuulException {
+	public Object run() throws ZuulException {//过滤器核心业务方法
 		RequestContext requestContext = RequestContext.getCurrentContext();
 		HttpServletRequest request = requestContext.getRequest();
 
@@ -21,17 +21,17 @@ public class AuthFilter extends ZuulFilter {
 	}
 
 	@Override
-	public boolean shouldFilter() {
+	public boolean shouldFilter() {// 返回true,必须执行过滤器;false,不执行过滤器
 		return true;
 	}
 
 	@Override
-	public int filterOrder() {
+	public int filterOrder() {// 过滤器的执行顺序,数字越小越先执行
 		return 0;
 	}
 
 	@Override
-	public String filterType() {
+	public String filterType() {// 过滤类型,前置过滤器,后置过滤器
 		return "pre";
 	}
 

+ 16 - 3
mec-im/src/main/java/com/ym/controller/PrivateController.java

@@ -1,10 +1,10 @@
 package com.ym.controller;
 
-import com.ym.mec.common.entity.ImBaseMessage;
-import com.ym.mec.common.entity.ImPrivateMessage;
-import com.ym.mec.common.entity.ImTxtMessage;
+import com.ym.mec.common.entity.*;
+import com.ym.pojo.CustomMessage;
 import com.ym.service.MessageService;
 import io.rong.messages.TxtMessage;
+import io.rong.models.message.GroupMessage;
 import io.rong.models.message.PrivateMessage;
 import io.rong.models.message.RecallMessage;
 import io.rong.models.message.TemplateMessage;
@@ -37,6 +37,19 @@ public class PrivateController {
         return messageService.privateSend(privateMessage);
     }
 
+    @RequestMapping(value = "/sendCustom", method = RequestMethod.POST)
+    public Object sendCustom(@RequestBody ImGroupMessage imGroupMessage) throws Exception {
+        GroupMessage groupMessage = new GroupMessage();
+        ImTxtMessage content = (ImTxtMessage)imGroupMessage.getContent();
+        CustomMessage customMessage = new CustomMessage(content.getContent(),content.getExtra());
+        customMessage.setTYPE(imGroupMessage.getType());
+        groupMessage.setContent(customMessage);
+        groupMessage.setTargetId(imGroupMessage.getTargetId());
+        groupMessage.setSenderId(imGroupMessage.getSenderId());
+        groupMessage.setObjectName(imGroupMessage.getType());
+        return messageService.groupSend(groupMessage);
+    }
+
     @RequestMapping(value = "/recall", method = RequestMethod.POST)
     public Object recall(@RequestBody RecallMessage recallMessage) throws Exception {
         return messageService.privateRecall(recallMessage);

+ 24 - 2
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -4,11 +4,17 @@ import com.alibaba.fastjson.JSONObject;
 import com.ym.common.ApiException;
 import com.ym.common.BaseResponse;
 import com.ym.common.ErrorEnum;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.common.exception.BizException;
 import com.ym.pojo.*;
+import com.ym.service.MessageService;
 import com.ym.service.RoomService;
+import io.rong.models.message.GroupMessage;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+
 import java.util.List;
 
 /**
@@ -20,6 +26,10 @@ import java.util.List;
 public class RoomController{
     @Autowired
     RoomService roomService;
+    @Autowired
+    MessageService messageService;
+    @Autowired
+    SysUserFeignService sysUserFeignService;
 
     @RequestMapping(value = "/join", method = RequestMethod.POST)
     public Object joinRoom(@RequestBody ReqUserData data)
@@ -42,8 +52,20 @@ public class RoomController{
     }
 
     @RequestMapping(value = "/sendImPlayMidiMessage", method = RequestMethod.POST)
-    public Object sendImPlayMidiMessage(String userId,String content,String roomId){
-        roomService.sendImPlayMidiMessage(userId,content,roomId);
+    public Object sendImPlayMidiMessage(@RequestBody PlayMidiMessageData playMidiMessageData) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new BizException("用户信息获取失败");
+        }
+//        roomService.sendImPlayMidiMessage(playMidiMessageData);
+        GroupMessage groupMessage = new GroupMessage();
+        CustomMessage customMessage = new CustomMessage(playMidiMessageData.getContent(),null);
+        customMessage.setTYPE("DY:PlayMidiMessage");
+        groupMessage.setContent(customMessage);
+        groupMessage.setTargetId(playMidiMessageData.getRoomId().split(","));
+        groupMessage.setSenderId(sysUser.getId().toString());
+        groupMessage.setObjectName("DY:PlayMidiMessage");
+        messageService.groupSend(groupMessage);
         return new BaseResponse<>();
     }
 

+ 43 - 0
mec-im/src/main/java/com/ym/pojo/CustomMessage.java

@@ -0,0 +1,43 @@
+package com.ym.pojo;
+
+import com.alibaba.fastjson.JSONObject;
+import io.rong.messages.BaseMessage;
+
+public class CustomMessage extends BaseMessage {
+    private String content = "";
+    private String extra = "";
+    private String TYPE = "";
+
+    public CustomMessage(String content, String extra) {
+        this.content = content;
+        this.extra = extra;
+    }
+
+    public void setTYPE(String TYPE) {
+        this.TYPE = TYPE;
+    }
+
+    public String getType() {
+        return TYPE;
+    }
+
+    public String getContent() {
+        return this.content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getExtra() {
+        return this.extra;
+    }
+
+    public void setExtra(String extra) {
+        this.extra = extra;
+    }
+
+    public String toString() {
+        return JSONObject.toJSONString(this);
+    }
+}

+ 37 - 0
mec-im/src/main/java/com/ym/pojo/PlayMidiMessageData.java

@@ -0,0 +1,37 @@
+package com.ym.pojo;
+
+import lombok.Data;
+
+/**
+ * Created by weiqinxiao on 2019/3/1.
+ */
+@Data
+public class PlayMidiMessageData {
+	private String content;
+	private String roomId;
+	private String userId;
+
+	public String getContent() {
+		return content;
+	}
+
+	public void setContent(String content) {
+		this.content = content;
+	}
+
+	public String getRoomId() {
+		return roomId;
+	}
+
+	public void setRoomId(String roomId) {
+		this.roomId = roomId;
+	}
+
+	public String getUserId() {
+		return userId;
+	}
+
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+}

+ 4 - 1
mec-im/src/main/java/com/ym/service/Impl/MessageServiceImpl.java

@@ -32,7 +32,10 @@ public class MessageServiceImpl implements MessageService {
         return aPrivate;
     }
     private Group getGroup(){
-        return new Group(appKey,appSecret);
+        RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret);
+        Group group = new Group(appKey, appSecret);
+        group.setRongCloud(rongCloud);
+        return group;
     }
     private Chatroom getChatroom(){
         return new Chatroom(appKey,appSecret);

+ 2 - 14
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -1370,24 +1370,12 @@ public class RoomServiceImpl implements RoomService {
     }
 
     @Override
-    public void sendImPlayMidiMessage(String userId, String content,String roomId) {
+    public void sendImPlayMidiMessage(PlayMidiMessageData playMidiMessageData) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){
             throw new BizException("用户信息获取失败");
         }
-        String[] targetIds;
-        if(StringUtils.isNotEmpty(userId)){
-            targetIds = userId.split(",");
-        }else {
-            List<RoomMember> roomMembers = roomMemberDao.findByRidAndRole(roomId, RoleEnum.RoleStudent.getValue());
-            if(roomMembers.size() > 0){
-                Set<String> collect = roomMembers.stream().map(e -> e.getUid()).collect(Collectors.toSet());
-                targetIds = (String[]) collect.toArray();
-            }else {
-                return;
-            }
-        }
-        sysMessageService.batchSendImPlayMidiMessage(sysUser.getId().toString(),targetIds,content);
+        sysMessageService.batchSendImPlayMidiMessage(sysUser.getId().toString(),playMidiMessageData.getRoomId(),playMidiMessageData.getContent());
     }
 
     private void updateDisplay(String roomId, String senderId, String display, Integer isIncludeSender) throws ApiException, Exception {

+ 1 - 3
mec-im/src/main/java/com/ym/service/RoomService.java

@@ -69,8 +69,6 @@ public interface RoomService {
 
     /**
      * 发送节拍器自定义消息
-     * @param userId
-     * @param content
      */
-    void sendImPlayMidiMessage(String userId, String content,String roomId);
+    void sendImPlayMidiMessage(PlayMidiMessageData playMidiMessageData);
 }

+ 15 - 11
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java

@@ -1,25 +1,29 @@
 package com.ym.mec.teacher.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+
+import java.util.Objects;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.GroupNoticeQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.ClassGroupStudentMapperService;
 import com.ym.mec.biz.service.CourseScheduleEvaluateService;
 import com.ym.mec.biz.service.ImGroupNoticeService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.Objects;
 
 /**
  * @Author Joburgess
@@ -47,7 +51,7 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "获取教师班级详情界面头部信息")
     @GetMapping("/findTeacherClassGroupInfo")
-    public Object findTeacherClassGroupInfo(@ApiParam(value = "班级编号", required = true)Long classGroupId){
+    public Object findTeacherClassGroupInfo(@ApiParam(value = "班级编号", required = true)Integer classGroupId){
         return succeed(classGroupService.findTeacherClassGroupInfo(classGroupId));
     }
 

+ 6 - 1
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/YimeiSmsPlugin.java

@@ -46,7 +46,12 @@ public class YimeiSmsPlugin implements MessageSenderPlugin, InitializingBean {
 			param.put("sign", DigestUtils.md5Hex(appId + secretKey + timestamp));
 			param.put("content", content);
 			param.put("mobiles", receiver);
-			return HttpUtil.postForHttp(host, param);
+			
+			long startTime = System.currentTimeMillis();
+			String result =  HttpUtil.postForHttp(host, param);
+			logger.info("调用亿美接口共消耗{}毫秒",System.currentTimeMillis() - startTime);
+			
+			return result;
 		} catch (Exception e) {
 			throw new ThirdpartyException("调用发送短信接口出现异常", e);
 		}

+ 1 - 1
mec-util/src/main/java/com/ym/mec/util/idcard/IdcardInfoExtractor.java

@@ -6,7 +6,7 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Properties;
 
-import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import com.ym.mec.util.exception.UtilException;
 

+ 36 - 15
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -1,5 +1,24 @@
 package com.ym.mec.web.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+
+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.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ClassGroup4MixDto;
@@ -10,21 +29,15 @@ import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
+import com.ym.mec.biz.dal.page.ClassGroupQueryInfo;
 import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.queryMusicGroupCourseScheduleQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
-import io.swagger.annotations.*;
-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 java.util.Date;
-import java.util.List;
 
 @RequestMapping("classGroup")
 @Api(tags = "班级服务")
@@ -38,6 +51,21 @@ public class ClassGroupController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @ApiOperation(value = "分页查询班级列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('classGroup/queryPage')")
+    public HttpResponseResult<PageInfo<ClassGroup>> queryPage(ClassGroupQueryInfo queryInfo) {
+    	queryInfo.setDelFlag(0);
+        return succeed(classGroupService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "创建班级")
+    @PostMapping("/create")
+    @PreAuthorize("@pcs.hasPermissions('classGroup/create')")
+    public HttpResponseResult<Boolean> create(@RequestBody ClassGroup classGroup) throws Exception {
+        return succeed(classGroupService.create(classGroup));
+    }
+
     @ApiOperation(value = "新增单技班班级")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('classGroup/add')")
@@ -90,13 +118,6 @@ public class ClassGroupController extends BaseController {
         return succeed();
     }
 
-    @ApiOperation(value = "分页查询班级列表")
-    @GetMapping("/queryPage")
-    @PreAuthorize("@pcs.hasPermissions('classGroup/queryPage')")
-    public Object queryPage(QueryInfo queryInfo) {
-        return succeed(classGroupService.queryPage(queryInfo));
-    }
-
     @ApiOperation(value = "合奏班相关班级获取")
     @GetMapping("/findClassGroupAboutMix")
     @PreAuthorize("@pcs.hasPermissions('classGroup/findClassGroupAboutMix')")

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

@@ -11,10 +11,7 @@ import com.ym.mec.biz.dal.dto.CreateCourseScheduleDto;
 import com.ym.mec.biz.dal.dto.VipGroupCourseAdjustInfoDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
-import com.ym.mec.biz.dal.enums.AuditStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
@@ -94,6 +91,7 @@ public class CourseScheduleController extends BaseController {
             courseSchedule.setSchoolId(musicGroup.getSchoolId());
             courseSchedule.setMusicGroupId(musicGroup.getId());
             courseSchedule.setGroupType(GroupType.MUSIC);
+            courseSchedule.setStatus(CourseStatusEnum.NOT_START);
             if(Objects.isNull(courseSchedule.getTeachMode())){
                 courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
             }