浏览代码

Merge remote-tracking branch 'origin/master'

Joburgess 5 年之前
父节点
当前提交
e9522d96e6
共有 32 个文件被更改,包括 943 次插入158 次删除
  1. 30 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  3. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SchoolDao.java
  4. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  5. 14 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  6. 95 9
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroup4MixDto.java
  7. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java
  8. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroupStudentMapper.java
  9. 7 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java
  10. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Teacher.java
  11. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ClassGroupTypeEnum.java
  12. 28 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/PaymentStatusEnum.java
  13. 18 3
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  14. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  15. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  16. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
  17. 498 78
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  18. 7 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  19. 15 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  20. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  21. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  22. 66 20
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  23. 9 4
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  24. 2 5
      mec-biz/src/main/resources/config/mybatis/SchoolMapper.xml
  25. 8 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  26. 7 0
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  27. 5 2
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  28. 9 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupModel.java
  29. 8 7
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  30. 0 5
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupStudentController.java
  31. 13 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java
  32. 8 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

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

@@ -115,10 +115,10 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     /**
      * 获取vip课的学生名称列表
      *
-     * @param musicGroupId
+     * @param vipIds
      * @return
      */
-    List<String> findVipStuNames(String musicGroupId);
+    List<Map<String,String>> findVipStuNames(String vipIds);
 
     /**
      * 获取课程下的学员列表
@@ -337,4 +337,32 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @return
      */
     int batchIncreaseClassTimes(List<Integer> classGroupList);
+
+    /**
+     * 获取学生端,vip课程列表
+     * @param userId
+     * @return
+     */
+    List<CourseListDto> queryStudentVipCourses(Integer userId);
+
+    /**
+     * 获取学生端,vip课程列表
+     * @param userId
+     * @return
+     */
+    Integer countStudentVipCourses(Integer userId);
+
+    /**
+     * 获取学生端,学员乐团课列表详情
+     * @param userId
+     * @return
+     */
+    List<CourseListDto> queryStudentMusicGroupCourses(Integer userId);
+
+    /**
+     * 获取学生端,学员乐团课列表详情
+     * @param userId
+     * @return
+     */
+    Integer countStudentMusicGroupCourses(Integer userId);
 }

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

@@ -85,10 +85,10 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取当前乐团所有教师列表
-     * @param id
+     * @param musicGroupId
      * @return
      */
-    Set<Integer> queryTeacherIds(String id);
+    Set<Integer> queryTeacherIds(String musicGroupId);
 
     /**
      * 根据乐团编号列表获取乐团在读人数map

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

@@ -24,7 +24,7 @@ public interface SchoolDao extends BaseDAO<Integer, School> {
      * @param schoolIds
      * @return
      */
-    List<Map<Integer, String>> queryNameByIds(@Param("schoolIds") Set<Integer> schoolIds);
+    List<Map<Integer, String>> queryNameByIds(@Param("schoolIds") String schoolIds);
     
     /**
      * 获取老师的教学点

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

@@ -163,7 +163,16 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 查询乐团声部下的学生
+     *
+     * @return
+     */
+    List<StudentRegistration> findMusicGroupStudent(String musicGroupId, Integer actualSubjectId);
+
+    /**
+     * 查询乐团userIdList的学生
+     * @param musicGroupId
+     * @param userIdList
      * @return
      */
-    List<StudentRegistration> findMusicGroupStudent(String musicGroupId,Integer actualSubjectId);
+    List<StudentRegistration> findStudentListByUserIdList(@Param("musicGroupId") String musicGroupId, @Param("userIdList") List<Integer> userIdList);
 }

+ 14 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java

@@ -15,6 +15,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     /**
      * 通过乐团编号查询科目列表
+     *
      * @param musicGroupId
      * @return
      */
@@ -22,6 +23,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     /**
      * 通过乐团收费方式,获取默认的声部列表
+     *
      * @param chargeTypeId
      * @return
      */
@@ -29,6 +31,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     /**
      * 根据科目code查科目
+     *
      * @param code
      * @return Subject
      */
@@ -36,6 +39,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     /**
      * 根据父级id查询子级列表
+     *
      * @param parentId
      * @return
      */
@@ -43,6 +47,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     /**
      * 通过乐团收费类型,获取默认的声部列表
+     *
      * @param chargeTypeId
      * @return
      */
@@ -50,6 +55,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     /**
      * 通过乐团编号获取声部列表以及声部报名、缴费、计划人数
+     *
      * @param musicGroupId
      * @return
      */
@@ -57,6 +63,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     /**
      * 根据声部id字符串查询
+     *
      * @param subIds
      * @return
      */
@@ -73,23 +80,27 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     /**
      * 根据声部编号列表获取声部名称map
+     *
      * @param subjectIds
      * @return
      */
     List<Map<Integer, String>> queryNameByIds(@Param("subjectIds") String subjectIds);
 
     /**
+     * @return java.util.List<java.util.Map < java.lang.Integer, java.lang.String>>
      * @Author: Joburgess
      * @Date: 2019/10/17
      * @params [subjectIds]
-     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.String>>
-     * @describe 根据科目编号获取部门编号,部门名称
+     * @describe 根据科目编号获取部门编号, 部门名称
      */
-    List<Map<Long,String>> findBySubjecIds(@Param("subjectIds") List<String> subjectIds);
+    List<Map<Long, String>> findBySubjecIds(@Param("subjectIds") List<String> subjectIds);
 
     /**
      * 获取子级列表
+     *
      * @return
      */
     List<Subject> findSubSubjects();
+
+    List<Subject> findBySubjectByIdList(@Param("subjectIdList") List<Integer> subjectIdList);
 }

+ 95 - 9
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroup4MixDto.java

@@ -1,31 +1,30 @@
 package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;
 
 public class ClassGroup4MixDto {
 
+    @ApiModelProperty(value = "班级id", required = true)
+    private Integer classGroupId;
+
     @ApiModelProperty(value = "乐团id", required = true)
     private String musicGroupId;
 
+    @ApiModelProperty(value = "合奏班id", required = true)
+    private Integer mixClassGroupId;
+
     @ApiModelProperty(value = "班级名称", required = true)
     private String classGroupName;
 
-    @ApiModelProperty(value = "班级id", required = true)
-    private Integer classGroupId;
-
-    @ApiModelProperty(value = "学生-班级", required = true)
-    private List<ClassGroupStudentMapperDto> classGroupStudentMapperDtoList;
+    @ApiModelProperty(value = "学生ids", required = true)
+    private List<Integer> students;
 
     @ApiModelProperty(value = "老师设置", required = true)
     private List<ClassGroupTeacherMapper> classGroupTeacherMapperList;
 
-    @ApiModelProperty(value = "是否永久 方式1-永久 0-临时", required = true)
-    private YesOrNoEnum type;
-
     @ApiModelProperty(value = "开始时间", required = true)
     private String startDate;
 
@@ -41,4 +40,91 @@ public class ClassGroup4MixDto {
     @ApiModelProperty(value = "排课次数", required = true)
     private Integer courseTimes;
 
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public String getClassGroupName() {
+        return classGroupName;
+    }
+
+    public void setClassGroupName(String classGroupName) {
+        this.classGroupName = classGroupName;
+    }
+
+    public List<Integer> getStudents() {
+        return students;
+    }
+
+    public void setStudents(List<Integer> students) {
+        this.students = students;
+    }
+
+    public List<ClassGroupTeacherMapper> getClassGroupTeacherMapperList() {
+        return classGroupTeacherMapperList;
+    }
+
+    public void setClassGroupTeacherMapperList(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) {
+        this.classGroupTeacherMapperList = classGroupTeacherMapperList;
+    }
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    public Integer getDayOfWeek() {
+        return dayOfWeek;
+    }
+
+    public void setDayOfWeek(Integer dayOfWeek) {
+        this.dayOfWeek = dayOfWeek;
+    }
+
+    public String getStartClassTime() {
+        return startClassTime;
+    }
+
+    public void setStartClassTime(String startClassTime) {
+        this.startClassTime = startClassTime;
+    }
+
+    public String getEndClassTime() {
+        return endClassTime;
+    }
+
+    public void setEndClassTime(String endClassTime) {
+        this.endClassTime = endClassTime;
+    }
+
+    public Integer getCourseTimes() {
+        return courseTimes;
+    }
+
+    public void setCourseTimes(Integer courseTimes) {
+        this.courseTimes = courseTimes;
+    }
+
+    public Integer getMixClassGroupId() {
+        return mixClassGroupId;
+    }
+
+    public void setMixClassGroupId(Integer mixClassGroupId) {
+        this.mixClassGroupId = mixClassGroupId;
+    }
 }

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

@@ -12,6 +12,12 @@ public class CourseListDto {
     @ApiModelProperty(value = "乐团、vip课编号",required = true)
     private String musicGroupId;
 
+    @ApiModelProperty(value = "班级编号",required = true)
+    private Integer classGroupId;
+
+    @ApiModelProperty(value = "教学点编号",required = true)
+    private Integer teacherSchoolId;
+
     @ApiModelProperty(value = "学生姓名",required = true)
     private String studentNames;
 
@@ -51,6 +57,22 @@ public class CourseListDto {
     //续费状态
     private MusicGroupStudentFee.PaymentStatus paymentStatus;
 
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public Integer getTeacherSchoolId() {
+        return teacherSchoolId;
+    }
+
+    public void setTeacherSchoolId(Integer teacherSchoolId) {
+        this.teacherSchoolId = teacherSchoolId;
+    }
+
     public Integer getOnlineClassesNum() {
         return onlineClassesNum;
     }

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

@@ -13,6 +13,10 @@ public class ClassGroupStudentMapper {
 
 	/**  */
 	private Long id;
+
+	/** 乐团id */
+	@ApiModelProperty(value = "班级编号",required = false)
+	private String musicGroupId;
 	
 	/** 班级 */
 	@ApiModelProperty(value = "班级编号",required = false)
@@ -29,6 +33,14 @@ public class ClassGroupStudentMapper {
 	/**  */
 	private java.util.Date createTime;
 
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+
 	public ClassGroupStudentMapper() {
 	}
 
@@ -82,5 +94,4 @@ public class ClassGroupStudentMapper {
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
-
 }

+ 7 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.enums.KitPurchaseMethodEnum;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -79,13 +80,13 @@ public class StudentRegistration {
     private Date birthdate;
 
     @ApiModelProperty(value = "缴费状态(1-已缴费 0-未交费)", required = false)
-    private YesOrNoEnum paymentStatus;
+    private PaymentStatusEnum paymentStatus;
 
     @ApiModelProperty(value = "用户所在乐团状态)",required = false)
     private ClassGroupStudentStatusEnum musicGroupStatus;
 
     @ApiModelProperty(value = "班级ids", required = true)
-    private String classGroupId;
+    private Integer classGroupId;
 
     @ApiModelProperty(value = "零时课程费用", required = true)
     private BigDecimal temporaryCourseFee;
@@ -187,7 +188,7 @@ public class StudentRegistration {
         this.isAllowAdjust = isAllowAdjust;
     }
 
-    public void setPaymentStatus(YesOrNoEnum paymentStatus) {
+    public void setPaymentStatus(PaymentStatusEnum paymentStatus) {
         this.paymentStatus = paymentStatus;
     }
 
@@ -239,15 +240,15 @@ public class StudentRegistration {
         return this.parentsCompany;
     }
 
-    public YesOrNoEnum getPaymentStatus() {
+    public PaymentStatusEnum getPaymentStatus() {
         return paymentStatus;
     }
 
-    public String getClassGroupId() {
+    public Integer getClassGroupId() {
         return classGroupId;
     }
 
-    public void setClassGroupId(String classGroupId) {
+    public void setClassGroupId(Integer classGroupId) {
         this.classGroupId = classGroupId;
     }
 

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

@@ -56,6 +56,9 @@ public class Teacher extends SysUser {
 	/** 专业技能(支持多个,用|分隔),对应科目表编号 */
 	private List<String> subjectName;
 
+	/** 专业技能(支持多个,用|分隔),对应科目表编号 */
+	private String splitSubjectName;
+
 	/** 入职时间 */
 	@ApiModelProperty(value = "入职时间", required = false)
 	private java.util.Date entryDate;
@@ -90,6 +93,14 @@ public class Teacher extends SysUser {
 
 	private List<School> teacherSchools;
 
+	public String getSplitSubjectName() {
+		return splitSubjectName;
+	}
+
+	public void setSplitSubjectName(String splitSubjectName) {
+		this.splitSubjectName = splitSubjectName;
+	}
+
 	public String getFlowOrganRangeId() {
 		return flowOrganRangeId;
 	}

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

@@ -10,7 +10,8 @@ public enum ClassGroupTypeEnum implements BaseEnum<String, ClassGroupTypeEnum> {
 	MIX("MIX", "合奏班级"),
 	HIGH("HIGH", "提高班"),
 	VIP("VIP", "vip课"),
-	DEMO("DEMO", "试听课");
+	DEMO("DEMO", "试听课"),
+	SNAP("SNAP", "临时班级");
 
 	private String code;
 

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/PaymentStatusEnum.java

@@ -0,0 +1,28 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum PaymentStatusEnum implements BaseEnum<Integer, PaymentStatusEnum> {
+	NO(0,"否"),
+	OPEN(1,"开启缴费"),
+	YES(2,"已缴费");
+
+	private Integer code;
+
+	private String desc;
+
+	private PaymentStatusEnum(Integer code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	@Override
+	public Integer getCode() {
+		return code;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+
+}

+ 18 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -241,11 +241,26 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
     List<StudentAttendanceViewDto> findAttendanceStudentByCourse(Long courseScheduleId);
 
     /**
-     * 班级调整
-     * @param classGroupAdjustDto
+     * 班级调整(新增班级)
+     * @param classGroup4MixDto
      * @return
      */
-    ClassGroup classGroupAdjust(ClassGroupAdjustDto classGroupAdjustDto) throws Exception;
+    ClassGroup classGroupAdjust(ClassGroup4MixDto classGroup4MixDto) throws Exception;
+
+    /**
+     * 班级调整(修改班级)
+     * @param classGroup4MixDto
+     * @return
+     */
+    ClassGroup classGroupUpdate(ClassGroup4MixDto classGroup4MixDto) throws Exception;
+
+    /**
+     * 班级调整(增加临时班级)
+     * @param classGroup4MixDto
+     * @return
+     */
+    ClassGroup classGroupSnap(ClassGroup4MixDto classGroup4MixDto) throws Exception;
+
 
     /**
      * 乐团详情--班级详情列表

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
@@ -16,6 +17,7 @@ import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
 
 public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	/**
@@ -144,6 +146,13 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	SubFeeSettingDto findMusicGroupBasicInfo(String musicGroupId);
 
 	/**
+	 * 获取乐团列表
+	 * @param musicGroupIds
+	 * @return
+	 */
+	List<MusicGroup> queryListByIds(Set<String> musicGroupIds);
+
+	/**
 	 * 乐团详情--课酬调整--课程教师列表
 	 * @param courseScheduleId
 	 * @return

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -189,5 +189,19 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 */
 	List<StudentRegistration> findMusicGroupStudent(String musicGroupId,Integer actualSubjectId);
 
+	/**
+	 * 查询乐团userIdList的学生
+	 * @param musicGroupId
+	 * @param userIdList
+	 * @return
+	 */
+	List<StudentRegistration> findStudentListByUserIdList(String musicGroupId, List<Integer> userIdList);
+
+	/**
+	 * 开启缴费
+	 * @param id
+	 * @return
+	 */
+	int openPayment(Long id);
 
 }

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

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.entity.SubjectGoodsMapper;
 import com.ym.mec.biz.dal.page.SubjectQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -82,4 +83,7 @@ public interface SubjectService extends BaseService<Integer, Subject> {
      * @return
      */
     List<Subject> findSubSubjects();
+
+    List<Subject> findBySubjectByIdList(List<Integer> subjectIdList);
+
 }

+ 498 - 78
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -34,12 +34,16 @@ import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.timevale.tgtext.text.pdf.df.*;
+
 @Service
 public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> implements ClassGroupService {
 
     @Autowired
     private ClassGroupDao classGroupDao;
     @Autowired
+    private SchoolDao schoolDao;
+    @Autowired
     private VipGroupDao vipGroupDao;
     @Autowired
     private VipGroupActivityDao vipGroupActivityDao;
@@ -73,6 +77,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -122,6 +128,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         String userIds = classGroup.getUserIds();
         String[] userIdArr = userIds.split(",");
 
+        classGroup.setExpectStudentNum(userIdArr.length);
         classGroup.setStudentNum(userIdArr.length);
         insert(classGroup);
 
@@ -129,13 +136,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<ClassGroupStudentMapper> classGroupStudentList = new ArrayList<>();
         for (String userId : userIdArr) {
             ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+            classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
             classGroupStudentMapper.setClassGroupId(classGroup.getId());
             classGroupStudentMapper.setUserId(Integer.parseInt(userId));
             classGroupStudentMapper.setCreateTime(date);
             classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
             classGroupStudentList.add(classGroupStudentMapper);
             StudentRegistration studentRegistration = new StudentRegistration();
-            studentRegistration.setClassGroupId(classGroup.getId().toString());
+            studentRegistration.setClassGroupId(classGroup.getId());
             studentRegistration.setUserId(Integer.getInteger(userId));
             studentRegistration.setMusicGroupId(classGroup.getMusicGroupId());
             studentRegistrationDao.updateByUserIdAndMusicGroupId(studentRegistration);
@@ -166,6 +174,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroup.setSubjectIdList(subjectIds);
         classGroup.setName(name);
         classGroup.setType(ClassGroupTypeEnum.MIX);
+        classGroup.setExpectStudentNum(studentNum);
+        classGroup.setStudentNum(studentNum);
         classGroup.setCreateTime(date);
         classGroup.setUpdateTime(date);
         insert(classGroup);
@@ -335,8 +345,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<ClassGroupTeachersDto> getClassGroupAndTeachers(String musicGroupId, String type,Integer classGroupId) {
-        List<ClassGroupTeachersDto> classGroupAndTeachersList = classGroupDao.findClassGroupByMusicGroupId(musicGroupId, type,classGroupId);
+    public List<ClassGroupTeachersDto> getClassGroupAndTeachers(String musicGroupId, String type, Integer classGroupId) {
+        List<ClassGroupTeachersDto> classGroupAndTeachersList = classGroupDao.findClassGroupByMusicGroupId(musicGroupId, type, classGroupId);
 
         List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroupTeacherMapperService.findClassGroupTeachers(classGroupAndTeachersList);
 
@@ -353,9 +363,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<ClassGroupTeachersDto> getClassGroupAndTeacherSalary(String musicGroupId, SalarySettlementTypeEnum type,Integer classGroupId) throws Exception {
+    public List<ClassGroupTeachersDto> getClassGroupAndTeacherSalary(String musicGroupId, SalarySettlementTypeEnum type, Integer classGroupId) throws Exception {
         //乐团班级及班级老师
-        List<ClassGroupTeachersDto> classGroupAndTeachers = getClassGroupAndTeachers(musicGroupId, "NORMAL,MIX,HIGH",classGroupId);
+        List<ClassGroupTeachersDto> classGroupAndTeachers = getClassGroupAndTeachers(musicGroupId, "NORMAL,MIX,HIGH", classGroupId);
 
         for (ClassGroupTeachersDto classGroupAndTeacher : classGroupAndTeachers) {
             //班级的教师列表
@@ -381,18 +391,30 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
         List<CourseListDto> courseListDtos = null;
-        int count = classGroupDao.countCoursePage(params);
+//        int count = classGroupDao.countCoursePage(params);
+        Integer vipCoursesNum = classGroupDao.countStudentVipCourses(userId);
+        Integer coursesNum = classGroupDao.countStudentMusicGroupCourses(userId);
+        int count = vipCoursesNum == null?0:vipCoursesNum + (coursesNum==null?0:coursesNum);
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
-            courseListDtos = classGroupDao.queryCoursePage(params);
+            courseListDtos = new ArrayList<>();
+            //获取学员所购买的vip课列表详情
+            List<CourseListDto> vipCourses = classGroupDao.queryStudentVipCourses(userId);
+            //获取vip课的学生列表
+            Set<String> vipIds = vipCourses.stream().map(CourseListDto::getMusicGroupId).collect(Collectors.toSet());
+            Map<String,String> vipStuNames = MapUtil.convertMybatisMap(classGroupDao.findVipStuNames(StringUtils.join(vipIds,",")));
+            //获取学员的乐团列表详情
+            courseListDtos.addAll(classGroupDao.queryStudentMusicGroupCourses(userId));
+            courseListDtos.addAll(vipCourses);
+            //获取所有教学点名称列表
+            Set<Integer> schoolIds = courseListDtos.stream().map(CourseListDto::getTeacherSchoolId).collect(Collectors.toSet());
+            Map<Integer,String> schoolNames = MapUtil.convertMybatisMap(schoolDao.queryNameByIds(StringUtils.join(schoolIds,",")));
+//            courseListDtos = classGroupDao.queryCoursePage(params);
             courseListDtos.forEach(e -> {
+                e.setAddress(schoolNames.get(e.getTeacherSchoolId()));
                 if (ClassGroupTypeEnum.VIP == e.getType()) {
-                    //获取vip课的学生名称列表
-                    List<String> vipStuNames = classGroupDao.findVipStuNames(e.getMusicGroupId());
-                    if (vipStuNames != null && vipStuNames.size() > 0) {
-                        e.setStudentNames(StringUtils.join(vipStuNames, ","));
-                    }
+                    e.setStudentNames(vipStuNames.get(e.getMusicGroupId()));
                     if (e.getOffLineClassesNum() > 0 && e.getOffLineClassesNum() <= 0) {
                         e.setClassMode(1);
                     } else if (e.getOffLineClassesNum() > 0 && e.getOffLineClassesNum() > 0) {
@@ -402,12 +424,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     } else {
                         e.setClassMode(0);
                     }
-                } else {
-                    //获取学员乐团课的续费状态
-                    MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, e.getMusicGroupId());
-                    if (musicGroupStudentFee != null) {
-                        e.setPaymentStatus(musicGroupStudentFee.getPaymentStatus());
-                    }
                 }
             });
         }
@@ -430,10 +446,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             //获取乐团群用户总数map
             List<Map<String, BigDecimal>> musicGroupUserNums = musicGroupDao.countMusicGroupUserNum(musicGroupIds);
             Map<String, BigDecimal> musicGroupUserNumMap = MapUtil.convertMybatisMap(musicGroupUserNums);
-            imGroupModels.forEach(e -> {
-                MusicGroup musicGroup = musicGroups.stream().filter(mg -> mg.getId().equals(e.getId())).findFirst().get();
+            MusicGroup musicGroup;
+            Set<Integer> teachers;
+            for (ImGroupModel e:imGroupModels) {
+                teachers = e.getName() == null?new HashSet<>():new HashSet(Arrays.asList(e.getName().split(",")));
+                musicGroup = musicGroups.stream().filter(mg -> mg.getId().equals(e.getId())).findFirst().get();
                 //获取教学老师id列表
-                Set<Integer> teachers = musicGroupDao.queryTeacherIds(e.getId());
+//                Set<Integer> teachers = musicGroupDao.queryTeacherIds(e.getId());
                 teachers.add(musicGroup.getTeamTeacherId());
                 teachers.add(musicGroup.getEducationalTeacherId());
                 teachers.add(musicGroup.getOperatorUserId());
@@ -443,7 +462,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 BigDecimal count = musicGroupUserNumMap.get(e.getId());
                 e.setCount(count == null ? 0 : count.intValue() + teachers.size());
                 e.setId("mg" + e.getId());
-            });
+            }
         } else {
             imGroupModels = new ArrayList<>();
         }
@@ -559,7 +578,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             throw new BizException("请登录");
         }
 
-        if(StringUtils.isBlank(type)){
+        if (StringUtils.isBlank(type)) {
             throw new BizException("请指定课程类型");
         }
 
@@ -714,67 +733,266 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public ClassGroup classGroupAdjust(ClassGroupAdjustDto classGroupAdjustDto) throws Exception {
+    public ClassGroup classGroupAdjust(ClassGroup4MixDto classGroup4MixDto) throws Exception {
         Date date = new Date();
-        MusicGroup musicGroup = musicGroupDao.get(classGroupAdjustDto.getMusicGroupId());
+        String musicGroupId = classGroup4MixDto.getMusicGroupId();
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
         if (musicGroup != null) {
             throw new Exception("乐团不存在");
         }
         Integer schoolId = musicGroup.getSchoolId();
 
-        List<ClassGroupStudentMapperDto> classGroupStudentMapperDtoList = classGroupAdjustDto.getClassGroupStudentMapperDtoList();
-        String subjectIdList = "";
-        String subjectNameList = "";
-        for (ClassGroupStudentMapperDto classGroupStudentMapperDto : classGroupStudentMapperDtoList) {
-            //1、永久调整,删除学生班级关联关系
-            if (classGroupAdjustDto.getType().equals(YesOrNoEnum.YES)) {
-                ClassGroupStudentMapper classStudentMapper = classGroupStudentMapperDao.query(classGroupStudentMapperDto.getClassGroupId(), classGroupStudentMapperDto.getUserId());
-                classStudentMapper.setStatus(ClassGroupStudentStatusEnum.QUIT);
-                classGroupStudentMapperDao.update(classStudentMapper);
-            } else { //临时删除学生对应时间段的课程
-                List<CourseSchedule> courseScheduleList = courseScheduleDao.findCourseScheduleByClassGroupIdAndDate(classGroupStudentMapperDto.getClassGroupId(), classGroupAdjustDto.getStartDate(), classGroupAdjustDto.getCourseTimes());
-                courseScheduleStudentPaymentDao.deleteStudentCourseSchedule(classGroupStudentMapperDto.getUserId(), courseScheduleList);
+        List<Integer> subjectIdSet = new ArrayList<>();
+
+        List<Integer> studentIdList = classGroup4MixDto.getStudents();
+        List<StudentRegistration> studentList = studentRegistrationService.findStudentListByUserIdList(musicGroupId, studentIdList);
+        for (StudentRegistration student : studentList) {
+            subjectIdSet.add(student.getSubjectId());
+        }
+        List<Subject> subjectList = subjectService.findBySubjectByIdList(subjectIdSet);
+
+        String subjectIds = "";
+        String subjectNames = "";
+        for (Subject subject : subjectList) {
+            subjectIds += subject.getId() + ",";
+            subjectNames += subject.getName() + "/";
+        }
+
+        subjectIds = subjectIds.substring(0, subjectIds.length() - 1);
+        subjectNames = subjectNames.substring(0, subjectNames.length() - 1);
+
+
+        //1、新建班级
+        ClassGroup classGroup = new ClassGroup();
+        classGroup.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
+        classGroup.setSubjectIdList(subjectIds);
+        classGroup.setName(classGroup4MixDto.getClassGroupName());
+        classGroup.setExpectStudentNum(studentList.size());
+        classGroup.setStudentNum(studentList.size());
+        classGroup.setType(ClassGroupTypeEnum.NORMAL);
+        classGroup.setDelFlag(YesOrNoEnum.NO);
+        classGroup.setCreateTime(date);
+        classGroup.setUpdateTime(date);
+        classGroupDao.insert(classGroup);
+
+
+        //2、将学生加入新班级(学生注册表,关联表
+        List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
+        for (StudentRegistration studentRegistration : studentList) {
+            studentRegistration.setClassGroupId(classGroup.getId());
+            studentRegistrationService.update(studentRegistration);
+
+            ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+            classGroupStudentMapper.setClassGroupId(classGroup.getId());
+            classGroupStudentMapper.setUserId(studentRegistration.getUserId());
+            classGroupStudentMapper.setCreateTime(date);
+            classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+
+            classGroupStudentMapperList.add(classGroupStudentMapper);
+        }
+        classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList);
+
+
+        //3、将老师加入关联关系
+        List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
+
+        //课时长度
+        long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getStartClassTime() + ":00"),
+                LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getEndClassTime() + ":00"))
+                .toMinutes();
+
+        for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
+            classGroupTeacherMapper.setClassGroupId(classGroup.getId());
+            classGroupTeacherMapper.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
+
+            List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), "SINGLE", musicGroup.getSettlementType());
+            BigDecimal salary = new BigDecimal("0");
+            for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherSalaryList) {
+                //对应基准课酬
+                BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacherSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
+                //基准课酬
+                if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+                    salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    break;
+                }
+                //阶梯课酬
+                if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
+                    salary = baseSalary;
+                    break;
+                }
             }
-            subjectIdList += classGroupStudentMapperDto.actualSubjectId() + ",";
-            subjectNameList += classGroupStudentMapperDto.getSubjectName() + "/";
+            classGroupTeacherMapper.setSalary(salary);
+        }
+        classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
+
+        //5、插入班级排课信息
+        LocalDateTime now = LocalDate.parse(classGroup4MixDto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
+
+        //计算每节课的课酬
+        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
+        List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
+        BigDecimal expectPrice = new BigDecimal("0");
+        int times = 0;
+        while (true) {
+            int dayOfWeek = now.getDayOfWeek().getValue();
+            if (classGroup4MixDto.getDayOfWeek().equals(dayOfWeek)) {
+                Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
+                Date classDate = Date.from(instant);
+                String startClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getStartClassTime() + ":00";
+                String endClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getEndClassTime() + ":00";
+
+                CourseSchedule courseSchedule = new CourseSchedule();
+                courseSchedule.setSchoolId(schoolId);
+                courseSchedule.setClassGroupId(classGroup.getId());
+                courseSchedule.setStatus(CourseStatusEnum.NOT_START);
+                courseSchedule.setClassDate(classDate);
+                courseSchedule.setStartClassTime(DateUtil.stringToDate(startClassTime));
+                courseSchedule.setEndClassTime(DateUtil.stringToDate(endClassTime));
+                courseSchedule.setCreateTime(date);
+                courseSchedule.setUpdateTime(date);
+                courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
+                courseSchedule.setType(CourseSchedule.CourseScheduleType.SINGLE);
+                courseSchedule.setName(subjectNames + "-" + CourseSchedule.CourseScheduleType.SINGLE.getMsg());
+
+                courseScheduleDao.insert(courseSchedule);
+
+                times++;
+
+                for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
+                    CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
+                    courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
+                    courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
+                    courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
+                    courseScheduleTeacherSalary.setExpectSalary(classGroupTeacherMapper.getSalary());
+                    courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
+                    courseScheduleTeacherSalary.setCreateTime(date);
+                    courseScheduleTeacherSalary.setUpdateTime(date);
+                    courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
+                }
+                for (StudentRegistration studentRegistration : studentList) {
+                    CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                    courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+                    courseScheduleStudentPayment.setUserId(studentRegistration.getUserId());
+                    courseScheduleStudentPayment.setExpectPrice(expectPrice);
+                    courseScheduleStudentPayment.setCreateTime(date);
+                    courseScheduleStudentPayment.setUpdateTime(date);
+                    courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+                    courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
+                }
+
+            }
+            now = now.plusDays(1);
+            if (classGroup4MixDto.getCourseTimes().equals(times)) {
+                break;
+            }
+        }
+        //老师结算表
+        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
+
+        //加入合奏班
+        ClassGroupRelation classGroupRelation = new ClassGroupRelation();
+        classGroupRelation.setClassGroupId(classGroup4MixDto.getMixClassGroupId());
+        classGroupRelation.setSubClassGroupId(classGroup.getId());
+        classGroupRelation.setCreateTime(date);
+        classGroupRelationService.insert(classGroupRelation);
+
+        //6、添加学生未上合奏课课程
+        List<CourseSchedule> noStartCourses = courseScheduleDao.findNoStartCoursesByClassGroupId(classGroup4MixDto.getMixClassGroupId());
+        for (CourseSchedule noStartCourse : noStartCourses) {
+            for (StudentRegistration studentRegistration : studentList) {
+                CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                courseScheduleStudentPayment.setCourseScheduleId(noStartCourse.getId());
+                courseScheduleStudentPayment.setUserId(studentRegistration.getUserId());
+                courseScheduleStudentPayment.setExpectPrice(expectPrice);
+                courseScheduleStudentPayment.setCreateTime(date);
+                courseScheduleStudentPayment.setUpdateTime(date);
+                courseScheduleStudentPayment.setClassGroupId(noStartCourse.getClassGroupId());
+                courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
+            }
+        }
+        //学生结算表
+        courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPaymentList);
+        return classGroup;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ClassGroup classGroupUpdate(ClassGroup4MixDto classGroup4MixDto) throws Exception {
+        Date date = new Date();
+        String musicGroupId = classGroup4MixDto.getMusicGroupId();
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if (musicGroup != null) {
+            throw new Exception("乐团不存在");
+        }
+        ClassGroup classgroup = classGroupDao.get(classGroup4MixDto.getClassGroupId());
+        if (classgroup == null) {
+            throw new Exception("班级不存在");
+        }
+
+        Integer schoolId = musicGroup.getSchoolId();
+
+        List<Integer> subjectIdSet = new ArrayList<>();
+
+        List<Integer> studentIdList = classGroup4MixDto.getStudents();
+        List<StudentRegistration> studentList = studentRegistrationService.findStudentListByUserIdList(musicGroupId, studentIdList);
+        for (StudentRegistration student : studentList) {
+            subjectIdSet.add(student.getSubjectId());
+        }
+        List<Subject> subjectList = subjectService.findBySubjectByIdList(subjectIdSet);
+
+        String subjectIds = "";
+        String subjectNames = "";
+        for (Subject subject : subjectList) {
+            subjectIds += subject.getId() + ",";
+            subjectNames += subject.getName() + "/";
         }
 
+        subjectIds = subjectIds.substring(0, subjectIds.length() - 1);
+        subjectNames = subjectNames.substring(0, subjectNames.length() - 1);
 
-        subjectIdList = subjectIdList.substring(0, subjectIdList.length() - 1);
 
-        //2、新建班级
+        //1、新建班级
         ClassGroup classGroup = new ClassGroup();
-        classGroup.setMusicGroupId(classGroupAdjustDto.getMusicGroupId());
-        classGroup.setSubjectIdList(subjectIdList);
-        classGroup.setName(classGroupAdjustDto.getClassGroupName());
-        classGroup.setExpectStudentNum(classGroupStudentMapperDtoList.size());
-        classGroup.setStudentNum(classGroupStudentMapperDtoList.size());
+        classGroup.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
+        classGroup.setSubjectIdList(subjectIds);
+        classGroup.setName(classGroup4MixDto.getClassGroupName());
+        classGroup.setExpectStudentNum(studentList.size());
+        classGroup.setStudentNum(studentList.size());
         classGroup.setType(ClassGroupTypeEnum.NORMAL);
         classGroup.setDelFlag(YesOrNoEnum.NO);
         classGroup.setCreateTime(date);
         classGroup.setUpdateTime(date);
         classGroupDao.insert(classGroup);
 
-        //3、将学生加入新班级(学生注册表,关联表
+
+        //2、将学生加入新班级(学生注册表,关联表
         List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
-        for (ClassGroupStudentMapperDto classGroupStudentMapperDto : classGroupStudentMapperDtoList) {
-            classGroupStudentMapperDto.setClassGroupId(classGroup.getId());
-            classGroupStudentMapperList.add(classGroupStudentMapperDto);
+        for (StudentRegistration studentRegistration : studentList) {
+            studentRegistration.setClassGroupId(classGroup.getId());
+            studentRegistrationService.update(studentRegistration);
+
+            ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+            classGroupStudentMapper.setClassGroupId(classGroup.getId());
+            classGroupStudentMapper.setUserId(studentRegistration.getUserId());
+            classGroupStudentMapper.setCreateTime(date);
+            classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+
+            classGroupStudentMapperList.add(classGroupStudentMapper);
         }
         classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList);
 
 
-        //4、将老师加入关联关系
-        List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroupAdjustDto.getClassGroupTeacherMapperList();
+        //3、将老师加入关联关系
+        List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
 
         //课时长度
-        long classCourseDuration = Duration.between(LocalDateTime.parse(classGroupAdjustDto.getStartDate() + " " + classGroupAdjustDto.getStartClassTime() + ":00"),
-                LocalDateTime.parse(classGroupAdjustDto.getStartDate() + " " + classGroupAdjustDto.getEndClassTime() + ":00"))
+        long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getStartClassTime() + ":00"),
+                LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getEndClassTime() + ":00"))
                 .toMinutes();
 
         for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
             classGroupTeacherMapper.setClassGroupId(classGroup.getId());
-            classGroupTeacherMapper.setMusicGroupId(classGroupAdjustDto.getMusicGroupId());
+            classGroupTeacherMapper.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
 
             List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), "SINGLE", musicGroup.getSettlementType());
             BigDecimal salary = new BigDecimal("0");
@@ -797,19 +1015,200 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
 
         //5、插入班级排课信息
-        LocalDateTime now = LocalDate.parse(classGroupAdjustDto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
+        LocalDateTime now = LocalDate.parse(classGroup4MixDto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
 
         //计算每节课的课酬
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
+        List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
+        BigDecimal expectPrice = new BigDecimal("0");
+        int times = 0;
+        while (true) {
+            int dayOfWeek = now.getDayOfWeek().getValue();
+            if (classGroup4MixDto.getDayOfWeek().equals(dayOfWeek)) {
+                Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
+                Date classDate = Date.from(instant);
+                String startClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getStartClassTime() + ":00";
+                String endClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getEndClassTime() + ":00";
+
+                CourseSchedule courseSchedule = new CourseSchedule();
+                courseSchedule.setSchoolId(schoolId);
+                courseSchedule.setClassGroupId(classGroup.getId());
+                courseSchedule.setStatus(CourseStatusEnum.NOT_START);
+                courseSchedule.setClassDate(classDate);
+                courseSchedule.setStartClassTime(DateUtil.stringToDate(startClassTime));
+                courseSchedule.setEndClassTime(DateUtil.stringToDate(endClassTime));
+                courseSchedule.setCreateTime(date);
+                courseSchedule.setUpdateTime(date);
+                courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
+                courseSchedule.setType(CourseSchedule.CourseScheduleType.SINGLE);
+                courseSchedule.setName(subjectNames + "-" + CourseSchedule.CourseScheduleType.SINGLE.getMsg());
+
+                courseScheduleDao.insert(courseSchedule);
+
+                times++;
+
+                for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
+                    CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
+                    courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
+                    courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
+                    courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
+                    courseScheduleTeacherSalary.setExpectSalary(classGroupTeacherMapper.getSalary());
+                    courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
+                    courseScheduleTeacherSalary.setCreateTime(date);
+                    courseScheduleTeacherSalary.setUpdateTime(date);
+                    courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
+                }
+                for (StudentRegistration studentRegistration : studentList) {
+                    CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                    courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+                    courseScheduleStudentPayment.setUserId(studentRegistration.getUserId());
+                    courseScheduleStudentPayment.setExpectPrice(expectPrice);
+                    courseScheduleStudentPayment.setCreateTime(date);
+                    courseScheduleStudentPayment.setUpdateTime(date);
+                    courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+                    courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
+                }
+
+            }
+            now = now.plusDays(1);
+            if (classGroup4MixDto.getCourseTimes().equals(times)) {
+                break;
+            }
+        }
+        //老师结算表
+        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
+
+        //加入合奏班
+        ClassGroupRelation classGroupRelation = new ClassGroupRelation();
+        classGroupRelation.setClassGroupId(classGroup4MixDto.getClassGroupId());
+        classGroupRelation.setSubClassGroupId(classGroup.getId());
+        classGroupRelation.setCreateTime(date);
+        classGroupRelationService.insert(classGroupRelation);
+
+        //6、添加学生未上合奏课课程
+        List<CourseSchedule> noStartCourses = courseScheduleDao.findNoStartCoursesByClassGroupId(classGroup4MixDto.getClassGroupId());
+        for (CourseSchedule noStartCourse : noStartCourses) {
+            for (StudentRegistration studentRegistration : studentList) {
+                CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                courseScheduleStudentPayment.setCourseScheduleId(noStartCourse.getId());
+                courseScheduleStudentPayment.setUserId(studentRegistration.getUserId());
+                courseScheduleStudentPayment.setExpectPrice(expectPrice);
+                courseScheduleStudentPayment.setCreateTime(date);
+                courseScheduleStudentPayment.setUpdateTime(date);
+                courseScheduleStudentPayment.setClassGroupId(noStartCourse.getClassGroupId());
+                courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
+            }
+        }
+        //学生结算表
+        courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPaymentList);
+        return classGroup;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ClassGroup classGroupSnap(ClassGroup4MixDto classGroup4MixDto) throws Exception {
+        Date date = new Date();
+        String musicGroupId = classGroup4MixDto.getMusicGroupId();
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if (musicGroup != null) {
+            throw new Exception("乐团不存在");
+        }
+        Integer schoolId = musicGroup.getSchoolId();
+
+        List<Integer> subjectIdSet = new ArrayList<>();
 
+        List<Integer> studentIdList = classGroup4MixDto.getStudents();
+        List<StudentRegistration> studentList = studentRegistrationService.findStudentListByUserIdList(musicGroupId, studentIdList);
+        for (StudentRegistration student : studentList) {
+            subjectIdSet.add(student.getSubjectId());
+        }
+        List<Subject> subjectList = subjectService.findBySubjectByIdList(subjectIdSet);
+
+        String subjectIds = "";
+        String subjectNames = "";
+        for (Subject subject : subjectList) {
+            subjectIds += subject.getId() + ",";
+            subjectNames += subject.getName() + "/";
+        }
+
+        subjectIds = subjectIds.substring(0, subjectIds.length() - 1);
+        subjectNames = subjectNames.substring(0, subjectNames.length() - 1);
+
+
+        //1、新建班级
+        ClassGroup classGroup = new ClassGroup();
+        classGroup.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
+        classGroup.setSubjectIdList(subjectIds);
+        classGroup.setName(classGroup4MixDto.getClassGroupName());
+        classGroup.setExpectStudentNum(studentList.size());
+        classGroup.setStudentNum(studentList.size());
+        classGroup.setType(ClassGroupTypeEnum.SNAP);
+        classGroup.setDelFlag(YesOrNoEnum.NO);
+        classGroup.setCreateTime(date);
+        classGroup.setUpdateTime(date);
+        classGroupDao.insert(classGroup);
+
+
+        //2、将学生加入新班级,关联表
+        List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
+        for (StudentRegistration studentRegistration : studentList) {
+            ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+            classGroupStudentMapper.setClassGroupId(classGroup.getId());
+            classGroupStudentMapper.setUserId(studentRegistration.getUserId());
+            classGroupStudentMapper.setCreateTime(date);
+            classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+
+            classGroupStudentMapperList.add(classGroupStudentMapper);
+        }
+        classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList);
+
+        //3、将老师加入关联关系
+        List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
+
+        //课时长度
+        long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getStartClassTime() + ":00"),
+                LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getEndClassTime() + ":00"))
+                .toMinutes();
+
+        for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
+            classGroupTeacherMapper.setClassGroupId(classGroup.getId());
+            classGroupTeacherMapper.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
+
+            List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), "SINGLE", musicGroup.getSettlementType());
+            BigDecimal salary = new BigDecimal("0");
+            for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherSalaryList) {
+                //对应基准课酬
+                BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacherSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
+                //基准课酬
+                if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+                    salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    break;
+                }
+                //阶梯课酬
+                if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
+                    salary = baseSalary;
+                    break;
+                }
+            }
+            classGroupTeacherMapper.setSalary(salary);
+        }
+        classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
+
+        //5、插入班级排课信息
+        LocalDateTime now = LocalDate.parse(classGroup4MixDto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
+
+        //计算每节课的课酬
+        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
+        List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
+        BigDecimal expectPrice = new BigDecimal("0");
         int times = 0;
         while (true) {
             int dayOfWeek = now.getDayOfWeek().getValue();
-            if (classGroupAdjustDto.getDayOfWeek().equals(dayOfWeek)) {
+            if (classGroup4MixDto.getDayOfWeek().equals(dayOfWeek)) {
                 Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
                 Date classDate = Date.from(instant);
-                String startClassTime = DateUtil.getDate(classDate) + " " + classGroupAdjustDto.getStartClassTime() + ":00";
-                String endClassTime = DateUtil.getDate(classDate) + " " + classGroupAdjustDto.getEndClassTime() + ":00";
+                String startClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getStartClassTime() + ":00";
+                String endClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getEndClassTime() + ":00";
 
                 CourseSchedule courseSchedule = new CourseSchedule();
                 courseSchedule.setSchoolId(schoolId);
@@ -822,7 +1221,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 courseSchedule.setUpdateTime(date);
                 courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
                 courseSchedule.setType(CourseSchedule.CourseScheduleType.SINGLE);
-                courseSchedule.setName(subjectNameList + "-" + CourseSchedule.CourseScheduleType.SINGLE.getMsg());
+                courseSchedule.setName(subjectNames + "-" + CourseSchedule.CourseScheduleType.SINGLE.getMsg());
 
                 courseScheduleDao.insert(courseSchedule);
 
@@ -839,14 +1238,35 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     courseScheduleTeacherSalary.setUpdateTime(date);
                     courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
                 }
+                for (StudentRegistration studentRegistration : studentList) {
+                    CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                    courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+                    courseScheduleStudentPayment.setUserId(studentRegistration.getUserId());
+                    courseScheduleStudentPayment.setExpectPrice(expectPrice);
+                    courseScheduleStudentPayment.setCreateTime(date);
+                    courseScheduleStudentPayment.setUpdateTime(date);
+                    courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+                    courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
+                }
 
             }
             now = now.plusDays(1);
-            if (classGroupAdjustDto.getCourseTimes().equals(times)) {
+            if (classGroup4MixDto.getCourseTimes().equals(times)) {
                 break;
             }
         }
+        //加入合奏班
+        ClassGroupRelation classGroupRelation = new ClassGroupRelation();
+        classGroupRelation.setClassGroupId(classGroup4MixDto.getMixClassGroupId());
+        classGroupRelation.setSubClassGroupId(classGroup.getId());
+        classGroupRelation.setCreateTime(date);
+        classGroupRelationService.insert(classGroupRelation);
+
+        //老师结算表
         courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
+
+        //学生结算表
+        courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPaymentList);
         return classGroup;
     }
 
@@ -864,14 +1284,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             Set<Integer> classGroups = dataList.stream().map(e -> e.getClassGroupId()).collect(Collectors.toSet());
             String join = StringUtils.join(classGroups, ",");
             //获取主教老师
-            Map<Integer,String> masterTeachers = MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "BISHOP"));
+            Map<Integer, String> masterTeachers = MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "BISHOP"));
             //获取助教老师
-            Map<Integer,String> subTeachers = MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "TEACHING"));
+            Map<Integer, String> subTeachers = MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "TEACHING"));
             //获取在读人数
-            Map<Integer,String> studyNums = MapUtil.convertMybatisMap(classGroupDao.countStudyNum(join));
+            Map<Integer, String> studyNums = MapUtil.convertMybatisMap(classGroupDao.countStudyNum(join));
             //获取退班人数
-            Map<Integer,String> quitNums = MapUtil.convertMybatisMap(classGroupDao.countQuitNum(join));
-            dataList.forEach(e->{
+            Map<Integer, String> quitNums = MapUtil.convertMybatisMap(classGroupDao.countQuitNum(join));
+            dataList.forEach(e -> {
                 e.setMasterTeacher(masterTeachers.get(e.getClassGroupId()));
                 e.setSubTeacher(subTeachers.get(e.getClassGroupId()));
                 e.setStudyNum(studyNums.get(e.getClassGroupId()));
@@ -902,7 +1322,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             //所有课程编号的列表
             List<Integer> couseScheduleIds = dataList.stream().map(MusicGroupCourseScheduleDto::getCourseScheduleId).distinct().collect(Collectors.toList());
             //获取合奏班名称
-            Map<Integer,String> classGroupNames = MapUtil.convertMybatisMap(classGroupDao.findNameById(mixClassGroupIdsStr));
+            Map<Integer, String> classGroupNames = MapUtil.convertMybatisMap(classGroupDao.findNameById(mixClassGroupIdsStr));
 
             //主教老师
             List<CourseScheduleTeacherSalary> bishopTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "BISHOP");
@@ -910,23 +1330,23 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             //助教老师
             List<CourseScheduleTeacherSalary> teachingTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "TEACHING");
-            Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleTeachingTeacherMaps=teachingTeachers.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
+            Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleTeachingTeacherMaps = teachingTeachers.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
 
-            dataList.forEach(e->{
+            dataList.forEach(e -> {
                 e.setMixClassGroupName(classGroupNames.get(e.getMixClassGroupId()));
                 CourseScheduleTeacherSalary currentBishopTeacher = courseScheduleBishopTeacherMaps.get(e.getCourseScheduleId().longValue());
-                if(!Objects.isNull(currentBishopTeacher)){
+                if (!Objects.isNull(currentBishopTeacher)) {
                     e.setMasterTeacherId(currentBishopTeacher.getUserId());
                     e.setMasterTeacherName(currentBishopTeacher.getUserName());
                     e.setTeacherNum(1);
                 }
 
                 List<CourseScheduleTeacherSalary> currentCourseTeachingTeachers = courseScheduleTeachingTeacherMaps.get(e.getCourseScheduleId().longValue());
-                if(CollectionUtils.isEmpty(currentCourseTeachingTeachers)){
+                if (CollectionUtils.isEmpty(currentCourseTeachingTeachers)) {
                     e.setTeachingTeachers(new ArrayList<>());
-                }else{
+                } else {
                     e.setTeachingTeachers(currentCourseTeachingTeachers);
-                    e.setTeacherNum(e.getTeacherNum()==null?0:e.getTeacherNum() + currentCourseTeachingTeachers.size());
+                    e.setTeacherNum(e.getTeacherNum() == null ? 0 : e.getTeacherNum() + currentCourseTeachingTeachers.size());
                 }
 
             });
@@ -938,9 +1358,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         return pageInfo;
     }
 
-	@Override
-	public boolean batchIncreaseClassTimes(List<Integer> classGroupList) {
-		classGroupDao.batchIncreaseClassTimes(classGroupList);
-		return true;
-	}
+    @Override
+    public boolean batchIncreaseClassTimes(List<Integer> classGroupList) {
+        classGroupDao.batchIncreaseClassTimes(classGroupList);
+        return true;
+    }
 }

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

@@ -136,7 +136,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                         List<StudentRegistration> musicGroupStudentRegistrationList = studentRegistrationService.findStudentListByIdList(e.getRegisterIdList());
                         for (StudentRegistration studentRegistration : musicGroupStudentRegistrationList) {
                             studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
-                            studentRegistration.setPaymentStatus(YesOrNoEnum.NO);
+                            studentRegistration.setPaymentStatus(PaymentStatusEnum.NO);
                             studentRegistration.setMusicGroupId(musicGroupId);
                             studentRegistration.setSubjectId(e.getSubjectId());
                             studentRegistration.setActualSubjectId(e.getSubjectId());
@@ -525,7 +525,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         List<MusicGroup> musicGroupList = musicGroupPageInfo.getRows();
         // 获取学校编号列表
         Set<Integer> schoolIds = musicGroupList.stream().map(e -> e.getSchoolId()).collect(Collectors.toSet());
-        List<Map<Integer, String>> schoolNames = schoolDao.queryNameByIds(schoolIds);
+        List<Map<Integer, String>> schoolNames = schoolDao.queryNameByIds(StringUtils.join(schoolIds,","));
         // 获取相关学校名称map
         Map<Integer, String> schoolNameMap = MapUtil.convertMybatisMap(schoolNames);
 
@@ -601,6 +601,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
+    public List<MusicGroup> queryListByIds(Set<String> musicGroupIds) {
+        return musicGroupDao.queryListByIds(musicGroupIds);
+    }
+
+    @Override
     public List<CourseScheduleTeachersDto> queryTeacherSalary(Integer courseScheduleId) {
         return courseScheduleTeacherSalaryDao.queryTeacherSalary(courseScheduleId);
     }

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

@@ -384,7 +384,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             //学生报名表
             studentRegistrationDao.insert(studentRegistration);
             if (studentRegistration.getClassGroupId() != null) {
-                ClassGroup classGroup = classGroupDao.get(Integer.parseInt(studentRegistration.getClassGroupId()));
+                ClassGroup classGroup = classGroupDao.get(studentRegistration.getClassGroupId());
                 if (classGroup != null) {
                     if (classGroup.getMusicGroupId().equals(studentRegistration.getMusicGroupId())) {
                         throw new Exception("班级录入错误");
@@ -398,7 +398,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                     throw new Exception("班级不存在");
                 }
                 //新增班级学生关系
-                classGroupStudentMapperDao.insert(new ClassGroupStudentMapper(Integer.parseInt(studentRegistration.getClassGroupId()), userId));
+                classGroupStudentMapperDao.insert(new ClassGroupStudentMapper(studentRegistration.getClassGroupId(), userId));
                 //乐团学生费用表
                 MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
                 //获取当前月
@@ -447,7 +447,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         //成功报名状态变更
         StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(studentPaymentOrder.getUserId(), studentPaymentOrder.getMusicGroupId());
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS)) {
-            studentRegistration.setPaymentStatus(YesOrNoEnum.YES);
+            studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
             studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
             studentRegistrationDao.update(studentRegistration);
         }
@@ -488,4 +488,16 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public List<StudentRegistration> findMusicGroupStudent(String musicGroupId, Integer actualSubjectId) {
         return studentRegistrationDao.findMusicGroupStudent(musicGroupId,actualSubjectId);
     }
+
+    @Override
+    public List<StudentRegistration> findStudentListByUserIdList(String musicGroupId, List<Integer> userIdList) {
+        return studentRegistrationDao.findStudentListByUserIdList(musicGroupId,userIdList);
+    }
+
+    @Override
+    public int openPayment(Long id) {
+        StudentRegistration studentRegistration = studentRegistrationDao.get(id);
+        studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
+        return studentRegistrationDao.update(studentRegistration);
+    }
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java

@@ -160,4 +160,9 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  imple
     public List<Subject> findSubSubjects() {
         return subjectDao.findSubSubjects();
     }
+
+    @Override
+    public List<Subject> findBySubjectByIdList(List<Integer> subjectIdList) {
+        return subjectDao.findBySubjectByIdList(subjectIdList);
+    }
 }

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -17,7 +17,6 @@ import com.ym.mec.biz.dal.page.MusicGroupTeacherAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherQueryInfo;
 import com.ym.mec.biz.service.ContractService;
-import com.ym.mec.biz.service.SysUserTsignService;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -134,9 +133,10 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 			List<Map<String, BigDecimal>> musicGroupUserNums = musicGroupDao.countMusicGroupUserNum(musicGroupIds);
 			Map<String, BigDecimal> musicGroupUserNumMap = MapUtil.convertMybatisMap(musicGroupUserNums);
 			imGroupModels.forEach(e -> {
+				Set<Integer> teachers = e.getName() == null?new HashSet<>():new HashSet(Arrays.asList(e.getName().split(",")));
 				MusicGroup musicGroup = musicGroups.stream().filter(mg -> mg.getId().equals(e.getId())).findFirst().get();
 				//获取教学老师id列表
-				Set<Integer> teachers = musicGroupDao.queryTeacherIds(e.getId());
+//				Set<Integer> teachers = musicGroupDao.queryTeacherIds(e.getId());
 				teachers.add(musicGroup.getTeamTeacherId());
 				teachers.add(musicGroup.getEducationalTeacherId());
 				teachers.add(musicGroup.getOperatorUserId());
@@ -286,7 +286,8 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 			List<Map<Integer,Long>> demoNumList =  demoGroupDao.countTeacherDemoGroupNum(teacherIds);
 			Map<Integer,Long> demoNumMap = MapUtil.convertMybatisMap(demoNumList);
 			rows.forEach(e->{
-				e.setSubjectName(subjectDao.findBySubIds(e.getSubjectId()));
+//				e.setSubjectName(subjectDao.findBySubIds(e.getSubjectId()));
+				e.setSubjectName(Arrays.asList(e.getSplitSubjectName().split(",")));
 				Long num = vipNumMap.get(e.getId());
 				e.setVipNum(num == null?0:num.intValue());
 				Long demoNum = demoNumMap.get(e.getId());

+ 66 - 20
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -233,20 +233,8 @@
         AND del_flag_ = 0
     </select>
 
-    <resultMap type="com.ym.mec.biz.dal.dto.CourseListDto" id="CourseListDto">
-        <result column="music_group_name_" property="musicGroupName"/>
-        <result column="music_group_id_" property="musicGroupId"/>
-        <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result column="total_class_times_" property="totalClassTimes"/>
-        <result column="teach_mode_" property="teachMode"/>
-        <result column="current_class_times_" property="currentClassTimes"/>
-        <result column="address_" property="address"/>
-        <result column="single_class_minutes_" property="singleClassMinutes"/>
-        <result column="online_classes_num_" property="onlineClassesNum"/>
-        <result column="offline_classes_num_" property="offLineClassesNum"/>
-    </resultMap>
     <select id="queryCoursePage" resultMap="CourseListDto">
-        SELECT * FROM (
+        <!--SELECT * FROM (
         SELECT cg.type_,s.address_,mg.name_ music_group_name_,
         cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_
         music_group_id_,
@@ -272,7 +260,7 @@
         LEFT JOIN school ts ON vg.teacher_school_id_ = ts.id_
         WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
         ORDER BY a.create_time_ DESC
-        <include refid="global.limit"/>
+        <include refid="global.limit"/>-->
     </select>
 
     <resultMap id="imGroupModel" type="com.ym.mec.common.entity.ImGroupModel">
@@ -280,6 +268,7 @@
         <result column="name_" property="name"/>
         <result column="student_num_" property="count"/>
         <result column="img_" property="img"/>
+        <result column="teacher_ids_" property="teacherIds"/>
     </resultMap>
     <select id="queryUserGroups" resultMap="imGroupModel">
         SELECT cg.id_,cg.name_,cg.student_num_,cg.img_ FROM class_group_student_mapper cgsm
@@ -294,11 +283,13 @@
             </if>
         </where>
     </select>
-    <select id="findVipStuNames" resultType="java.lang.String">
-        SELECT su.username_ FROM vip_group_class_group_mapper vgcgm
-        LEFT JOIN class_group_student_mapper cgsm ON vgcgm.class_group_id_ = cgsm.class_group_id_
+    <select id="findVipStuNames" resultType="map">
+        SELECT cg.music_group_id_ 'key',GROUP_CONCAT(su.real_name_) 'value'
+        FROM class_group cg
+        LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
         LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
-        WHERE vgcgm.vip_group_id_ = #{musicGroupId}
+        WHERE FIND_IN_SET(cg.music_group_id_,#{vipIds}) AND cg.type_ = 'VIP'
+        GROUP BY cg.music_group_id_
     </select>
     <select id="findGroupUsers" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.ImUserModel">
         SELECT su.id_,su.avatar_,su.username_ FROM class_group_student_mapper cgsm
@@ -351,7 +342,7 @@
         <include refid="global.limit"/>
     </select>
     <select id="countCoursePage" resultType="java.lang.Integer">
-        SELECT COUNT(id_) FROM (
+        /*SELECT COUNT(id_) FROM (
         SELECT cg.type_,s.address_,mg.name_ music_group_name_,
         cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_
         music_group_id_,cg.create_time_,cg.id_
@@ -369,7 +360,7 @@
         LEFT JOIN vip_group_class_group_mapper vgcgm ON vgcgm.class_group_id_ = cgsm.class_group_id_
         LEFT JOIN vip_group vg ON vg.id_ = vgcgm.vip_group_id_
         LEFT JOIN school ts ON vg.teacher_school_id_ = ts.id_
-        WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
+        WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a*/
     </select>
 
     <select id="countClassStudent" resultType="int">
@@ -648,6 +639,61 @@
         where cg.music_group_id_ = #{musicGroupId} AND cgsm.user_id_ = #{userId} AND cg.del_flag_ = 0
     </select>
 
+    <resultMap type="com.ym.mec.biz.dal.dto.CourseListDto" id="CourseListDto">
+        <result column="class_group_id_" property="classGroupId"/>
+        <result column="music_group_name_" property="musicGroupName"/>
+        <result column="real_name_" property="teacherName"/>
+        <result column="music_group_id_" property="musicGroupId"/>
+        <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="total_class_times_" property="totalClassTimes"/>
+        <!--<result column="teach_mode_" property="teachMode"/>-->
+        <result column="current_class_times_" property="currentClassTimes"/>
+        <!--<result column="address_" property="address"/>-->
+        <result column="single_class_minutes_" property="singleClassMinutes"/>
+        <result column="online_classes_num_" property="onlineClassesNum"/>
+        <result column="offline_classes_num_" property="offLineClassesNum"/>
+        <result column="teacher_school_id_" property="teacherSchoolId"/>
+        <result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+    </resultMap>
+    <select id="queryStudentVipCourses" resultMap="CourseListDto">
+        SELECT cg.id_ class_group_id_,vg.name_ music_group_name_,su.real_name_,
+        cg.current_class_times_,cg.total_class_times_,vg.single_class_minutes_,
+        IF(vg.online_classes_num_ IS NULL,0,vg.online_classes_num_) online_classes_num_,
+        IF(vg.offline_classes_num_ IS NULL,0,vg.offline_classes_num_) offline_classes_num_,
+        vg.teacher_school_id_,vg.id_ music_group_id_,cg.type_
+        FROM vip_group vg
+        LEFT JOIN class_group cg ON cg.music_group_id_ = vg.id_
+        LEFT JOIN sys_user su ON vg.user_id_ = su.id_
+        LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+        WHERE cg.type_ = 'VIP' AND cgsm.user_id_ = #{userId}
+    </select>
+    <select id="queryStudentMusicGroupCourses" resultMap="CourseListDto">
+        SELECT mg.id_ music_group_id_,mg.name_ music_group_name_,mgsf.payment_status_,
+        SUM(cg.current_class_times_) current_class_times_,
+        SUM(cg.total_class_times_) total_class_times_,mg.school_id_ teacher_school_id_
+        FROM music_group mg
+        LEFT JOIN class_group cg ON cg.music_group_id_ = mg.id_
+        LEFT JOIN music_group_student_fee_ mgsf ON mgsf.music_group_id_ = mg.id_
+        LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+        WHERE cgsm.user_id_ = #{userId} AND (cg.type_ = 'NORMAL' OR cg.type_ = 'MIX')
+        GROUP BY mg.id_,mgsf.id_
+    </select>
+    <select id="countStudentVipCourses" resultType="java.lang.Integer">
+        SELECT COUNT(vg.id_)
+        FROM vip_group vg
+        LEFT JOIN class_group cg ON cg.music_group_id_ = vg.id_
+        LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+        WHERE cg.type_ = 'VIP' AND cgsm.user_id_ = #{userId}
+    </select>
+    <select id="countStudentMusicGroupCourses" resultType="java.lang.Integer">
+        SELECT COUNT(DISTINCT mg.id_)
+        FROM music_group mg
+        LEFT JOIN class_group cg ON cg.music_group_id_ = mg.id_
+        LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+        WHERE cgsm.user_id_ = #{userId} AND (cg.type_ = 'NORMAL' OR cg.type_ = 'MIX')
+        GROUP BY mg.id_
+    </select>
+
     <!-- 增加实际学生人数 -->
     <update id="addStudentNum" parameterType="com.ym.mec.biz.dal.entity.ClassGroup">
         UPDATE class_group SET student_num_ = student_num_+1,update_time_=#{updateTime} WHERE id_ = #{id} AND

+ 9 - 4
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -50,7 +50,7 @@
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO music_group
 		(id_,name_,organ_id_,school_id_,apply_expire_date_,team_teacher_id_,educational_teacher_id_,charge_type_id_,course_form_,create_time_,update_time_,status_,
-		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,cooperation_organ_id_,enlightenment_course_time_,parent_meeting_time_,img_,director_user_id_,)
+		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,cooperation_organ_id_,enlightenment_course_time_,parent_meeting_time_,img_,director_user_id_)
 		VALUES(#{id},#{name},#{organId},#{schoolId},#{applyExpireDate},#{teamTeacherId},#{educationalTeacherId},#{chargeTypeId},#{courseForm},now(),now(),
 		#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{billStartDate},#{improventClassesNum},#{enrollClasses},#{paymentExpireDate},
 		#{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime},#{img},#{directorUserId})
@@ -248,17 +248,22 @@
 		WHERE cg.music_group_id_ = #{musicGroupId} GROUP BY su.id_
 	</select>
 	<select id="queryTeacherGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
-		SELECT mg.id_,mg.name_,mg.img_ FROM music_group mg
-		WHERE (team_teacher_id_ = #{userId} OR educational_teacher_id_ = #{userId} OR operator_user_id_ = #{userId} OR director_user_id_ = #{userId})
+		SELECT mg.id_,mg.name_,mg.img_,GROUP_CONCAT(DISTINCT cgtm.user_id_) teacher_ids_
+		FROM music_group mg
+		LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
+		LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
+		WHERE (team_teacher_id_ = #{userId} OR educational_teacher_id_ = #{userId}
+		OR operator_user_id_ = #{userId} OR director_user_id_ = #{userId})
 		<if test="search != null and search != ''">
 			AND mg.name_ LIKE CONCAT('%',#{search},'%')
 		</if>
+		GROUP BY mg.id_
 	</select>
 
 	<select id="queryTeacherIds" resultType="java.lang.Integer">
 		SELECT DISTINCT cgtm.user_id_ FROM class_group cg
 		LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
-		WHERE cg.music_group_id_ = #{id}
+		WHERE cg.music_group_id_ = #{musicGroupId}
 	</select>
     <select id="countPayNum" resultType="java.util.Map" parameterType="list">
 		SELECT cg.music_group_id_ `key`,COUNT(cgsm.id_) `value` FROM class_group cg

+ 2 - 5
mec-biz/src/main/resources/config/mybatis/SchoolMapper.xml

@@ -114,11 +114,8 @@
             </if>
         </where>
     </select>
-    <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
-        select id_ `key`,name_ `value` FROM school s WHERE id_ IN
-        <foreach item="item" index="index" collection="schoolIds" open="(" separator="," close=")">
-            #{item}
-        </foreach>
+    <select id="queryNameByIds" resultType="java.util.Map" >
+        select id_ `key`,name_ `value` FROM school s WHERE FIND_IN_SET(id_,#{schoolIds})
     </select>
     
     <select id="findByUserId" resultMap="School">

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -355,4 +355,12 @@
             #{item.remark},now(),now(),#{item.parentsName},#{item.parentsCompany},#{item.paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.subjectId},#{item.musicGroupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
         </foreach>
     </insert>
+
+    <!-- 查询乐团userIdList的学生 -->
+    <select id="findStudentListByUserIdList" resultMap="StudentRegistration">
+        SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND user_id_ IN
+        <foreach collection="userIdList" item="userId" index="index" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+    </select>
 </mapper>

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

@@ -147,4 +147,11 @@
             </if>
         </where>
     </sql>
+
+    <select id="findBySubjectByIdList" resultMap="Subject">
+        SELECT * FROM `subject` WHERE id_ IN
+        <foreach collection="subjectIdList" item="subjectId" open="(" close=")" separator=",">
+            #{subjectId}
+        </foreach>
+    </select>
 </mapper>

+ 5 - 2
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -44,7 +44,7 @@
         <result column="birthdate_" property="birthdate"/>
         <result column="email_" property="email"/>
         <result column="im_token_" property="imToken"/>
-        <collection property="subjectName" ofType="string" column="subject_name_"/>
+        <result column="subject_name_" property="splitSubjectName"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -198,10 +198,13 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="Teacher" parameterType="map">
-        SELECT t.id_,su.real_name_,su.lock_flag_,t.subject_id_,su.phone_,su.organ_id_,t.job_nature_,t.is_probation_period_
+        SELECT t.id_,su.real_name_,su.lock_flag_,t.subject_id_,su.phone_,su.organ_id_,
+        t.job_nature_,t.is_probation_period_,GROUP_CONCAT(s.name_) subject_name_
         FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
+        LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
         WHERE su.user_type_ LIKE '%TEACHER%' AND su.del_flag_ = 0
         <include refid="queryPageMap"/>
+        GROUP BY t.id_
         <include refid="global.limit"/>
     </select>
 

+ 9 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupModel.java

@@ -7,6 +7,7 @@ public class ImGroupModel {
     private ImGroupMember[] members;
     //群名称
     private String name;
+    private String teacherIds;
     private String img;
     private Integer minute;
     private Integer count;
@@ -26,6 +27,14 @@ public class ImGroupModel {
         this.name = name;
     }
 
+    public String getTeacherIds() {
+        return teacherIds;
+    }
+
+    public void setTeacherIds(String teacherIds) {
+        this.teacherIds = teacherIds;
+    }
+
     public Integer getCount() {
         return count;
     }

+ 8 - 7
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.dto.ClassGroup4MixDto;
 import com.ym.mec.biz.dal.dto.ClassGroupAdjustDto;
 import com.ym.mec.biz.dal.dto.HighClassGroupDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
@@ -203,17 +204,17 @@ public class ClassGroupController extends BaseController {
     @ApiOperation(value = "调整班级(添加班级)")
     @PostMapping("/revisionAddClassGroup")
     @PreAuthorize("@pcs.hasPermissions('classGroup/revisionAddClassGroup')")
-    @ApiImplicitParams({@ApiImplicitParam(name = "classGroupIds", value = "班级编号,号分割", required = true, dataType = "String")})
-    public HttpResponseResult revisionAddClassGroup(@RequestBody ClassGroupAdjustDto classGroupAdjustDto) throws Exception {
-        return succeed(classGroupService.classGroupAdjust(classGroupAdjustDto));
+    @ApiImplicitParams({@ApiImplicitParam(name = "ClassGroup4MixDto", value = "添加班级结构", required = true, dataType = "String")})
+    public HttpResponseResult revisionAddClassGroup(@RequestBody ClassGroup4MixDto classGroup4MixDto) throws Exception {
+        return succeed(classGroupService.classGroupAdjust(classGroup4MixDto));
     }
 
     @ApiOperation(value = "调整班级(临时调整)")
     @PostMapping("/revisionClassGroup")
-    @PreAuthorize("@pcs.hasPermissions('classGroup/revisionClassGroup')")
-    @ApiImplicitParams({@ApiImplicitParam(name = "classGroupIds", value = "班级编号,号分割", required = true, dataType = "String")})
-    public HttpResponseResult revisionClassGroup(@RequestBody ClassGroupAdjustDto classGroupAdjustDto) throws Exception {
-        return succeed(classGroupService.classGroupAdjust(classGroupAdjustDto));
+    @PreAuthorize("@pcs.hasPermissions('classGroup/classGroupSnap')")
+    @ApiImplicitParams({@ApiImplicitParam(name = "classGroupIds", value = "添加班级结构", required = true, dataType = "String")})
+    public HttpResponseResult revisionClassGroup(@RequestBody ClassGroup4MixDto classGroup4MixDto) throws Exception {
+        return succeed(classGroupService.classGroupSnap(classGroup4MixDto));
     }
 
 }

+ 0 - 5
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupStudentController.java

@@ -1,9 +1,5 @@
 package com.ym.mec.web.controller;
 
-
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.service.ClassGroupStudentMapperService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -12,7 +8,6 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 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;
 

+ 13 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -13,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Set;
+
 @RequestMapping("musicGroup")
 @Api(tags = "乐团服务")
 @RestController
@@ -65,4 +67,15 @@ public class MusicGroupController extends BaseController {
         }
         return succeed(musicGroupService.createGroup(subFeeSettingDto,sysUser.getId()));
     }
+
+    @ApiOperation(value = "根据乐团ids获取乐团列表")
+    @PostMapping("/queryListByIds")
+    @PreAuthorize("@pcs.hasPermissions('musicGroup/queryListByIds')")
+    public Object queryListByIds(@RequestBody Set<String> musicGroupIds){
+        if(musicGroupIds.isEmpty()){
+            return failed("参数校验失败");
+        }
+        return succeed(musicGroupService.queryListByIds(musicGroupIds));
+    }
+
 }

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

@@ -115,4 +115,12 @@ public class StudentRegistrationController extends BaseController {
         return succeed(studentRegistrationService.findMusicGroupNoClassGroupStudent(musicGroupId, actualSubjectId));
     }
 
+    @ApiOperation(value = "开启缴费")
+    @PostMapping("/openPayment")
+    @PreAuthorize("@pcs.hasPermissions('studentRegistration/openPayment')")
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "报名id", required = true, dataType = "int")})
+    public HttpResponseResult openPayment(Long id) {
+        return succeed(studentRegistrationService.openPayment(id));
+    }
+
 }