浏览代码

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

yonge 5 年之前
父节点
当前提交
f9899b01f9
共有 34 个文件被更改,包括 577 次插入240 次删除
  1. 11 17
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/TokenController.java
  2. 69 65
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java
  3. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java
  4. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java
  5. 92 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroupAdjustDto.java
  6. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroupStudentMapperDto.java
  7. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentCourseHomeworkCommentDto.java
  8. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassGroupDto.java
  9. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherHomeworkListDto.java
  10. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java
  11. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java
  12. 23 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroup.java
  13. 20 20
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ClassGroupStudentStatusEnum.java
  14. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  15. 4 2
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseHomeworkService.java
  16. 6 5
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java
  17. 125 47
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  18. 22 18
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseHomeworkServiceImpl.java
  19. 1 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java
  20. 15 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  21. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  22. 23 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  23. 2 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  24. 2 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  25. 15 3
      mec-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml
  26. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  27. 5 9
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  28. 3 1
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  29. 2 0
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkReplyMapper.xml
  30. 1 3
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  31. 23 5
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  32. 1 1
      mec-web/src/main/java/com/ym/mec/web/config/ResourceServerConfig.java
  33. 11 12
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  34. 5 4
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

+ 11 - 17
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/TokenController.java

@@ -1,21 +1,19 @@
 package com.ym.mec.auth.web.controller;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.service.SysUserService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.security.AuthUser;
+import com.ym.mec.common.security.SecurityUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-
-import java.io.IOException;
-import java.util.Base64;
-import java.util.Map;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
+import org.springframework.http.*;
 import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
 import org.springframework.util.LinkedMultiValueMap;
@@ -26,13 +24,9 @@ import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.client.RestTemplate;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.auth.service.SysUserService;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.security.AuthUser;
-import com.ym.mec.common.security.SecurityUtils;
+import java.io.IOException;
+import java.util.Base64;
+import java.util.Map;
 
 @RestController
 @Api(tags = "认证服务")

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

@@ -11,77 +11,81 @@ import java.util.Map;
 
 public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStudentMapper> {
 
-	/**
-	 * 批量插入学生
-	 * @param classGroupStudentMapperList
-	 * @return
-	 */
-	int classGroupStudentsInsert(@Param("classGroupStudentMapperList") List<ClassGroupStudentMapper> classGroupStudentMapperList);
+    /**
+     * 批量插入学生
+     *
+     * @param classGroupStudentMapperList
+     * @return
+     */
+    int classGroupStudentsInsert(@Param("classGroupStudentMapperList") List<ClassGroupStudentMapper> classGroupStudentMapperList);
 
-	/**
-	 * 根据班级和学生编号查询
-	 * @param classGroupId
-	 * @param userId
-	 * @return
-	 */
-	ClassGroupStudentMapper query(@Param("classGroupId") int classGroupId, @Param("userId") Integer userId);
+    /**
+     * 根据班级和学生编号查询
+     *
+     * @param classGroupId
+     * @param userId
+     * @return
+     */
+    ClassGroupStudentMapper query(@Param("classGroupId") int classGroupId, @Param("userId") Integer userId);
 
-	/**
-	 * 根据乐团编号删除指定学生
-	 * @param musicGroupId 乐团编号
-	 * @param userId 学生编号
-	 * @return
-	 */
-	int deleteStudentByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
+    /**
+     * 根据乐团编号删除指定学生
+     *
+     * @param musicGroupId 乐团编号
+     * @param userId       学生编号
+     * @return
+     */
+    int deleteStudentByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
 
-	/**
-	 * 根据班级编号删除关联
-	 * @param classGroupId
-	 */
-	void deleteByClassId(Integer classGroupId);
+    /**
+     * 根据班级编号删除关联
+     *
+     * @param classGroupId
+     */
+    void deleteByClassId(Integer classGroupId);
 
-	/**
-	 * @Author: Joburgess
-	 * @Date: 2019/10/17
-	 * @params [classGroupId, userId]
-	 * @return int
-	 * @describe 删除班级上的指定学生
-	 */
-	int deleteStudentByClassGroupId(@Param("classGroupId") Long classGroupId,@Param("userId") Long userId);
+    /**
+     * @return int
+     * @Author: Joburgess
+     * @Date: 2019/10/17
+     * @params [classGroupId, userId]
+     * @describe 删除班级上的指定学生
+     */
+    int deleteStudentByClassGroupId(@Param("classGroupId") Long classGroupId, @Param("userId") Long userId);
 
-	/**
-	 * @describe 根据班级编号获取班级学生名称列表
-	 * @author Joburgess
-	 * @date 2019/10/18
-	 * @param classGroupId: 班级编号
-	 * @return java.lang.String[]
-	 */
-	String[] findStudentNumByClassGroupId(@Param("classGroupId") Long classGroupId);
+    /**
+     * @param classGroupId: 班级编号
+     * @return java.lang.String[]
+     * @describe 根据班级编号获取班级学生名称列表
+     * @author Joburgess
+     * @date 2019/10/18
+     */
+    String[] findStudentNumByClassGroupId(@Param("classGroupId") Long classGroupId);
 
-	/**
-	 * @describe 获取班级学生
-	 * @author Joburgess
-	 * @date 2019/10/18
-	 * @param params:
-	 * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassStudentDto>
-	 */
-	List<TeacherClassStudentDto> findClassStudent(Map<String,Object> params);
+    /**
+     * @param params:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassStudentDto>
+     * @describe 获取班级学生
+     * @author Joburgess
+     * @date 2019/10/18
+     */
+    List<TeacherClassStudentDto> findClassStudent(Map<String, Object> params);
 
-	/**
-	 * @describe 统计班级学生数量
-	 * @author Joburgess
-	 * @date 2019/10/18
-	 * @param params:
-	 * @return int
-	 */
-	int findClassStudentNum(Map<String,Object> params);
+    /**
+     * @param params:
+     * @return int
+     * @describe 统计班级学生数量
+     * @author Joburgess
+     * @date 2019/10/18
+     */
+    int findClassStudentNum(Map<String, Object> params);
 
-	/**
-	 * @describe 获取点名列表
-	 * @author Joburgess
-	 * @date 2019/10/19
-	 * @param courseScheduleId: 课程编号
-	 * @return java.util.List<com.ym.mec.biz.dal.entity.StudentAttendance>
-	 */
-	List<StudentAttendanceViewDto> findStudentByCourse(Long courseScheduleId);
+    /**
+     * @param courseScheduleId: 课程编号
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentAttendance>
+     * @describe 获取点名列表
+     * @author Joburgess
+     * @date 2019/10/19
+     */
+    List<StudentAttendanceViewDto> findStudentByCourse(Long courseScheduleId);
 }

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

@@ -5,6 +5,7 @@ import com.ym.mec.biz.dal.dto.StudentStatusCountUtilEntity;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.common.dal.BaseDAO;
 
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
@@ -21,6 +22,16 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
     int addStudentAttendances(List<StudentAttendance> studentAttendances);
 
     /**
+     * @describe 根据课程删除对应的点名记录
+     * @author Joburgess
+     * @date 2019/10/21
+     * @param courseScheduleId:
+     * @return int
+     */
+    @Delete("delete from student_attendance where course_schedule_id_=#{courseScheduleId}")
+    int deleteStudentAttendancesByCourse(Long courseScheduleId);
+
+    /**
      * 统计学生各种状态人数
      * @param classId
      * @return

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

@@ -160,6 +160,15 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
     List<Map<String,Integer>> countSurplusClassTimes(Long vipGroupId);
 
     /**
+     * @describe 统计vip课已上课程数量
+     * @author Joburgess
+     * @date 2019/10/21
+     * @param vipGroupIds: vip课编号列表
+     * @return java.util.List<java.util.Map<java.lang.Long,java.lang.Integer>>
+     */
+    List<Map<Long,Integer>> countVipGroupOverCourse(List<Long> vipGroupIds);
+
+    /**
      * @Author: Joburgess
      * @Date: 2019/10/12
      * @params [vipGroupId]

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

@@ -0,0 +1,92 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 班级调整
+ */
+public class ClassGroupAdjustDto {
+
+    @ApiModelProperty(value = "乐团id", required = true)
+    private String musicGroupId;
+
+    @ApiModelProperty(value = "班级名称", required = true)
+    private String classGroupName;
+
+    @ApiModelProperty(value = "学生-班级", required = true)
+    private List<ClassGroupStudentMapperDto> classGroupStudentMapperDtoList;
+
+    @ApiModelProperty(value = "老师设置", required = true)
+    private List<ClassGroupTeacherMapper> classGroupTeacherMapperList;
+
+    @ApiModelProperty(value = "是否永久 方式1-永久 0-临时", required = true)
+    private YesOrNoEnum type;
+
+    @ApiModelProperty(value = "开始时间", required = true)
+    private LocalDateTime startDate;
+
+    @ApiModelProperty(value = "结束时间", required = true)
+    private LocalDateTime endDate;
+
+    public String getClassGroupName() {
+        return classGroupName;
+    }
+
+    public void setClassGroupName(String classGroupName) {
+        this.classGroupName = classGroupName;
+    }
+
+    public YesOrNoEnum getType() {
+        return type;
+    }
+
+    public void setType(YesOrNoEnum type) {
+        this.type = type;
+    }
+
+    public LocalDateTime getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(LocalDateTime startDate) {
+        this.startDate = startDate;
+    }
+
+    public LocalDateTime getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(LocalDateTime endDate) {
+        this.endDate = endDate;
+    }
+
+    public List<ClassGroupTeacherMapper> getClassGroupTeacherMapperList() {
+        return classGroupTeacherMapperList;
+    }
+
+    public void setClassGroupTeacherMapperList(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) {
+        this.classGroupTeacherMapperList = classGroupTeacherMapperList;
+    }
+
+    public List<ClassGroupStudentMapperDto> getClassGroupStudentMapperDtoList() {
+        return classGroupStudentMapperDtoList;
+    }
+
+    public void setClassGroupStudentMapperDtoList(List<ClassGroupStudentMapperDto> classGroupStudentMapperDtoList) {
+        this.classGroupStudentMapperDtoList = classGroupStudentMapperDtoList;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+}

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

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import io.swagger.annotations.ApiModelProperty;
+
+public class ClassGroupStudentMapperDto extends ClassGroupStudentMapper {
+    @ApiModelProperty(value = "科目编号",required = true)
+    private Integer actual_subject_id_;
+
+    public Integer getActual_subject_id_() {
+        return actual_subject_id_;
+    }
+
+    public void setActual_subject_id_(Integer actual_subject_id_) {
+        this.actual_subject_id_ = actual_subject_id_;
+    }
+}

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

@@ -24,6 +24,9 @@ public class StudentCourseHomeworkCommentDto {
     @ApiModelProperty(value = "头像")
     private String avatar;
 
+    @ApiModelProperty(value = "是否是教师")
+    private Integer isTeacher;
+
     /** 留言内容 */
     @ApiModelProperty(value = "留言内容",required = true)
     private String content;
@@ -34,6 +37,14 @@ public class StudentCourseHomeworkCommentDto {
     @ApiModelProperty(value = "回复",required = false)
     private List<StudentCourseHomeworkCommentDto> replys;
 
+    public Integer getIsTeacher() {
+        return isTeacher;
+    }
+
+    public void setIsTeacher(Integer isTeacher) {
+        this.isTeacher = isTeacher;
+    }
+
     public String getAvatar() {
         return avatar;
     }

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

@@ -74,6 +74,17 @@ public class TeacherClassGroupDto {
     @ApiModelProperty(value = "教学形式")
     private Integer classMode;
 
+    @ApiModelProperty(value = "每月平均课时")
+    private double avgClassTimesOfMonth;
+
+    public double getAvgClassTimesOfMonth() {
+        return avgClassTimesOfMonth;
+    }
+
+    public void setAvgClassTimesOfMonth(double avgClassTimesOfMonth) {
+        this.avgClassTimesOfMonth = avgClassTimesOfMonth;
+    }
+
     public Integer getClassMode() {
         return classMode;
     }

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import org.codehaus.jackson.annotate.JsonIgnore;
 
 import java.util.Date;
 
@@ -19,6 +20,9 @@ public class TeacherHomeworkListDto {
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
+    @JsonIgnore
+    private String day;
+
     @ApiModelProperty(value = "预计完成人数")
     private Integer expectNum;
 
@@ -40,6 +44,14 @@ public class TeacherHomeworkListDto {
     @ApiModelProperty(value = "乐团名称")
     private String musicGroupName;
 
+    public String getDay() {
+        return day;
+    }
+
+    public void setDay(String day) {
+        this.day = day;
+    }
+
     public Integer getCourseScheduleId() {
         return courseScheduleId;
     }

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

@@ -19,6 +19,9 @@ public class StudentCourseHomework {
 
 	@ApiModelProperty(value = "用户名")
 	private String userName;
+
+	@ApiModelProperty(value = "头像")
+	private String avatar;
 	
 	/**  */
 	private Long courseHomeworkId;
@@ -35,6 +38,14 @@ public class StudentCourseHomework {
 	/**  */
 	private java.util.Date updateTime;
 
+	public String getAvatar() {
+		return avatar;
+	}
+
+	public void setAvatar(String avatar) {
+		this.avatar = avatar;
+	}
+
 	@ApiModelProperty(value = "备注",required = false)
 	private String remark;
 

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

@@ -78,8 +78,8 @@ public class StudentRegistration {
     @ApiModelProperty(value = "用户所在乐团状态)",required = false)
     private ClassGroupStudentStatusEnum musicGroupStatus;
 
-    @ApiModelProperty(value = "班级id", hidden = true)
-    private Integer classGroupId;
+    @ApiModelProperty(value = "班级ids", hidden = true)
+    private String classGroupId;
 
     @ApiModelProperty(value = "零时课程费用", hidden = true)
     private BigDecimal temporaryCourseFee;
@@ -228,11 +228,11 @@ public class StudentRegistration {
         return paymentStatus;
     }
 
-    public Integer getClassGroupId() {
+    public String getClassGroupId() {
         return classGroupId;
     }
 
-    public void setClassGroupId(Integer classGroupId) {
+    public void setClassGroupId(String classGroupId) {
         this.classGroupId = classGroupId;
     }
 

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

@@ -100,7 +100,29 @@ public class VipGroup {
 	private TeachModeEnum giveTeachMode;
 	
 	private Integer organId;
-	
+
+	@ApiModelProperty(value = "取消原因")
+	private String stopReason;
+
+	@ApiModelProperty(value = "月度消耗百分数")
+	private Double monthConsumeRate;
+
+	public Double getMonthConsumeRate() {
+		return monthConsumeRate;
+	}
+
+	public void setMonthConsumeRate(Double monthConsumeRate) {
+		this.monthConsumeRate = monthConsumeRate;
+	}
+
+	public String getStopReason() {
+		return stopReason;
+	}
+
+	public void setStopReason(String stopReason) {
+		this.stopReason = stopReason;
+	}
+
 	public String getVipGroupActivityName() {
 		return vipGroupActivityName;
 	}

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

@@ -6,31 +6,31 @@ import com.ym.mec.common.enums.BaseEnum;
  * 班级类型(普通班级、合奏班级)
  */
 public enum ClassGroupStudentStatusEnum implements BaseEnum<String, ClassGroupStudentStatusEnum> {
-	NORMAL("NORMAL", "在读"), LEAVE("LEAVE", "请假"), QUIT("QUIT", "退团");
+    NORMAL("NORMAL", "在读"), LEAVE("LEAVE", "请假"), QUIT("QUIT", "退班");
 
-	private String code;
+    private String code;
 
-	private String msg;
+    private String msg;
 
-	ClassGroupStudentStatusEnum(String code, String msg) {
-		this.code = code;
-		this.msg = msg;
-	}
+    ClassGroupStudentStatusEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
 
-	public void setCode(String code) {
-		this.code = code;
-	}
+    public void setCode(String code) {
+        this.code = code;
+    }
 
-	public String getMsg() {
-		return msg;
-	}
+    public String getMsg() {
+        return msg;
+    }
 
-	public void setMsg(String msg) {
-		this.msg = msg;
-	}
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
 
-	@Override
-	public String getCode() {
-		return this.code;
-	}
+    @Override
+    public String getCode() {
+        return this.code;
+    }
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -237,4 +237,11 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return java.util.List<com.ym.mec.biz.dal.dto.StudentAttendanceViewDto>
      */
     List<StudentAttendanceViewDto> findAttendanceStudentByCourse(Long courseScheduleId);
+
+    /**
+     * 班级调整
+     * @param classGroupAdjustDto
+     * @return
+     */
+    ClassGroup classGroupAdjust(ClassGroupAdjustDto classGroupAdjustDto) throws Exception;
 }

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

@@ -2,9 +2,11 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
-import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.List;
+import java.util.Map;
+
 public interface CourseHomeworkService extends BaseService<Long, CourseHomework> {
 
     /**
@@ -14,6 +16,6 @@ public interface CourseHomeworkService extends BaseService<Long, CourseHomework>
      * @param queryInfo:
      * @return com.ym.mec.common.page.PageInfo
      */
-    PageInfo findTeacherCourseHomeworkByClassGroup(CourseHomeworkQueryInfo queryInfo);
+    List<Map<String,Object>> findTeacherCourseHomeworkByClassGroup(CourseHomeworkQueryInfo queryInfo);
 
 }

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

@@ -178,13 +178,14 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
     List<String> findVipGroupAttendanceStudents(Long courseScheduleId);
 
     /**
-     * @Author: Joburgess
-     * @Date: 2019/10/12
-     * @params [vipGroupId]
-     * @return void
      * @describe 停止vip课
+     * @author Joburgess
+     * @date 2019/10/21
+     * @param vipGroupId: vip课编号
+     * @param stopReason: 取消原因
+     * @return void
      */
-    void stopGroup(Long vipGroupId);
+    void stopGroup(Long vipGroupId,String stopReason);
 
     /**
      * 发放月度奖励

+ 125 - 47
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -131,7 +131,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
             classGroupStudentList.add(classGroupStudentMapper);
             StudentRegistration studentRegistration = new StudentRegistration();
-            studentRegistration.setClassGroupId(classGroup.getId());
+            studentRegistration.setClassGroupId(classGroup.getId().toString());
             studentRegistration.setUserId(Integer.getInteger(userId));
             studentRegistration.setMusicGroupId(classGroup.getMusicGroupId());
             studentRegistrationDao.updateByUserIdAndMusicGroupId(studentRegistration);
@@ -296,14 +296,22 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             List<Map<Integer,String>> names = vipGroupActivityDao.queryNamesById(StringUtils.join(activityIds,","));
             Map<Integer,String> nameMap = MapUtil.convertMybatisMap(names);
             //计算月度平均消耗值(已上课时 / 消耗月份)
-            Date date = new Date();
-            dataList.forEach(e->{
-                e.setActivityName(nameMap.get(e.getActivityId()));
-                int days = DateUtil.daysBetween(e.getPaymentExpireDate(), date);
-                if(days <= 0){
-                    e.setMonthAvg(0f);
-                }else {
-                    e.setMonthAvg(e.getCurrentClassTimes()/(days/30));
+            List<Long> vipGroupIds = dataList.stream().map(vipGroup -> vipGroup.getVipClassId()).collect(Collectors.toList());
+            List<Map<Long, Integer>> vipGroupOverCourses = vipGroupDao.countVipGroupOverCourse(vipGroupIds);
+            Map<Long,Integer> vipGroupOverCourseMaps = MapUtil.convertMybatisMap(vipGroupOverCourses);
+            dataList.forEach(vipGroup -> {
+                Integer overCourses = vipGroupOverCourseMaps.get(vipGroup.getVipClassId());
+                if(Objects.isNull(overCourses)){
+                    overCourses=0;
+                }
+                Integer totalClassTimes=vipGroup.getTotalClassTimes();
+                if(Objects.isNull(totalClassTimes)){
+                    vipGroup.setMonthAvg(Float.parseFloat("0.0"));
+                }else{
+                    BigDecimal overCoursesOfMonth=new BigDecimal(overCourses),allClassTimes=new BigDecimal(totalClassTimes);
+
+                    Float monthConsumeRate=overCoursesOfMonth.divide(overCoursesOfMonth,2,BigDecimal.ROUND_HALF_UP).floatValue();
+                    vipGroup.setMonthAvg(monthConsumeRate);
                 }
             });
 
@@ -336,7 +344,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Override
     public List<ClassGroupTeachersDto> getClassGroupAndTeacherSalary(String musicGroupId, SalarySettlementTypeEnum type) throws Exception {
         //乐团班级及班级老师
-        List<ClassGroupTeachersDto> classGroupAndTeachers = getClassGroupAndTeachers(musicGroupId,"NORMAL,MIX,HIGH");
+        List<ClassGroupTeachersDto> classGroupAndTeachers = getClassGroupAndTeachers(musicGroupId, "NORMAL,MIX,HIGH");
 
         for (ClassGroupTeachersDto classGroupAndTeacher : classGroupAndTeachers) {
             //班级的教师列表
@@ -346,7 +354,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 String courseType = classGroupAndTeacher.getType().equals(ClassGroupTypeEnum.NORMAL) ? "SINGLE" : classGroupAndTeacher.getType().getCode();
                 List<TeacherDefaultMusicGroupSalary> teacherSalaryByUserIdAndType = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), courseType, type);
                 if (teacherSalaryByUserIdAndType == null) {
-                    throw new Exception("userId:"+classGroupTeacherMapper.getUserId()+"名字:"+classGroupTeacherMapper.getUserName()+" 老师没有设置课酬");
+                    throw new Exception("userId:" + classGroupTeacherMapper.getUserId() + "名字:" + classGroupTeacherMapper.getUserName() + " 老师没有设置课酬");
                 }
                 classGroupTeacherMapper.setTeacherDefaultMusicGroupSalaryList(teacherSalaryByUserIdAndType);
             }
@@ -368,19 +376,19 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             params.put("offset", pageInfo.getOffset());
             courseListDtos = classGroupDao.queryCoursePage(params);
             courseListDtos.forEach(e -> {
-                if (ClassGroupTypeEnum.VIP==e.getType()) {
+                if (ClassGroupTypeEnum.VIP == e.getType()) {
                     //获取vip课的学生名称列表
                     List<String> vipStuNames = classGroupDao.findVipStuNames(e.getMusicGroupId());
                     if (vipStuNames != null && vipStuNames.size() > 0) {
                         e.setStudentNames(StringUtils.join(vipStuNames, ","));
                     }
-                    if(e.getOffLineClassesNum()>0&&e.getOffLineClassesNum()<=0){
+                    if (e.getOffLineClassesNum() > 0 && e.getOffLineClassesNum() <= 0) {
                         e.setClassMode(1);
-                    }else if(e.getOffLineClassesNum()>0&&e.getOffLineClassesNum()>0){
+                    } else if (e.getOffLineClassesNum() > 0 && e.getOffLineClassesNum() > 0) {
                         e.setClassMode(3);
-                    }else if(e.getOnlineClassesNum()<0&&e.getOffLineClassesNum()>=0){
+                    } else if (e.getOnlineClassesNum() < 0 && e.getOffLineClassesNum() >= 0) {
                         e.setClassMode(2);
-                    }else{
+                    } else {
                         e.setClassMode(0);
                     }
                 } else {
@@ -422,7 +430,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 teachers.removeAll(Collections.singleton(null));
                 //获取乐团群用户总数
                 BigDecimal count = musicGroupUserNumMap.get(e.getId());
-                e.setCount(count == null?0:count.intValue() + teachers.size());
+                e.setCount(count == null ? 0 : count.intValue() + teachers.size());
                 e.setId("mg" + e.getId());
             });
         } else {
@@ -432,11 +440,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if (imGroupModels1 != null && imGroupModels1.size() > 0) {
             Set<String> classGroupIds = imGroupModels1.stream().map(e -> e.getId()).collect(Collectors.toSet());
             //获取班级老师总数map
-            List<Map<Integer, Integer>> nums = classGroupDao.countTeacherNums(StringUtils.join(classGroupIds,","));
+            List<Map<Integer, Integer>> nums = classGroupDao.countTeacherNums(StringUtils.join(classGroupIds, ","));
             Map<Integer, Integer> numsMap = MapUtil.convertMybatisMap(nums);
             imGroupModels1.forEach(e -> {
                 Integer num = numsMap.get(e.getId());
-                e.setCount(num == null?0:num + e.getCount());
+                e.setCount(num == null ? 0 : num + e.getCount());
                 e.setId("cg" + e.getId());
             });
             imGroupModels.addAll(imGroupModels1);
@@ -513,15 +521,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void addMusicGroupTeam(Integer teacherId, String musicGroupId,Integer improventClassesNum) throws Exception {
+    public void addMusicGroupTeam(Integer teacherId, String musicGroupId, Integer improventClassesNum) throws Exception {
         //所有学员都已经分配
         List<StudentRegistration> students = studentRegistrationDao.getNoClassStuBySubjectId(musicGroupId, null);
-        if(students != null && students.size() > 0){
+        if (students != null && students.size() > 0) {
             throw new Exception("还有学员未分配班级");
         }
         //所有单技班都有合奏班
         List<ClassGroup> classGroupList = classGroupDao.findNoClassSubjects(musicGroupId);
-        if(classGroupList != null && classGroupList.size() > 0){
+        if (classGroupList != null && classGroupList.size() > 0) {
             throw new Exception("还有单技班未分配合奏");
         }
         //设置教学主管
@@ -536,12 +544,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Override
     public List<TeacherClassGroupDto> findTeacherClassGroups(String type) {
         SysUser user = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(user)){
+        if (Objects.isNull(user)) {
             throw new BizException("请登录");
         }
 
         List<TeacherClassGroupDto> teacherMusicClassGroup;
-        switch (type){
+        switch (type) {
             case "VIP":
                 teacherMusicClassGroup = classGroupDao.findTeacherVipClassGroup(user.getId().longValue());
                 break;
@@ -551,7 +559,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             default:
                 throw new BizException("请指定课程类型");
         }
-        if(CollectionUtils.isEmpty(teacherMusicClassGroup)){
+        if (CollectionUtils.isEmpty(teacherMusicClassGroup)) {
             return teacherMusicClassGroup;
         }
 
@@ -562,32 +570,50 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<Map<Long, Integer>> musicGroupIdAndNumList = musicGroupStudentFeeDao.countContinuosAbsenteeismStudentNum(musicGroupIds);
         Map<Long, Integer> musicGroupIdAndNum = MapUtil.convertMybatisMap(musicGroupIdAndNumList);
 
+        List<Map<Long, Integer>> vipGroupOverCourses = vipGroupDao.countVipGroupOverCourse(musicGroupIds);
+        Map<Long,Integer> vipGroupOverCourseMaps = MapUtil.convertMybatisMap(vipGroupOverCourses);
+
         teacherMusicClassGroup.forEach(teacherClassGroupDto -> {
 
-            if(teacherClassGroupDto.getType()==ClassGroupTypeEnum.VIP){
+            if (teacherClassGroupDto.getType() == ClassGroupTypeEnum.VIP) {
                 String[] studentNums = classGroupStudentMapperDao.findStudentNumByClassGroupId(teacherClassGroupDto.getClassGroupId());
-                teacherClassGroupDto.setStudentNames(StringUtils.join(studentNums,","));
-                if(teacherClassGroupDto.getOffLineClassesNum()>0&&teacherClassGroupDto.getOffLineClassesNum()<=0){
+                teacherClassGroupDto.setStudentNames(StringUtils.join(studentNums, ","));
+                if (teacherClassGroupDto.getOffLineClassesNum() > 0 && teacherClassGroupDto.getOffLineClassesNum() <= 0) {
                     teacherClassGroupDto.setClassMode(1);
-                }else if(teacherClassGroupDto.getOffLineClassesNum()>0&&teacherClassGroupDto.getOffLineClassesNum()>0){
+                } else if (teacherClassGroupDto.getOffLineClassesNum() > 0 && teacherClassGroupDto.getOffLineClassesNum() > 0) {
                     teacherClassGroupDto.setClassMode(3);
-                }else if(teacherClassGroupDto.getOnlineClassesNum()<0&&teacherClassGroupDto.getOffLineClassesNum()>=0){
+                } else if (teacherClassGroupDto.getOnlineClassesNum() < 0 && teacherClassGroupDto.getOffLineClassesNum() >= 0) {
                     teacherClassGroupDto.setClassMode(2);
-                }else{
+                } else {
                     teacherClassGroupDto.setClassMode(0);
                 }
+
+                Integer overCourses = vipGroupOverCourseMaps.get(teacherClassGroupDto.getMusicGroupId());
+                if(Objects.isNull(overCourses)){
+                    overCourses=0;
+                }
+                Integer totalClassTimes=teacherClassGroupDto.getTotalClassTimes();
+                if(Objects.isNull(totalClassTimes)||totalClassTimes==0){
+                    teacherClassGroupDto.setAvgClassTimesOfMonth(0.0);
+                }else{
+                    BigDecimal overCoursesOfMonth=new BigDecimal(overCourses),allClassTimes=new BigDecimal(totalClassTimes);
+
+                    Double monthConsumeRate=overCoursesOfMonth.divide(allClassTimes,1,BigDecimal.ROUND_HALF_UP).doubleValue();
+                    teacherClassGroupDto.setAvgClassTimesOfMonth(monthConsumeRate);
+                }
+
             }
-            String subjectIdList=teacherClassGroupDto.getSubjectIdList();
-            if(StringUtils.isNotEmpty(subjectIdList)){
-                if(Objects.nonNull(musicGroupIdAndNum)&&Objects.nonNull(musicGroupIdAndNum.get(teacherClassGroupDto.getMusicGroupId()))){
+            String subjectIdList = teacherClassGroupDto.getSubjectIdList();
+            if (StringUtils.isNotEmpty(subjectIdList)) {
+                if (Objects.nonNull(musicGroupIdAndNum) && Objects.nonNull(musicGroupIdAndNum.get(teacherClassGroupDto.getMusicGroupId()))) {
                     teacherClassGroupDto.setThreeClassNoAttendanceStudentNum(musicGroupIdAndNum.get(teacherClassGroupDto.getMusicGroupId()));
                 }
                 String[] subjectIds = subjectIdList.split(",");
-                List<String> subjectNameList=new ArrayList<>();
+                List<String> subjectNameList = new ArrayList<>();
                 for (String subjectId : subjectIds) {
                     subjectNameList.add(subjectMapBySubjectIdsList.get(Integer.parseInt(subjectId)));
                 }
-                teacherClassGroupDto.setSubjectNames(StringUtils.join(subjectNameList,","));
+                teacherClassGroupDto.setSubjectNames(StringUtils.join(subjectNameList, ","));
             }
         });
 
@@ -597,11 +623,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public boolean updateClassStudentNum(Long classGroupId, Integer num) {
-        ClassGroup classGroup=classGroupDao.lockClassGroup(classGroupId);
-        if(Objects.isNull(classGroup)){
+        ClassGroup classGroup = classGroupDao.lockClassGroup(classGroupId);
+        if (Objects.isNull(classGroup)) {
             throw new BizException("班级不存在");
         }
-        classGroup.setStudentNum(classGroup.getStudentNum()+num);
+        classGroup.setStudentNum(classGroup.getStudentNum() + num);
         classGroup.setUpdateTime(new Date());
 
         classGroupDao.update(classGroup);
@@ -611,34 +637,34 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     public TeacherClassHeadInfo findTeacherClassGroupInfo(Long classGroupId) {
-        if(Objects.isNull(classGroupId)){
+        if (Objects.isNull(classGroupId)) {
             throw new BizException("请指定班级");
         }
 
         ClassGroup classGroup = classGroupDao.get(classGroupId.intValue());
 
-        if(Objects.isNull(classGroup)){
+        if (Objects.isNull(classGroup)) {
             throw new BizException("未找到该班级");
         }
 
-        TeacherClassHeadInfo teacherClassHeadInfo=new TeacherClassHeadInfo();
+        TeacherClassHeadInfo teacherClassHeadInfo = new TeacherClassHeadInfo();
         teacherClassHeadInfo.setStudentNum(classGroup.getStudentNum());
         teacherClassHeadInfo.setCurrentClassTimes(classGroup.getCurrentClassTimes());
         teacherClassHeadInfo.setTotalClassTimes(classGroup.getTotalClassTimes());
         ClassGroupTeacherMapper bishopTeacher = classGroupTeacherMapperDao.findByClassGroupAndRole(classGroupId, TeachTypeEnum.BISHOP);
-        if(Objects.nonNull(bishopTeacher)){
+        if (Objects.nonNull(bishopTeacher)) {
             teacherClassHeadInfo.setBishopTeacherId(bishopTeacher.getId());
             teacherClassHeadInfo.setBishopTeacher(bishopTeacher.getUserName());
         }
         ClassGroupTeacherMapper teachingTeacher = classGroupTeacherMapperDao.findByClassGroupAndRole(classGroupId, TeachTypeEnum.TEACHING);
-        if(Objects.nonNull(teachingTeacher)){
+        if (Objects.nonNull(teachingTeacher)) {
             teacherClassHeadInfo.setTeachingTeacherId(teachingTeacher.getId());
             teacherClassHeadInfo.setTeachingTeacher(teachingTeacher.getUserName());
         }
 
-        if(classGroup.getType()==ClassGroupTypeEnum.VIP){
+        if (classGroup.getType() == ClassGroupTypeEnum.VIP) {
             String[] studentNums = classGroupStudentMapperDao.findStudentNumByClassGroupId(classGroupId);
-            teacherClassHeadInfo.setStudentNames(StringUtils.join(studentNums,","));
+            teacherClassHeadInfo.setStudentNames(StringUtils.join(studentNums, ","));
         }
 
         return teacherClassHeadInfo;
@@ -665,9 +691,61 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     public List<StudentAttendanceViewDto> findAttendanceStudentByCourse(Long courseScheduleId) {
-        if(Objects.isNull(courseScheduleId)){
+        if (Objects.isNull(courseScheduleId)) {
             throw new BizException("请指定课程编号");
         }
         return classGroupStudentMapperDao.findStudentByCourse(courseScheduleId);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ClassGroup classGroupAdjust(ClassGroupAdjustDto classGroupAdjustDto) throws Exception {
+        Date date = new Date();
+
+        List<ClassGroupStudentMapperDto> classGroupStudentMapperDtoList = classGroupAdjustDto.getClassGroupStudentMapperDtoList();
+        String subject_id_list_ = "";
+        for (ClassGroupStudentMapper classGroupStudentMapperDto : classGroupStudentMapperDtoList) {
+            //1、永久调整,删除学生班级关联关系
+            if (classGroupAdjustDto.getType().equals(YesOrNoEnum.YES)) {
+                ClassGroupStudentMapper classStudentMapper = classGroupStudentMapperDao.query(classGroupStudentMapperDto.getClassGroupId(), classGroupStudentMapperDto.getUserId());
+                classStudentMapper.setStatus(ClassGroupStudentStatusEnum.QUIT);
+                classGroupStudentMapperDao.update(classStudentMapper);
+            }
+            subject_id_list_ += classGroupStudentMapperDto.getUserId() + ",";
+        }
+
+
+        subject_id_list_ = subject_id_list_.substring(0, subject_id_list_.length() - 1);
+
+        //2、新建班级
+        ClassGroup classGroup = new ClassGroup();
+        classGroup.setMusicGroupId(classGroupAdjustDto.getMusicGroupId());
+        classGroup.setSubjectIdList(subject_id_list_);
+        classGroup.setName(classGroupAdjustDto.getClassGroupName());
+        classGroup.setExpectStudentNum(classGroupStudentMapperDtoList.size());
+        classGroup.setStudentNum(classGroupStudentMapperDtoList.size());
+        classGroup.setType(ClassGroupTypeEnum.NORMAL);
+        classGroup.setDelFlag(YesOrNoEnum.NO);
+        classGroup.setCreateTime(date);
+        classGroup.setUpdateTime(date);
+        classGroupDao.insert(classGroup);
+
+        //3、将学生加入新班级(学生注册表,关联表)
+        List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
+        for (ClassGroupStudentMapperDto classGroupStudentMapperDto : classGroupStudentMapperDtoList) {
+            classGroupStudentMapperDto.setClassGroupId(classGroup.getId());
+            classGroupStudentMapperList.add(classGroupStudentMapperDto);
+        }
+        classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList);
+
+
+        //4、将老师加入关联关系
+        List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroupAdjustDto.getClassGroupTeacherMapperList();
+        for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
+            classGroupTeacherMapper.setClassGroupId(classGroup.getId());
+            classGroupTeacherMapper.setMusicGroupId(classGroupAdjustDto.getMusicGroupId());
+        }
+        classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
+        return classGroup;
+    }
 }

+ 22 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseHomeworkServiceImpl.java

@@ -8,14 +8,16 @@ import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.service.CourseHomeworkService;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.common.dal.BaseDAO;
-import com.ym.mec.common.exception.BizException;
-import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -34,29 +36,31 @@ public class CourseHomeworkServiceImpl extends BaseServiceImpl<Long, CourseHomew
 	}
 
 	@Override
-	public PageInfo findTeacherCourseHomeworkByClassGroup(CourseHomeworkQueryInfo queryInfo) {
-		if(Objects.isNull(queryInfo.getClassGroupId())){
-			throw new BizException("请指定班级");
-		}
-		PageInfo<TeacherHomeworkListDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+	public List<Map<String,Object>> findTeacherCourseHomeworkByClassGroup(CourseHomeworkQueryInfo queryInfo) {
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 		List<TeacherHomeworkListDto> dataList = null;
+		List<Map<String,Object>> result=new ArrayList<>();
 		int count = courseHomeworkDao.countByClassGroupAndTeacher(params);
 		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
 			dataList = courseHomeworkDao.findByClassGroupAndTeacher(params);
 			List<Integer> courseScheduleIds = dataList.stream().map(TeacherHomeworkListDto::getCourseScheduleId).collect(Collectors.toList());
-			Map<Integer, Integer> courseScheduleCurrentTimes = courseScheduleService.findCourseScheduleCurrentTimes(courseScheduleIds);
-			dataList.forEach(teacherHomeworkListDto -> {
-				teacherHomeworkListDto.setCurrentClassTimes(courseScheduleCurrentTimes.get(teacherHomeworkListDto.getCourseScheduleId()));
-			});
+			if(!CollectionUtils.isEmpty(courseScheduleIds)){
+				Map<Integer, Integer> courseScheduleCurrentTimes = courseScheduleService.findCourseScheduleCurrentTimes(courseScheduleIds);
+				dataList.forEach(teacherHomeworkListDto -> {
+					teacherHomeworkListDto.setCurrentClassTimes(courseScheduleCurrentTimes.get(teacherHomeworkListDto.getCourseScheduleId()));
+				});
+			}
 		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
+		if (count != 0) {
+			Map<String, List<TeacherHomeworkListDto>> collect = dataList.stream().collect(Collectors.groupingBy(TeacherHomeworkListDto::getDay));
+			for(String key:collect.keySet()){
+				Map<String,Object> r=new HashMap<>();
+				r.put("day",key);
+				r.put("list",collect.get(key));
+				result.add(r);
+			}
 		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
+		return result;
 	}
 }

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

@@ -46,19 +46,10 @@ public class PayServiceImpl implements PayService {
         //支付通道决策
         SysAccount routingAccount = getRoutingAccount(amount);
         HashMap<String, Object> unionPay = new HashMap<>();
-        String type = "YQPAY";
         Map payMap;
-//        if (routingAccount != null) {
-//            //易乾支付
-//            payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, routingAccount.getMerNo());
-//        } else {
-//            type = "UNIONPAY";
-//            payMap = UnionPay.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject);
-//        }
-        type = "UNIONPAY";
         payMap = UnionPay.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject);
         unionPay.put("orderNo", orderNo);
-        unionPay.put("type", type);
+        unionPay.put("type", "UNIONPAY");
         unionPay.put("payMap", payMap);
         return unionPay;
     }

+ 15 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
@@ -42,6 +44,8 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 	
 	@Autowired
 	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
 	@Override
 	public BaseDAO<Long, StudentAttendance> getDAO() {
@@ -51,6 +55,10 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void addStudentAttendances(List<StudentAttendance> studentAttendances) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(Objects.isNull(sysUser)){
+			throw new BizException("请登录");
+		}
 		if(CollectionUtils.isEmpty(studentAttendances)){
 			throw new BizException("无点名信息");
 		}
@@ -59,8 +67,10 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 		if(Objects.isNull(courseSchedule)){
 			throw new BizException("请指定课程");
 		}
+		studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
 		int classTimes=courseScheduleDao.countClassTimes(courseSchedule.getClassGroupId().longValue());
 		studentAttendances.forEach(studentAttendance -> {
+			studentAttendance.setTeacherId(sysUser.getId());
 			studentAttendance.setCurrentClassTimes(classTimes);
 			StudentAttendance studentAttendanceInfo = studentAttendanceDao.getStudentAttendanceInfo(studentAttendance);
 			if (studentAttendance.getStatus() != StudentAttendanceStatusEnum.DROP_OUT) {
@@ -68,7 +78,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 				if(StudentAttendanceStatusEnum.TRUANT.equals(studentAttendance.getStatus())
 						||StudentAttendanceStatusEnum.LEAVE.equals(studentAttendance.getStatus())){
 					StudentAttendance studentLatestAttendanceInfo = studentAttendanceDao.getStudentLatestAttendanceInfo(studentAttendanceInfo);
-					if(Objects.nonNull(studentAttendanceInfo)){
+					if(Objects.nonNull(studentLatestAttendanceInfo)){
 						if(StudentAttendanceStatusEnum.TRUANT.equals(studentLatestAttendanceInfo.getStatus())
 								||StudentAttendanceStatusEnum.LEAVE.equals(studentLatestAttendanceInfo.getStatus())){
 							studentFeeDao.updateStudentAbsenteeismTimes(studentAttendanceInfo.getUserId(),
@@ -93,10 +103,10 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 			}
 		});
 		Map<StudentAttendanceStatusEnum, List<StudentAttendance>> studentAttendanceGroupByStatus = studentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getStatus));
-		Integer studentNum=studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.NORMAL).size();
-		Integer leaveStudentNum=studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.LEAVE).size();
-		courseSchedule.setStudentNum(studentNum==null?0:studentNum);
-		courseSchedule.setLeaveStudentNum(leaveStudentNum==null?0:leaveStudentNum);
+		Integer studentNum=studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.NORMAL)==null?0:studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.NORMAL).size();
+		Integer leaveStudentNum=studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.LEAVE)==null?0:studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.LEAVE).size();
+		courseSchedule.setStudentNum(studentNum);
+		courseSchedule.setLeaveStudentNum(leaveStudentNum);
 		courseScheduleDao.update(courseSchedule);
 	}
 

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

@@ -379,7 +379,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             //学生报名表
             studentRegistrationDao.insert(studentRegistration);
             if (studentRegistration.getClassGroupId() != null) {
-                ClassGroup classGroup = classGroupDao.get(studentRegistration.getClassGroupId());
+                ClassGroup classGroup = classGroupDao.get(Integer.parseInt(studentRegistration.getClassGroupId()));
                 if (classGroup != null) {
                     if (classGroup.getMusicGroupId().equals(studentRegistration.getMusicGroupId())) {
                         throw new Exception("班级录入错误");
@@ -393,7 +393,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                     throw new Exception("班级不存在");
                 }
                 //新增班级学生关系
-                classGroupStudentMapperDao.insert(new ClassGroupStudentMapper(studentRegistration.getClassGroupId(), userId));
+                classGroupStudentMapperDao.insert(new ClassGroupStudentMapper(Integer.parseInt(studentRegistration.getClassGroupId()), userId));
                 //乐团学生费用表
                 MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
                 //获取当前月

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

@@ -237,7 +237,24 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			params.put("offset", pageInfo.getOffset());
 			dataList = vipGroupDao.findAllByOrgan(params);
 			List<Long> vipGroupIds = dataList.stream().map(vipGroup -> vipGroup.getId()).collect(Collectors.toList());
+			List<Map<Long, Integer>> vipGroupOverCourses = vipGroupDao.countVipGroupOverCourse(vipGroupIds);
+			Map<Long,Integer> vipGroupOverCourseMaps = MapUtil.convertMybatisMap(vipGroupOverCourses);
+			dataList.forEach(vipGroup -> {
+				Integer overCourses = vipGroupOverCourseMaps.get(vipGroup.getId());
+				if(Objects.isNull(overCourses)){
+					overCourses=0;
+				}
+				Integer totalClassTimes=vipGroup.getTotalClassTimes();
+				if(Objects.isNull(totalClassTimes)){
+					vipGroup.setMonthConsumeRate(0.0);
+				}else{
+					BigDecimal overCoursesOfMonth=new BigDecimal(overCourses),allClassTimes=new BigDecimal(totalClassTimes);
+
+					Double monthConsumeRate=overCoursesOfMonth.divide(allClassTimes,2,BigDecimal.ROUND_HALF_UP).doubleValue();
+					vipGroup.setMonthConsumeRate(monthConsumeRate);
+				}
 
+			});
 		}
 		if (count == 0) {
 			dataList = new ArrayList<>();
@@ -339,6 +356,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("请指定vip课程");
 		}
         StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId);
+		if(Objects.isNull(vipGroupDetail)){
+			throw new BizException("未找到指定课程");
+		}
+
         vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
         return vipGroupDetail;
 	}
@@ -736,7 +757,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void stopGroup(Long vipGroupId) {
+	public void stopGroup(Long vipGroupId,String stopReason) {
     	if(Objects.isNull(vipGroupId)){
     		throw new BizException("请指定vip课");
 		}
@@ -776,6 +797,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
 		}
 		vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
+    	vipGroup.setStopReason(stopReason);
 		vipGroupDao.update(vipGroup);
 	}
 

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

@@ -490,8 +490,8 @@
             IF(vg.offline_classes_num_ IS NULL,0,vg.offline_classes_num_) offline_classes_num_,
             cg.total_class_times_,
             COUNT(vg.id_) surplus_class_times_,
-            mg.id_ music_group_id_,
-            mg.name_ music_group_name_,
+            vg.id_ music_group_id_,
+	        vg.name_ music_group_name_,
             s.id_ school_id_,
             s.name_ school_name_
         FROM

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

@@ -77,7 +77,7 @@
     </insert>
     
     <select id="query" resultMap="ClassGroupStudentMapper" parameterType="map">
-		SELECT * FROM class_group_student_mapper where class_group_id_ = #{classGroupId} and user_id_ = #{userId}
+		SELECT * FROM class_group_student_mapper where class_group_id_ = #{classGroupId} and user_id_ = #{userId} AND status_ IN ('NORMAL','LEAVE')
 	</select>
     <select id="findStudentNumByClassGroupId" resultType="string">
         SELECT
@@ -124,7 +124,7 @@
             su.id_ student_id_,
             su.username_,
             su.avatar_,
-            sa.status_
+            IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
         FROM
             course_schedule_student_payment cssp
             LEFT JOIN sys_user su ON cssp.user_id_ = su.id_

+ 15 - 3
mec-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml

@@ -156,13 +156,15 @@
 		<result property="musicGroupId" column="music_group_id_"/>
 		<result property="musicGroupName" column="music_group_name_"/>
 		<result property="createTime" column="create_time_"/>
+		<result property="day" column="day_"/>
 	</resultMap>
 
-	<select id="findByClassGroupAndTeacher">
+	<select id="findByClassGroupAndTeacher" resultMap="teacherHomeworkListDto">
 		SELECT
 			ch.id_ course_homework_id_,
 			ch.content_,
 			ch.create_time_,
+			DATE_FORMAT(ch.create_time_,'%Y-%m-%d') 'day_',
 			ch.expect_num_,
 			ch.completed_num_,
 			cs.name_ course_schedule_name_,
@@ -175,7 +177,14 @@
 			LEFT JOIN course_schedule_teacher_salary csts ON ch.course_schedule_id_=csts.course_schedule_id_
 			LEFT JOIN class_group cg ON ch.class_group_id_=cg.id_
 			LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
-			WHERE csts.user_id_=#{userId} AND ch.class_group_id_=#{classGroupId}
+			WHERE csts.user_id_=#{userId}
+			<if test="classGroupId!=null">
+				AND ch.class_group_id_=#{classGroupId}
+			</if>
+			<if test="createTime!=null">
+				AND DATE_FORMAT(ch.create_time_,'%Y%m')=DATE_FORMAT(#{createTime},'%Y%m')
+			</if>
+		  ORDER BY ch.id_ DESC
 	</select>
 	<select id="countByClassGroupAndTeacher" resultType="int">
 		SELECT
@@ -183,7 +192,10 @@
 		FROM
 			course_homework ch
 			LEFT JOIN course_schedule_teacher_salary csts ON ch.course_schedule_id_=csts.course_schedule_id_
-			WHERE csts.user_id_=#{userId} AND ch.class_group_id_=#{classGroupId}
+			WHERE csts.user_id_=#{userId}
+			<if test="classGroupId!=null">
+				AND ch.class_group_id_=#{classGroupId}
+			</if>
 	</select>
 	<select id="findByTeacherAndCourseHomewok" resultMap="CourseHomework">
 		SELECT

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

@@ -128,7 +128,7 @@
                 leave_student_num_ = #{leaveStudentNum},
             </if>
             <if test="schoolId != null">
-                school_id_ = #{schoolId},
+                schoole_id_ = #{schoolId},
             </if>
         </set>
         WHERE id_ = #{id}

+ 5 - 9
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -151,22 +151,18 @@
 
     <select id="getStudentAttendanceInfo" parameterType="com.ym.mec.biz.dal.entity.StudentAttendance" resultMap="StudentAttendance">
         SELECT
-            cgsm.class_group_id_,
-            su.id_ user_id_,
+            cs.class_group_id_,
+            #{userId} user_id_,
             mg.id_ music_group_id_,
-            s.id_ subject_id_,
             #{teacherId} teacher_id_,
             #{status} status_,
             #{remark} remark_,
             #{courseScheduleId} course_schedule_id_
         FROM
-            sys_user su
-            LEFT JOIN class_group_student_mapper cgsm ON cgsm.user_id_ = su.id_
-            LEFT JOIN class_group cg ON cg.id_ = cgsm.class_group_id_
+            course_schedule cs
+            LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
             LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
-            LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
-        WHERE
-            su.id_=#{userId} AND cs.id_=#{courseScheduleId}
+        WHERE cs.id_=#{courseScheduleId}
     </select>
 
     <select id="getStudentLatestAttendanceInfo" resultType="com.ym.mec.biz.dal.entity.StudentAttendance" resultMap="StudentAttendance">

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

@@ -10,6 +10,7 @@
 		<result column="id_" property="id" />
 		<result column="user_id_" property="userId"/>
 		<result column="username_" property="userName"/>
+		<result column="avatar_" property="avatar"/>
 		<result column="course_homework_id_" property="courseHomeworkId" />
 		<result column="attachments_" property="attachments" />
 		<result column="score_" property="score" />
@@ -213,7 +214,8 @@
 	<select id="findByCourseSchedule" resultMap="StudentCourseHomework">
 		SELECT
 			sch.*,
-			su.username_
+			su.username_,
+			su.avatar_
 		FROM
 			student_course_homework sch
 			LEFT JOIN sys_user su ON sch.user_id_=su.id_

+ 2 - 0
mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkReplyMapper.xml

@@ -20,6 +20,7 @@
         <result property="userId" column="comment_user_id_"></result>
         <result property="userName" column="comment_user_name_"></result>
         <result property="avatar" column="avatar_"/>
+        <result property="isTeacher" column="is_teacher_"/>
         <result property="content" column="comment_content_"></result>
         <result property="createTime" column="comment_time"></result>
     </resultMap>
@@ -95,6 +96,7 @@
             schr.user_id_ comment_user_id_,
             suc.username_ comment_user_name_,
             suc.avatar_,
+            IF(suc.user_type_!='STUDENT',1,0) is_teacher_,
             schr.content_ comment_content_,
             schr.create_time_ comment_time
         FROM

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

@@ -28,8 +28,6 @@
         <result column="parents_company_" property="parentsCompany"/>
         <result column="payment_status_" property="paymentStatus"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result column="last_payment_date_" property="lastPaymentDate"/>
-        <result column="next_payment_date_" property="nextPaymentDate"/>
         <result column="music_group_status_" property="musicGroupStatus"/>
     </resultMap>
     
@@ -297,6 +295,6 @@
 
     <!-- 获取班级下的学生 -->
     <select id="findClassGroupStu" resultMap="StudentRegistration">
-        SELECT * FROM student_registration WHERE music_group_id_= #{musicGroupId} AND class_group_id_=#{classGroupId}
+        SELECT * FROM student_registration WHERE music_group_id_= #{musicGroupId} AND FIND_IN_SET(#{classGroupId},class_group_id_)
     </select>
 </mapper>

+ 23 - 5
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -34,6 +34,7 @@
         <result column="vip_group_category_id_" property="vipGroupCategoryId"/>
         <result column="give_teach_mode_" property="giveTeachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="organ_id_" property="organId"/>
+        <result column="stop_reason_" property="stopReason"/>
     </resultMap>
     
     <resultMap type="com.ym.mec.biz.dal.entity.School" id="School">
@@ -162,8 +163,8 @@
         </selectKey>
         -->
         INSERT INTO vip_group
-        (id_,user_id_,single_class_minutes_,payment_expire_date_,courses_expire_date_,create_time_,update_time_,teacher_school_id_,online_classes_num_,offline_classes_num_,registration_start_time_,name_,organ_id_list_,vip_group_activity_id_,status_,online_classes_unit_price_,offline_classes_unit_price_,total_price_,give_teach_mode_,vip_group_category_id_,organ_id_)
-        VALUES(#{id},#{userId},#{singleClassMinutes},#{paymentExpireDate},#{coursesExpireDate},now(),now(),#{teacherSchoolId},#{onlineClassesNum},#{offlineClassesNum},#{registrationStartTime},#{name},#{organIdList},#{vipGroupActivityId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{onlineClassesUnitPrice},#{offlineClassesUnitPrice},#{totalPrice},#{giveTeachMode},#{vipGroupCategoryId},#{organId})
+        (id_,user_id_,single_class_minutes_,payment_expire_date_,courses_expire_date_,create_time_,update_time_,teacher_school_id_,online_classes_num_,offline_classes_num_,registration_start_time_,name_,organ_id_list_,vip_group_activity_id_,status_,online_classes_unit_price_,offline_classes_unit_price_,total_price_,give_teach_mode_,vip_group_category_id_,organ_id_,stop_reason_)
+        VALUES(#{id},#{userId},#{singleClassMinutes},#{paymentExpireDate},#{coursesExpireDate},now(),now(),#{teacherSchoolId},#{onlineClassesNum},#{offlineClassesNum},#{registrationStartTime},#{name},#{organIdList},#{vipGroupActivityId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{onlineClassesUnitPrice},#{offlineClassesUnitPrice},#{totalPrice},#{giveTeachMode},#{vipGroupCategoryId},#{organId},#{stopReason})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -227,6 +228,9 @@
             <if test="organId!=null">
                 organ_id_=#{organId}
             </if>
+            <if test="stopReason!=null">
+                stop_reason_=#{stopReason}
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>
@@ -561,9 +565,7 @@
     </select>
     <select id="countTeacherVipGroups" resultType="int">
         SELECT COUNT(vg.id_) FROM vip_group vg
-        LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
-        LEFT JOIN course_schedule cs ON cs.class_group_id_ = vgcgm.class_group_id_
-        WHERE cs.actual_teacher_id_ = #{teacherId} AND cs.type_ = 'VIP' AND status_!=3 GROUP BY vg.id_
+        WHERE vg.user_id_ = #{teacherId} AND vg.status_!=3
     </select>
 
     <select id="countTeacherVipClass" resultType="java.lang.Integer">
@@ -607,4 +609,20 @@
     <select id="querySchoolByUserId" resultMap="School">
         SELECT * from school where user_id_ = #{userId} or user_id_ is null
     </select>
+
+    <select id="countVipGroupOverCourse" resultType="java.util.Map">
+        SELECT
+            vgcgm.vip_group_id_,
+            COUNT(cs.Id_)
+        FROM
+            vip_group_class_group_mapper vgcgm
+            LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
+            WHERE cs.status_='OVER'
+            AND DATE_FORMAT(cs.class_date_,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d')
+            AND vgcgm.vip_group_id_ IN
+            <foreach collection="list" item="id" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        GROUP BY vgcgm.vip_group_id_
+    </select>
 </mapper>

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/config/ResourceServerConfig.java

@@ -24,7 +24,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 
 	@Override
 	public void configure(HttpSecurity http) throws Exception {
-		http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and().authorizeRequests().antMatchers("/v2/api-docs").permitAll().anyRequest().authenticated().and().httpBasic();
+		http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and().authorizeRequests().antMatchers("/v2/api-docs","/classGroup/revisionClassGroup").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

+ 11 - 12
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.ClassGroupAdjustDto;
 import com.ym.mec.biz.dal.dto.HighClassGroupDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
@@ -93,7 +94,7 @@ public class ClassGroupController extends BaseController {
     @GetMapping("/findClassGroupAboutMix")
     @PreAuthorize("@pcs.hasPermissions('classGroup/findClassGroupAboutMix')")
     public HttpResponseResult findClassGroupAboutMix(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId,
-                                         @ApiParam(value = "班级编号", required = false) Integer mixClassGroupId) {
+                                                     @ApiParam(value = "班级编号", required = false) Integer mixClassGroupId) {
         return succeed(classGroupService.findClassGroup(musicGroupId, mixClassGroupId));
     }
 
@@ -140,7 +141,7 @@ public class ClassGroupController extends BaseController {
     @GetMapping("/findMusicGroupClassTeacher")
     @PreAuthorize("@pcs.hasPermissions('classGroup/findMusicGroupClassTeacher')")
     public HttpResponseResult findMusicGroupClassTeacher(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
-        return succeed(classGroupService.getClassGroupAndTeachers(musicGroupId,"NORMAL,MIX"));
+        return succeed(classGroupService.getClassGroupAndTeachers(musicGroupId, "NORMAL,MIX"));
     }
 
     @ApiOperation(value = "获取乐团班级老师课酬")
@@ -182,23 +183,21 @@ public class ClassGroupController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('classGroup/addMusicGroupTeam')")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
             @ApiImplicitParam(name = "teacherId", value = "老师编号", required = true, dataType = "Integer")})
-    public Object addMusicGroupTeam(Integer teacherId,String musicGroupId,Integer improventClassesNum) throws Exception {
-        if(teacherId == null || StringUtils.isEmpty(musicGroupId) || improventClassesNum == null){
+    public Object addMusicGroupTeam(Integer teacherId, String musicGroupId, Integer improventClassesNum) throws Exception {
+        if (teacherId == null || StringUtils.isEmpty(musicGroupId) || improventClassesNum == null) {
             return failed("参数校验错误");
         }
-        classGroupService.addMusicGroupTeam(teacherId,musicGroupId,improventClassesNum);
+        classGroupService.addMusicGroupTeam(teacherId, musicGroupId, improventClassesNum);
         return succeed();
     }
 
 
-    @ApiOperation(value = "合并班级")
-    @PostMapping("/mergeClassGroup")
-    @PreAuthorize("@pcs.hasPermissions('classGroup/mergeClassGroup')")
+    @ApiOperation(value = "调整班级")
+    @PostMapping("/revisionClassGroup")
+    @PreAuthorize("@pcs.hasPermissions('classGroup/revisionClassGroup')")
     @ApiImplicitParams({@ApiImplicitParam(name = "classGroupIds", value = "班级编号,号分割", required = true, dataType = "String")})
-    public HttpResponseResult mergeClassGroup(String classGroupIds) throws Exception {
-        //软删除班级
-
-        return succeed();
+    public HttpResponseResult revisionClassGroup(@RequestBody ClassGroupAdjustDto classGroupAdjustDto) throws Exception {
+        return succeed(classGroupService.classGroupAdjust(classGroupAdjustDto));
     }
 
 }

+ 5 - 4
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -17,6 +17,7 @@ import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -123,11 +124,11 @@ public class VipGroupManageController extends BaseController {
     @ApiOperation(value = "停止vip课")
     @PostMapping("/stopVipGroup")
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/stopVipGroup')")
-    public Object stopVipGroup(Long vipGroupId){
-        if(Objects.isNull(vipGroupId)){
-            return failed(HttpStatus.FORBIDDEN,"请指定vip课");
+    public Object stopVipGroup(Long vipGroupId,String stopReason){
+        if(Objects.isNull(vipGroupId)|| StringUtils.isBlank(stopReason)){
+            return failed(HttpStatus.FORBIDDEN,"请指定vip课并指定取消原因");
         }
-        vipGroupService.stopGroup(vipGroupId);
+        vipGroupService.stopGroup(vipGroupId,stopReason);
         return succeed();
     }