ソースを参照

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

yonge 5 年 前
コミット
751b5da6d6
37 ファイル変更793 行追加190 行削除
  1. 1 0
      .gitignore
  2. 26 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DemoGroupDao.java
  3. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  5. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ConditionDto.java
  6. 54 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/QueryConditionDto.java
  7. 20 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentDemoGroupListDto.java
  8. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupDetailDto.java
  9. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupShowListDto.java
  10. 40 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherManageDemoGroupListDto.java
  11. 23 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/DemoGroup.java
  12. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EmployeeOperateEnum.java
  13. 18 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentDemoGroupQueryInfo.java
  14. 9 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentVipGroupQueryInfo.java
  15. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherManageDemoGroupQueryInfo.java
  16. 18 1
      mec-biz/src/main/java/com/ym/mec/biz/service/DemoGroupService.java
  17. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
  18. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  19. 72 25
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java
  20. 21 27
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  21. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentWithdrawServiceImpl.java
  22. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  23. 75 22
      mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml
  24. 49 3
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  25. 12 0
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  26. 1 1
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  27. 13 2
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  28. 0 52
      mec-common/common-core/src/main/java/com/ym/mec/common/utils/DateUtils.java
  29. 2 2
      mec-education/src/main/java/com/ym/mec/education/controller/ClassGroupController.java
  30. 1 2
      mec-education/src/main/java/com/ym/mec/education/controller/CourseScheduleController.java
  31. 1 4
      mec-education/src/main/java/com/ym/mec/education/req/ClassGroupReq.java
  32. 3 3
      mec-student/src/main/java/com/ym/mec/student/controller/StudentDemoGroupController.java
  33. 9 8
      mec-student/src/main/java/com/ym/mec/student/controller/StudentVipGroupController.java
  34. 7 4
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/DemoGroupController.java
  35. 30 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherSubjectController.java
  36. 34 5
      mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java
  37. 151 0
      mec-web/src/test/java/com/ym/webApplicationTest.java

+ 1 - 0
.gitignore

@@ -10,3 +10,4 @@ bin
 /p2p-utils/.gitignore
 .idea
 *.iml
+test

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

@@ -1,11 +1,13 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.StudentDemoGroupListDto;
+import com.ym.mec.biz.dal.dto.TeacherManageDemoGroupListDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.DemoGroup;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -30,7 +32,9 @@ public interface DemoGroupDao extends BaseDAO<Long, DemoGroup> {
      * @Date: 2019/9/25
      * 根据试听课信息构造课程计划
      */
-    List<CourseSchedule> createCourseScheduleByDemoGroup(@Param("demoGroup") DemoGroup demoGroup);
+    List<CourseSchedule> createCourseScheduleByDemoGroup(@Param("demoGroup") DemoGroup demoGroup,
+                                                         @Param("startTime") Date startTime,
+                                                         @Param("classGroupId") Long classGroupId);
 
     /**
      * @Author: Joburgess
@@ -59,5 +63,26 @@ public interface DemoGroupDao extends BaseDAO<Long, DemoGroup> {
      * 根据试听课ID获取关联班级ID
      */
     Integer findClassGroupIDByDemoGroupId(Long demoGroupId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/26
+     * 根据老师编号获取试听课
+     */
+    DemoGroup findDemoGroupByTeacherId(Long teacherId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/26
+     * 获取老师试听课安排
+     */
+    List<TeacherManageDemoGroupListDto> findTeacherDemoGroups(Map<String,Object> params);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/26
+     * 统计老师试听课安排
+     */
+    int countTeacherDemoGroups(Map<String,Object> params);
 	
 }

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.EmployeeDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.common.dal.BaseDAO;
@@ -39,4 +40,21 @@ public interface EmployeeDao extends BaseDAO<Integer, Employee> {
      */
     int updateUserLockStatus(@Param("userID") Long userID);
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 修改用户离职日期
+     */
+    int updateUserDemissionDate(@Param("userID") Long userID);
+
+
+    int addUser(SysUser user);
+
+    /**
+     * 根据手机号查询对象
+     * @param phone
+     * @return
+     */
+    SysUser queryByPhone(String phone);
+
 }

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

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.ConditionDto;
+import com.ym.mec.biz.dal.dto.QueryConditionDto;
 import com.ym.mec.biz.dal.dto.SubjectApplyDetailDto;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
@@ -59,4 +61,13 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
      * @return
      */
     List<String> findBySubIds(String subIds);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/26
+     * 获取教师所属科目列表
+     */
+    List<Subject> findTeacherSubjects(Long teacherId);
+
+    List<ConditionDto> findSubjectConditions();
 }

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

@@ -14,6 +14,9 @@ public class ConditionDto {
     @ApiModelProperty(value = "条件名称",required = false)
     private String name;
 
+    public ConditionDto() {
+    }
+
     public ConditionDto(Long id, String name) {
         this.id = id;
         this.name = name;

+ 54 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/QueryConditionDto.java

@@ -0,0 +1,54 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/26
+ */
+public class QueryConditionDto {
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "服务器所需字段名称")
+    private String conditionName;
+
+    @ApiModelProperty(value = "条件")
+    private List<ConditionDto> conditons;
+
+    public QueryConditionDto() {
+    }
+
+    public QueryConditionDto(String name, String conditionName, List<ConditionDto> conditons) {
+        this.name = name;
+        this.conditionName = conditionName;
+        this.conditons = conditons;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getConditionName() {
+        return conditionName;
+    }
+
+    public void setConditionName(String conditionName) {
+        this.conditionName = conditionName;
+    }
+
+    public List<ConditionDto> getConditons() {
+        return conditons;
+    }
+
+    public void setConditons(List<ConditionDto> conditons) {
+        this.conditons = conditons;
+    }
+}

+ 20 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentDemoGroupListDto.java

@@ -1,7 +1,10 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.entity.DemoGroupCoursesPlan;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.List;
+
 /**
  * @Author Joburgess
  * @Date 2019/9/25
@@ -26,8 +29,19 @@ public class StudentDemoGroupListDto {
     @ApiModelProperty(value = "授课次数",required = false)
     private Integer numberOfClasses;
 
-    @ApiModelProperty(value = "科目名称列表,逗号分隔",required = false)
-    private String subjectList;
+    @ApiModelProperty(value = "科目名称",required = false)
+    private String subjectName;
+
+    @ApiModelProperty(value = "上课时间列表",required = false)
+    private List<DemoGroupCoursesPlan> coursesPlans;
+
+    public List<DemoGroupCoursesPlan> getCoursesPlans() {
+        return coursesPlans;
+    }
+
+    public void setCoursesPlans(List<DemoGroupCoursesPlan> coursesPlans) {
+        this.coursesPlans = coursesPlans;
+    }
 
     public Long getDemoGroupId() {
         return demoGroupId;
@@ -77,11 +91,11 @@ public class StudentDemoGroupListDto {
         this.numberOfClasses = numberOfClasses;
     }
 
-    public String getSubjectList() {
-        return subjectList;
+    public String getSubjectName() {
+        return subjectName;
     }
 
-    public void setSubjectList(String subjectList) {
-        this.subjectList = subjectList;
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
     }
 }

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

@@ -4,6 +4,8 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.List;
+
 /**
  * @Author Joburgess
  * @Date 2019/9/23
@@ -11,13 +13,13 @@ import io.swagger.annotations.ApiModelProperty;
 public class StudentVipGroupDetailDto extends StudentVipGroupShowListDto {
 
     @ApiModelProperty(value = "课程列表",required = false)
-    private CourseSchedule courseSchedules;
+    private List<CourseSchedule> courseSchedules;
 
-    public CourseSchedule getCourseSchedules() {
+    public List<CourseSchedule> getCourseSchedules() {
         return courseSchedules;
     }
 
-    public void setCourseSchedules(CourseSchedule courseSchedules) {
+    public void setCourseSchedules(List<CourseSchedule> courseSchedules) {
         this.courseSchedules = courseSchedules;
     }
 }

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

@@ -41,9 +41,20 @@ public class StudentVipGroupShowListDto {
     @ApiModelProperty(value = "教师名称",required = false)
     private String teacherName;
 
+    @ApiModelProperty(value = "教师简介",required = false)
+    private String introduction;
+
     @ApiModelProperty(value = "教师头像",required = false)
     private String avatar;
 
+    public String getIntroduction() {
+        return introduction;
+    }
+
+    public void setIntroduction(String introduction) {
+        this.introduction = introduction;
+    }
+
     public String getAvatar() {
         return avatar;
     }

+ 40 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherManageDemoGroupListDto.java

@@ -0,0 +1,40 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/26
+ */
+public class TeacherManageDemoGroupListDto {
+
+    private Date classDate;
+
+    private String startTimes;
+
+    private String subjectNames;
+
+    public Date getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(Date classDate) {
+        this.classDate = classDate;
+    }
+
+    public String getStartTimes() {
+        return startTimes;
+    }
+
+    public void setStartTimes(String startTimes) {
+        this.startTimes = startTimes;
+    }
+
+    public String getSubjectNames() {
+        return subjectNames;
+    }
+
+    public void setSubjectNames(String subjectNames) {
+        this.subjectNames = subjectNames;
+    }
+}

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

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.entity;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.math.BigDecimal;
+
 /**
  * 对应数据库表(demo_group):
  */
@@ -27,7 +29,27 @@ public class DemoGroup {
 	
 	/** 老师编号 */
 	private Integer userId;
-	
+
+	private BigDecimal price;
+
+	private Long subjectId;
+
+	public Long getSubjectId() {
+		return subjectId;
+	}
+
+	public void setSubjectId(Long subjectId) {
+		this.subjectId = subjectId;
+	}
+
+	public BigDecimal getPrice() {
+		return price;
+	}
+
+	public void setPrice(BigDecimal price) {
+		this.price = price;
+	}
+
 	public void setId(Long id){
 		this.id = id;
 	}

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

@@ -10,7 +10,8 @@ public enum  EmployeeOperateEnum implements BaseEnum<Integer, DealStatusEnum> {
 
     RESET_PASSWORD(0,"重置密码"),
     LOCK_UNLOCK(1,"冻结/解冻"),
-    DEMISSION(2,"离职");
+    DEMISSION(2,"离职"),
+    REINSTATE(3,"复职");
 
     private Integer code;
 

+ 18 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentDemoGroupQueryInfo.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.page;
 
 import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author Joburgess
@@ -8,13 +9,25 @@ import com.ym.mec.common.page.QueryInfo;
  */
 public class StudentDemoGroupQueryInfo extends QueryInfo {
 
-    private String teacherName;
+    @ApiModelProperty(value = "科目ID,多个逗号分隔",required = false)
+    private String subjectIds;
 
-    public String getTeacherName() {
-        return teacherName;
+    @ApiModelProperty(value = "开始时间,多个逗号分隔",required = false)
+    private String startTimes;
+
+    public String getSubjectIds() {
+        return subjectIds;
+    }
+
+    public void setSubjectIds(String subjectIds) {
+        this.subjectIds = subjectIds;
+    }
+
+    public String getStartTimes() {
+        return startTimes;
     }
 
-    public void setTeacherName(String teacherName) {
-        this.teacherName = teacherName;
+    public void setStartTimes(String startTimes) {
+        this.startTimes = startTimes;
     }
 }

+ 9 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentVipGroupQueryInfo.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.page;
 
 import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author Joburgess
@@ -8,23 +9,25 @@ import com.ym.mec.common.page.QueryInfo;
  */
 public class StudentVipGroupQueryInfo extends QueryInfo {
 
-    private Long subjectId;
+    @ApiModelProperty(value = "科目ID",required = false)
+    private String subjectId;
 
-    private Long classType;
+    @ApiModelProperty(value = "课程类型",required = false)
+    private String classType;
 
-    public Long getSubjectId() {
+    public String getSubjectId() {
         return subjectId;
     }
 
-    public void setSubjectId(Long subjectId) {
+    public void setSubjectId(String subjectId) {
         this.subjectId = subjectId;
     }
 
-    public Long getClassType() {
+    public String getClassType() {
         return classType;
     }
 
-    public void setClassType(Long classType) {
+    public void setClassType(String classType) {
         this.classType = classType;
     }
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherManageDemoGroupQueryInfo.java

@@ -0,0 +1,22 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/26
+ */
+public class TeacherManageDemoGroupQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "教师编号")
+    private Long teacherId;
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+}

+ 18 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/DemoGroupService.java

@@ -1,9 +1,12 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.DemoGroupApplyDto;
+import com.ym.mec.biz.dal.dto.TeacherManageDemoGroupListDto;
 import com.ym.mec.biz.dal.entity.DemoGroup;
 import com.ym.mec.biz.dal.page.StudentDemoGroupQueryInfo;
+import com.ym.mec.biz.dal.page.TeacherManageDemoGroupQueryInfo;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface DemoGroupService extends BaseService<Long, DemoGroup> {
@@ -27,6 +30,20 @@ public interface DemoGroupService extends BaseService<Long, DemoGroup> {
      * @Date: 2019/9/25
      * 试听课订阅
      */
-    void demoGroupSubscribe(Long demoGroupId);
+    void demoGroupSubscribe(Long demoGroupId,Long coursePlanId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/26
+     * 根据教师编号获取试听课信息
+     */
+    DemoGroup getDemoGroupByTeacherId();
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/26
+     * 获取教师试听课安排
+     */
+    PageInfo findTeacherDemoGroups(TeacherManageDemoGroupQueryInfo queryInfo);
 
 }

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

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.ConditionDto;
+import com.ym.mec.biz.dal.dto.QueryConditionDto;
 import com.ym.mec.biz.dal.dto.SubjectApplyDetailDto;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.entity.SubjectGoodsMapper;
@@ -52,4 +54,13 @@ public interface SubjectService extends BaseService<Integer, Subject> {
      * @param subjectGoodsMappers
      */
     void markGoods(List<SubjectGoodsMapper> subjectGoodsMappers);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/26
+     * 获取教师所属科目列表
+     */
+    List<Subject> findTeacherSubjects();
+
+    List<ConditionDto> findSubjectConditions();
 }

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

@@ -11,8 +11,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
-import com.ym.mec.common.utils.DateUtils;
-import io.swagger.models.auth.In;
+import com.ym.mec.util.date.DateUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -148,7 +147,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 		}else{
 			//根据时间段调整课时
-			List<Date> dates= DateUtils.getWeekDays(classDateAdjustDto.getAdjustStartTime(),classDateAdjustDto.getAdjustEndTime(),classDateAdjustDto.getWeekNum());
+			List<Date> dates= DateUtil.getWeekDays(classDateAdjustDto.getAdjustStartTime(),classDateAdjustDto.getAdjustEndTime(),classDateAdjustDto.getWeekNum());
 			List<CourseSchedule> coursesByDates = courseScheduleDao.findOverLapCoursesInDay(dates,classDateAdjustDto.getStartClassTime(),classDateAdjustDto.getEndClassTime());
 			//判断是否存在同时间上课的班级
 			if(null==coursesByDates||coursesByDates.size()<=0){

+ 72 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java

@@ -4,21 +4,21 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.DemoGroupApplyDto;
+import com.ym.mec.biz.dal.dto.TeacherManageDemoGroupListDto;
 import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.DemoGroupClassGroupMapper;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.StudentDemoGroupQueryInfo;
+import com.ym.mec.biz.dal.page.TeacherManageDemoGroupQueryInfo;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import com.ym.mec.biz.dal.entity.DemoGroup;
 import com.ym.mec.biz.service.DemoGroupService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
@@ -54,21 +54,23 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 	@Override
 	public void demoGroupApply(DemoGroupApplyDto demoGroupApplyDto) {
 		SysUser user = sysUserFeignService.queryUserInfo();
+
+		if(null!=demoGroupDao.findDemoGroupByTeacherId(user.getId().longValue())){
+			throw new BizException("请勿多次创建试听课!");
+		}
+
 		demoGroupApplyDto.setUserId(user.getId());
 		demoGroupDao.insert(demoGroupApplyDto);
-		ClassGroup classGroup=new ClassGroup();
-		classGroup.setName(demoGroupApplyDto.getName());
-		classGroup.setType(ClassGroupTypeEnum.DEMO);
-		classGroup.setDelFlag(YesOrNoEnum.NO);
-		classGroupDao.insert(classGroup);
-		DemoGroupClassGroupMapper demoGroupClassGroupMapper=new DemoGroupClassGroupMapper();
-		demoGroupClassGroupMapper.setDemoGroupId(demoGroupApplyDto.getId());
-		demoGroupClassGroupMapper.setClassGroupId(classGroup.getId());
-		demoGroupClassGroupMapperDao.insert(demoGroupClassGroupMapper);
 		demoGroupCoursesPlanDao.batchInsertByDates(demoGroupApplyDto.getCourseDates(),demoGroupApplyDto.getId());
 	}
 
 	@Override
+	public DemoGroup getDemoGroupByTeacherId() {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		return demoGroupDao.findDemoGroupByTeacherId(user.getId().longValue());
+	}
+
+	@Override
 	public PageInfo queryStudentDemoGroups(StudentDemoGroupQueryInfo queryInfo) {
 		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<String, Object>();
@@ -90,14 +92,8 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 
 	@Transactional(rollbackFor = Exception.class)
 	@Override
-	public void demoGroupSubscribe(Long demoGroupId) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		ClassGroupStudentMapper classGroupStudentMapper=new ClassGroupStudentMapper();
-		classGroupStudentMapper.setClassGroupId(demoGroupDao.findClassGroupIDByDemoGroupId(demoGroupId));
-		classGroupStudentMapper.setUserId(user.getId());
-		classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-		classGroupStudentMapperDao.insert(classGroupStudentMapper);
-		createCourseScheduleAndUpdateOrganId(demoGroupId);
+	public void demoGroupSubscribe(Long demoGroupId,Long coursePlanId) {
+		createCourseScheduleAndUpdateOrganId(demoGroupId,coursePlanId);
 	}
 
 	/**
@@ -105,16 +101,67 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 	 * @Date: 2019/9/25
 	 * 创建上课计划及跟新所属分部列表
 	 */
-	public void createCourseScheduleAndUpdateOrganId(Long demoGroupId){
+	public void createCourseScheduleAndUpdateOrganId(Long demoGroupId,Long coursePlanId){
 		DemoGroup demoGroup=demoGroupDao.get(demoGroupId);
-		if(demoGroupDao.countDemoGroupStudents(demoGroupId)>0){
-			courseScheduleDao.batchAddCourseSchedules(demoGroupDao.createCourseScheduleByDemoGroup(demoGroup));
-		}
+
+		SysUser user = sysUserFeignService.queryUserInfo();
+
+		//创建班级
+		ClassGroup classGroup=new ClassGroup();
+		classGroup.setName(demoGroup.getName());
+		classGroup.setType(ClassGroupTypeEnum.DEMO);
+		classGroup.setDelFlag(YesOrNoEnum.NO);
+		classGroupDao.insert(classGroup);
+
+		//创建试听课班级映射
+		DemoGroupClassGroupMapper demoGroupClassGroupMapper=new DemoGroupClassGroupMapper();
+		demoGroupClassGroupMapper.setDemoGroupId(demoGroup.getId());
+		demoGroupClassGroupMapper.setClassGroupId(classGroup.getId());
+		demoGroupClassGroupMapperDao.insert(demoGroupClassGroupMapper);
+
+		//创建班级学生映射
+		ClassGroupStudentMapper classGroupStudentMapper=new ClassGroupStudentMapper();
+		classGroupStudentMapper.setClassGroupId(classGroup.getId());
+		classGroupStudentMapper.setUserId(user.getId());
+		classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+		classGroupStudentMapperDao.insert(classGroupStudentMapper);
+
+		//创建课程
+		DemoGroupCoursesPlan demoGroupCoursesPlan=demoGroupCoursesPlanDao.get(coursePlanId);
+		courseScheduleDao.batchAddCourseSchedules(demoGroupDao.createCourseScheduleByDemoGroup(
+				demoGroup,
+				demoGroupCoursesPlan.getCoursesStartTime(),
+				classGroup.getId().longValue()));
+
+		//更新所属分部列表
 		List<Integer> organIds = demoGroupDao.organIdListByDemoGroupId(demoGroup.getId());
 		organIds.add(demoGroupDao.getOrganIdByUserId(demoGroup.getUserId().longValue()));
 		HashSet<Integer> hashSet = new HashSet<>(organIds);
 		String organIdsString = StringUtils.join(hashSet, ",");
 		demoGroup.setOrganIdList(organIdsString);
 		demoGroupDao.update(demoGroup);
+
+		//删除临时课程计划
+		demoGroupCoursesPlanDao.delete(coursePlanId);
+	}
+
+	@Override
+	public PageInfo findTeacherDemoGroups(TeacherManageDemoGroupQueryInfo queryInfo) {
+		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List dataList = null;
+		int count = demoGroupDao.countTeacherDemoGroups(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = demoGroupDao.findTeacherDemoGroups(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
 	}
 }

+ 21 - 27
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -65,22 +65,28 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	public void add(Employee employee) throws Exception {
 		SysUser user = sysUserFeignService.getUserByMobile(employee.getPhone());
 		if(user != null){
-			employee.setUserType(SysUserType.SYSTEM);
-			teacherDao.updateUser(employee);
+            user.setUserType(SysUserType.SYSTEM);
+			teacherDao.updateUser(user);
+            employee.setUserId(user.getId());
+            employeeDao.insert(employee);
 			return;
 		}
-		//保存用户表信息
-		sysUserFeignService.addUser(employee);
-		//注册到融云
-
-		//保存教师表数据
-		employeeDao.insert(employee);
+		employee.setPassword(new BCryptPasswordEncoder().encode(ParamEnum.INIT_PASSWORD.getCode().toString()));
+		employee.setUserType(SysUserType.SYSTEM);
+		employeeDao.addUser(employee);
+        employee.setUserId(employee.getId());
+        employeeDao.insert(employee);
 	}
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void updateEmployee(Employee employee) {
-		employeeDao.update(employee);
+		Employee employee1 = employeeDao.get(employee.getUserId());
+		if(null==employee1){
+			employeeDao.insert(employee);
+		}else{
+			employeeDao.update(employee);
+		}
 		teacherDao.updateUser(employee);
 	}
 
@@ -94,21 +100,9 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 
 	@Override
 	public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws IOException {
-		String url = "http://auth-server/queryUserInfo";
-
-		String base64ClientCredentials = Base64.getEncoder().encodeToString("app:app".getBytes());
-
-		HttpHeaders headers = new HttpHeaders();
-		headers.add("Authorization", "bearer " + SecurityUtils.getToken());
-		headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+		SysUser user = sysUserFeignService.queryUserInfo();
 
-		HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(null, headers);
-
-		ResponseEntity<String> resp = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
-
-		Map map = objectMapper.readValue(resp.getBody(), Map.class);
-
-		queryInfo.setOrganId(Long.valueOf(map.get("organId").toString()));
+		queryInfo.setOrganId(user.getOrganId().longValue());
 		PageInfo<EmployeeDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<String, Object>();
 		MapUtil.populateMap(params, queryInfo);
@@ -137,10 +131,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 				employeeDao.updateUserLockStatus(employeeId);
 				break;
 			case DEMISSION:
-				Employee employee=new Employee();
-				employee.setUserId(employeeId.intValue());
-				employee.setDemissionDate(new Date());
-				employeeDao.update(employee);
+				employeeDao.updateUserDemissionDate(employeeId);
+				break;
+			case REINSTATE:
+				employeeDao.updateUserDemissionDate(employeeId);
 				break;
 		}
 	}

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

@@ -14,13 +14,12 @@ import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.biz.dal.enums.TransTypeEnum;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.utils.DateUtils;
+import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.string.IdWorker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 import com.ym.mec.biz.dal.dao.StudentWithdrawDao;
 import com.ym.mec.biz.dal.entity.StudentWithdraw;
@@ -99,7 +98,7 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 			WithdrawInfoDto withdrawInfoDto = new WithdrawInfoDto();
 			StudentWithdraw studentWithdraw = studentWithdrawDao.getByUserId(data.getUserId().longValue());
 			withdrawInfoDto.setWithdrawId(studentWithdraw.getId());
-			withdrawInfoDto.setDateTime(DateUtils.date2ChineseDate(studentWithdraw.getCreateTime()));
+			withdrawInfoDto.setDateTime(DateUtil.date2ChineseDate(studentWithdraw.getCreateTime()));
 			withdrawInfoDto.setAmount(data.getAmount());
 			withdrawInfoDto.setBalance(data.getBalance());
 			withdrawInfoDto.setTransTypeName(TransTypeEnum.getDescriptionByCode(data.getTransType().getCode()));

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

@@ -1,8 +1,12 @@
 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.StudentRegistrationDao;
 import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dao.SubjectGoodsMapperDao;
+import com.ym.mec.biz.dal.dto.ConditionDto;
+import com.ym.mec.biz.dal.dto.QueryConditionDto;
 import com.ym.mec.biz.dal.dto.SubjectApplyDetailDto;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.entity.SubjectGoodsMapper;
@@ -28,6 +32,8 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  imple
 	private StudentRegistrationDao studentRegistrationDao;
 	@Autowired
 	private SubjectGoodsMapperDao subjectGoodsMapperDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
 	@Override
 	public BaseDAO<Integer, Subject> getDAO() {
@@ -122,4 +128,14 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  imple
 		}
 		return sub;
 	}
+
+	@Override
+	public List<Subject> findTeacherSubjects() {
+		return subjectDao.findTeacherSubjects(sysUserFeignService.queryUserInfo().getId().longValue());
+	}
+
+	@Override
+	public List<ConditionDto> findSubjectConditions() {
+		return subjectDao.findSubjectConditions();
+	}
 }

+ 75 - 22
mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml

@@ -14,6 +14,8 @@
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 		<result column="user_id_" property="userId" />
+		<result column="price_" property="price"/>
+		<result column="subject_id_" property="subjectId"/>
 	</resultMap>
 
 	<resultMap id="studentDemoGroupListDto" type="com.ym.mec.biz.dal.dto.StudentDemoGroupListDto">
@@ -23,7 +25,8 @@
 		<result property="avatar" column="avatar_"/>
 		<result property="introduction" column="introduction_"/>
 		<result property="numberOfClasses" column="number_of_classes_"/>
-		<result property="subjectList" column="subject_list_"/>
+		<result property="subjectName" column="subject_name_"/>
+		<collection property="coursesPlans" resultMap="com.ym.mec.biz.dal.dao.DemoGroupCoursesPlanDao.DemoGroupCoursesPlan" column="dgcp.id_"/>
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -43,7 +46,7 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
 		</selectKey>
 		-->
-		INSERT INTO demo_group (id_,name_,single_class_minutes_,organ_id_list_,create_time_,update_time_,user_id_) VALUES(#{id},#{name},#{singleClassMinutes},#{organIdList},#{createTime},#{updateTime},#{userId})
+		INSERT INTO demo_group (id_,name_,single_class_minutes_,organ_id_list_,create_time_,update_time_,user_id_,price_,subject_id_) VALUES(#{id},#{name},#{singleClassMinutes},#{organIdList},#{createTime},#{updateTime},#{userId},#{price},#{subjectId})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -70,6 +73,12 @@ name_ = #{name},
 <if test="createTime != null">
 create_time_ = #{createTime},
 </if>
+		<if test="price != null">
+			price_ = #{price},
+		</if>
+		<if test="subjectId != null">
+			subject_id_ = #{subjectId},
+		</if>
 </set> WHERE id_ = #{id} 
 	</update>
 	
@@ -100,9 +109,9 @@ create_time_ = #{createTime},
 	<select id="getOrganIdByUserId" resultType="java.lang.Integer">
 		select organ_id_ from sys_user where id_=#{userId}
 	</select>
-	<select id="createCourseScheduleByDemoGroupId" parameterType="com.ym.mec.biz.dal.entity.DemoGroup" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule">
+	<select id="createCourseScheduleByDemoGroup" parameterType="com.ym.mec.biz.dal.entity.DemoGroup" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule">
 		SELECT
-			dgcgm.class_group_id_ class_group_id_,
+			#{classGroupId} class_group_id_,
 			'NOT_START' status_,
 			DATE_FORMAT(dgcp.courses_start_time_,'%Y-%m-%d') class_date_,
 			dgcp.courses_start_time_ start_class_time_,
@@ -112,7 +121,7 @@ create_time_ = #{createTime},
 		FROM
 			demo_group_courses_plan dgcp
 			LEFT JOIN demo_group_class_group_mapper dgcgm ON dgcp.demo_group_id_=dgcgm.demo_group_id_
-			WHERE dgcp.demo_group_id_=#{demoGroup.id} AND dgcp.courses_start_time_ &gt; NOW()
+			WHERE dgcp.demo_group_id_=#{demoGroup.id} AND dgcp.courses_start_time_ = #{startTime}
 	</select>
 	<select id="countDemoGroupStudents" resultType="java.lang.Integer">
 		SELECT
@@ -125,30 +134,38 @@ create_time_ = #{createTime},
 
 	<sql id="demoGroupQueryCondition">
 		<where>
-			<if test="teacherName!=null">
-				su.username like concat('%',#{teacherName},'%')
+			<if test="search!=null">
+				su.username like concat('%',#{search},'%')
+			</if>
+			<if test="subjectIds!=null">
+				AND FIND_IN_SET(dg.subject_id_,#{subjectIds})
+			</if>
+			<if test="startTimes!=null">
+				AND FIND_IN_SET(dgcp.courses_start_time_,#{startTimes})
 			</if>
 		</where>
 	</sql>
 
 	<select id="findDemoGroupList" resultMap="studentDemoGroupListDto">
 		SELECT
-			dg.id_ demo_group_id_,
-			su.id_ user_id_,
-			su.username_,
-			su.avatar_,
-			COUNT(DISTINCT cs.id_) number_of_classes_,
-			GROUP_CONCAT(DISTINCT s.name_) subject_list_
+		dg.id_ demo_group_id_,
+		su.username_,
+		su.avatar_,
+		t.introduction_,
+		s.name_ subject_name_,
+		COUNT(dgcgm.class_group_id_) number_of_classes_,
+		dgcp.*
 		FROM
-			demo_group dg
-			LEFT JOIN sys_user su ON dg.user_id_=su.id_
-			LEFT JOIN demo_group_class_group_mapper dgcgm ON dg.id_=dgcgm.demo_group_id_
-			LEFT JOIN class_group cg ON dgcgm.class_group_id_=cg.id_
-			LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,cg.subject_id_list_)
-			LEFT JOIN course_schedule cs ON dgcgm.class_group_id_=cs.class_group_id_
-			<include refid="demoGroupQueryCondition"/>
-		GROUP BY dg.id_
-		ORDER BY dg.id_
+		demo_group dg
+		LEFT JOIN demo_group_courses_plan dgcp ON dg.id_=dgcp.demo_group_id_
+		LEFT JOIN teacher t ON dg.user_id_=t.id_
+		LEFT JOIN sys_user su ON dg.user_id_=su.id_
+		LEFT JOIN `subject` s ON dg.subject_id_=s.id_
+		LEFT JOIN demo_group_class_group_mapper dgcgm ON dg.id_=dgcgm.demo_group_id_
+		<include refid="demoGroupQueryCondition"/>
+		GROUP BY dgcp.id_,dg.id_
+		ORDER BY dgcp.courses_start_time_
+		<include refid="global.limit"/>
 	</select>
 	<select id="countDemoGroupList" resultType="java.lang.Integer">
 		SELECT
@@ -165,4 +182,40 @@ create_time_ = #{createTime},
 			demo_group_class_group_mapper
 		WHERE demo_group_id_=#{demoGroupId}
 	</select>
+    <select id="findDemoGroupByTeacherId" resultMap="DemoGroup">
+		SELECT * FROM demo_group WHERE user_id_=#{teacherId}
+	</select>
+
+	<sql id="teacherDemoGroupsQueryCondition">
+		<where>
+			dg.user_id_=#{teacherId}
+		</where>
+	</sql>
+
+	<select id="findTeacherDemoGroups" resultType="com.ym.mec.biz.dal.dto.TeacherManageDemoGroupListDto">
+		SELECT
+			cs.class_date_ classDate,
+			GROUP_CONCAT(DISTINCT CONCAT(cs.start_class_time_,cs.end_class_time_)) startTimes,
+			GROUP_CONCAT(s.name_) subjectNames
+		FROM
+			demo_group dg
+		LEFT JOIN demo_group_class_group_mapper dgcgm ON dg.id_=dgcgm.demo_group_id_
+		LEFT JOIN class_group cg ON dgcgm.class_group_id_=cg.id_
+		LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
+		LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,cg.subject_id_list_)
+		<include refid="teacherDemoGroupsQueryCondition"/>
+		GROUP BY cs.class_date_
+		<include refid="global.limit"/>
+	</select>
+	<select id="countTeacherDemoGroups" resultType="int">
+		SELECT
+			count(*)
+		FROM
+			demo_group dg
+		LEFT JOIN demo_group_class_group_mapper dgcgm ON dg.id_=dgcgm.demo_group_id_
+		LEFT JOIN class_group cg ON dgcgm.class_group_id_=cg.id_
+		LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
+		<include refid="teacherDemoGroupsQueryCondition"/>
+		GROUP BY cs.class_date_
+	</select>
 </mapper>

+ 49 - 3
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -23,6 +23,31 @@
 		<result column="demission_date_" property="demissionDate" />
 	</resultMap>
 
+    <resultMap type="com.ym.mec.auth.api.entity.SysUser" id="SysUser">
+        <result column="id_" property="id"/>
+        <result column="username_" property="username"/>
+        <result column="password_" property="password"/>
+        <result column="salt_" property="salt"/>
+        <result column="phone_" property="phone"/>
+        <result column="avatar_" property="avatar"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="lock_flag_" property="lockFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="wx_openid_" property="wxOpenid"/>
+        <result column="qq_openid_" property="qqOpenid"/>
+        <result column="user_type_" property="userType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="gender_" property="gender"/>
+        <result column="nation_" property="nation"/>
+        <result column="birthdate_" property="birthdate"/>
+        <result column="email_" property="email"/>
+        <result column="im_token_" property="imToken"/>
+        <result column="id_card_no_" property="idCardNo"/>
+        <result column="esign_id_" property="esignId"/>
+        <result column="wechat_id_" property="wechatId"/>
+    </resultMap>
+
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="Employee" >
 		SELECT * FROM employee WHERE user_id_ = #{userId} 
@@ -42,6 +67,24 @@
 		-->
 		INSERT INTO employee (user_id_,organ_id_list_,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,entry_date_,certificate_type_,certificate_num_,update_time_,create_time_,introduction_,demission_date_) VALUES(#{userId},#{organIdList},#{jobNature},#{isProbationPeriod},#{educationBackground},#{graduateSchool},#{technicalTitles},#{entryDate},#{certificateType},#{certificateNum},#{updateTime},#{createTime},#{introduction},#{demissionDate})
 	</insert>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="addUser" parameterType="com.ym.mec.auth.api.entity.SysUser" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        <!--
+        <selectKey resultClass="int" keyProperty="id" >
+        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
+        </selectKey>
+        -->
+        INSERT INTO sys_user
+        (im_token_,id_,username_,salt_,phone_,avatar_,organ_id_,create_time_,update_time_,wx_openid_,qq_openid_,user_type_,gender_,nation_,birthdate_,email_,id_card_no_,esign_id_,wechat_id_)
+        VALUES(#{imToken},#{id},#{username},#{salt},#{phone},#{avatar},#{organId},now(),now(),#{wxOpenid},#{qqOpenid},#{userType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{esignId},#{wechatId})
+    </insert>
+
+    <select id="queryByPhone" resultMap="SysUser">
+		select * from sys_user where phone_ = #{phone} OR username_ = #{phone}
+	</select>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.Employee">
@@ -98,8 +141,11 @@
     <update id="updateUserLockStatus">
 		UPDATE sys_user SET lock_flag_ = IF(lock_flag_=0,1,0) WHERE id_=#{userID}
 	</update>
+    <update id="updateUserDemissionDate">
+        UPDATE employee SET demission_date_ = IF(demission_date_ IS NULL,demission_date_,now()) WHERE user_id_=#{userID}
+    </update>
 
-	<!-- 根据主键删除一条记录 -->
+    <!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		DELETE FROM employee WHERE user_id_ = #{userId} 
 	</delete>
@@ -132,7 +178,7 @@
         <where>
             su.user_type_='SYSTEM'
             <if test="organId != null">
-                and su.organ_id_ = #{organId}
+                and FIND_IN_SET(#{organId},e.organ_id_list_)
             </if>
             <if test="roleId != null">
                 and sr.id_ = #{roleId}
@@ -167,7 +213,7 @@
         GROUP BY su.id_
     </select>
 
-    <select id="queryEmployByOrganIdCount" resultType="java.lang.Integer">
+    <select id="queryEmployByOrganIdCount" resultType="int">
 		SELECT
 			count(*)
 		FROM

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

@@ -124,6 +124,18 @@
         SELECT name_ FROM `subject` IN (#{subIds}) WHERE del_flag_ = 0
     </select>
 
+    <select id="findTeacherSubjects" resultMap="Subject">
+        SELECT
+            s.*
+        FROM
+            teacher t
+            LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
+            WHERE t.id_=#{teacherId}
+    </select>
+    <select id="findSubjectConditions" resultType="com.ym.mec.biz.dal.dto.ConditionDto">
+      select id_ id,name_ name from subject where parent_subject_id_=0
+    </select>
+
     <sql id="querySubPageSql">
         <where>
             <if test="parentId != null">

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

@@ -145,7 +145,7 @@
                 email_ = #{email},
             </if>
             <if test="gender != null">
-                gender_ = #{gender, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                gender_ = #{gender},
             </if>
             <if test="salt != null">
                 salt_ = #{salt},

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

@@ -36,7 +36,7 @@
     </resultMap>
 
     <resultMap id="studentVipGroupDetailDto" type="com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto" extends="studentVipGroup">
-        <collection property="courseSchedules" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule" column="user_id_"/>
+        <collection property="courseSchedules" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule" column="cs.id_"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.StudentVipGroupShowListDto" id="studentVipGroup">
@@ -50,6 +50,7 @@
         <result column="expect_student_num_" property="expectStudentNum"/>
         <result column="student_num_" property="studentNum"/>
         <result column="teacher_name_" property="teacherName"/>
+        <result column="introduction_" property="introduction"/>
         <result column="avatar_" property="avatar"/>
     </resultMap>
 
@@ -153,6 +154,9 @@
             <if test="classType!=null">
                 AND cg.teach_mode_=#{classType}
             </if>
+            <if test="search!=null">
+                AND vg.name_ like concat('%',#{search},'%')
+            </if>
         </where>
     </sql>
 
@@ -165,15 +169,18 @@
             vg.courses_expire_date_,
             vg.online_classes_num_,
             vg.offline_classes_num_,
+            vg.price_,
             cg.expect_student_num_,
             cg.student_num_,
             su.username_ teacher_name_,
-            su.avatar_
+            su.avatar_,
+            t.introduction_
         FROM
             vip_group vg
             LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
             LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
             LEFT JOIN class_group_teacher_mapper cgtm ON vgcgm.class_group_id_=cgtm.class_group_id_
+            LEFT JOIN teacher t ON cgtm.user_id_=t.id_
             LEFT JOIN sys_user su ON cgtm.user_id_=su.id_
             <include refid="studentVipGroupQueryCondition"/>
         ORDER BY vg.id_ DESC
@@ -251,12 +258,16 @@
         SELECT
             vg.*,
             su.username_ teacher_name_,
+            su.avatar_,
+            t.introduction_,
+            cs.id_ course_id_,
             cs.*
         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 vgcgm.class_group_id_=cs.class_group_id_
             LEFT JOIN class_group_teacher_mapper cgtm ON vgcgm.class_group_id_=cgtm.class_group_id_
+            LEFT JOIN teacher t ON cgtm.user_id_=t.id_
           LEFT JOIN sys_user su ON cgtm.user_id_=su.id_
         WHERE vg.id_=#{vipGroupId}
     </select>

+ 0 - 52
mec-common/common-core/src/main/java/com/ym/mec/common/utils/DateUtils.java

@@ -1,52 +0,0 @@
-package com.ym.mec.common.utils;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @Author Joburgess
- * @Date 2019/9/23
- */
-public class DateUtils {
-
-    private static final String CHINESE_DATA_FORMAT = "yyyy年MM月dd日 HH:mm:ss";
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/23
-     * 获取时间段内对应星期数的集合
-     */
-    public static List<Date> getWeekDays(Date startTime, Date endTime, int weekNum){
-        Calendar calendar = Calendar.getInstance();
-        List<Date> dates=new ArrayList<>();
-        for(Date x = startTime; x.compareTo(endTime) <= 0;){
-            calendar.setTime(x);
-            calendar.add(Calendar.DATE, 1);
-            x = calendar.getTime();
-            if(calendar.get(Calendar.DAY_OF_WEEK) == weekNum){
-                dates.add(x);
-            }
-        }
-        return dates;
-    }
-
-    /**
-     * 时间转换为中文格式
-     * @param date
-     * @return
-     */
-    public static String date2ChineseDate(Date date){
-        return new SimpleDateFormat(CHINESE_DATA_FORMAT).format(date);
-    }
-
-    public static void main(String[] args) throws ParseException {
-        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
-        List<Date> mondayCount = getWeekDays(simpleDateFormat.parse("2019-9-23"), simpleDateFormat.parse("2019-10-23"), Calendar.SUNDAY);
-        System.out.println(mondayCount.size());
-    }
-
-}

+ 2 - 2
mec-education/src/main/java/com/ym/mec/education/controller/ClassGroupController.java

@@ -21,7 +21,7 @@ import java.util.Objects;
  * @create: 2019-09-26 14:03
  */
 @RestController
-@RequestMapping("api/ClassGroup")
+@RequestMapping("api/classGroup")
 @Api(tags = "班级")
 @Slf4j
 public class ClassGroupController {
@@ -32,7 +32,7 @@ public class ClassGroupController {
     @PostMapping("/info")
     @ApiOperation("班级详情")
     public BaseResponse getInfo(@RequestBody ClassGroupReq classGroupReq) {
-        if (Objects.nonNull(classGroupReq.getGroupId())) {
+        if (Objects.isNull(classGroupReq.getGroupId())) {
             BaseResponse baseResponse = new BaseResponse();
             baseResponse.setReturnCode(ReturnCodeEnum.CODE_206.getCode());
             baseResponse.setMessage(ReturnCodeEnum.CODE_206.getValue());

+ 1 - 2
mec-education/src/main/java/com/ym/mec/education/controller/CourseScheduleController.java

@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import javax.validation.Valid;
 
 /**
  * @program: mec
@@ -30,7 +29,7 @@ public class CourseScheduleController {
 
     @PostMapping("/list")
     @ApiOperation("课表列表")
-    public PageResponse list(@RequestBody @Valid ClassGroupReq classGroupReq) {
+    public PageResponse list(@RequestBody ClassGroupReq classGroupReq) {
         return courseScheduleService.getPage(classGroupReq);
     }
 }

+ 1 - 4
mec-education/src/main/java/com/ym/mec/education/req/ClassGroupReq.java

@@ -4,8 +4,6 @@ import com.ym.mec.education.base.BaseQuery;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
@@ -18,8 +16,7 @@ import java.io.Serializable;
 @ApiModel(description = "班级入参")
 public class ClassGroupReq extends BaseQuery implements Serializable {
 
-    @ApiModelProperty(value = "班级id",required = true)
-    @NotNull(message = "班级id不能为空")
+    @ApiModelProperty(value = "班级id", required = true)
     private Integer groupId;
 
     private Integer type = 0;

+ 3 - 3
mec-student/src/main/java/com/ym/mec/student/controller/StudentDemoGroupController.java

@@ -28,10 +28,10 @@ public class StudentDemoGroupController extends BaseController {
         return succeed(demoGroupService.queryStudentDemoGroups(queryInfo));
     }
 
-    @ApiOperation(value = "试听课列表获取")
+    @ApiOperation(value = "试听课订阅")
     @PostMapping("/demoGroupSubscribe")
-    public Object demoGroupSubscribe(Long demoGroupId){
-        demoGroupService.demoGroupSubscribe(demoGroupId);
+    public Object demoGroupSubscribe(Long demoGroupId,Long coursePlanId){
+        demoGroupService.demoGroupSubscribe(demoGroupId,coursePlanId);
         return succeed();
     }
 }

+ 9 - 8
mec-student/src/main/java/com/ym/mec/student/controller/StudentVipGroupController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.student.controller;
 
 import com.ym.mec.biz.dal.dto.ConditionDto;
+import com.ym.mec.biz.dal.dto.QueryConditionDto;
 import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
 import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
 import com.ym.mec.biz.service.SubjectService;
@@ -35,18 +36,18 @@ public class StudentVipGroupController extends BaseController {
     @ApiOperation("获取vip课列表筛选条件")
     @GetMapping(value = "/findQueryCondition")
     public Object findQueryCondition(){
-        Map<String,Object> result=new HashMap<>();
-        result.put("subjects",subjectService.findAll(null));
+        List<QueryConditionDto> conditions=new ArrayList<>();
+        conditions.add(new QueryConditionDto("乐器选择","subjectId",subjectService.findSubjectConditions()));
         List<ConditionDto> conditionDtos=new ArrayList<>();
         conditionDtos.add(new ConditionDto(0L,"线下"));
         conditionDtos.add(new ConditionDto(1L,"线上"));
-        result.put("pageInfo",conditionDtos);
-        return succeed(result);
+        conditions.add(new QueryConditionDto("类别选择","classType",conditionDtos));
+        return succeed(conditions);
     }
 
     @ApiOperation("获取vip课列表")
-    @GetMapping(value = "/queryVipGroups")
-    public Object queryVipGroups(StudentVipGroupQueryInfo queryInfo){
+    @PostMapping(value = "/queryVipGroups")
+    public Object queryVipGroups(@RequestBody StudentVipGroupQueryInfo queryInfo){
         Map<String,Object> result=new HashMap<>();
         result.put("recommendVipGroups",new ArrayList<>());
         result.put("pageInfo",vipGroupService.findStudentVipGroupList(queryInfo));
@@ -54,8 +55,8 @@ public class StudentVipGroupController extends BaseController {
     }
 
     @ApiOperation("获取学生端vip课显示详情")
-    @GetMapping(value = "/getVipGroupShowDetail/{vipGroupId}")
-    public Object getVipGroupShowDetail(@PathVariable("vipGroupId") Long vipGroupId){
+    @GetMapping(value = "/getVipGroupShowDetail")
+    public Object getVipGroupShowDetail(Long vipGroupId){
         return succeed(vipGroupService.getVipGroupShowDetail(vipGroupId));
     }
 

+ 7 - 4
mec-teacher/src/main/java/com/ym/mec/teacher/controller/DemoGroupController.java

@@ -6,10 +6,7 @@ import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @Author Joburgess
@@ -30,4 +27,10 @@ public class DemoGroupController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "获取试听课")
+    @GetMapping("/getDemoGroupByTeacherId")
+    public Object getDemoGroupByTeacherId(){
+        return succeed(demoGroupService.getDemoGroupByTeacherId());
+    }
+
 }

+ 30 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherSubjectController.java

@@ -0,0 +1,30 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/26
+ */
+@RequestMapping("subject")
+@Api(tags = "科目服务-教师端")
+@RestController
+public class TeacherSubjectController extends BaseController {
+
+    @Autowired
+    private SubjectService subjectService;
+
+    @ApiOperation(value = "获取教师所在科目列表")
+    @GetMapping("/findTeacherSubjets")
+    public Object findTeacherSubjets(){
+        return succeed(subjectService.findTeacherSubjects());
+    }
+
+}

+ 34 - 5
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -3,11 +3,7 @@ package com.ym.mec.util.date;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.Locale;
-import java.util.TimeZone;
+import java.util.*;
 
 import org.apache.commons.lang.StringUtils;
 
@@ -19,6 +15,9 @@ import org.apache.commons.lang.StringUtils;
  */
 public class DateUtil {
 
+
+	private static final String CHINESE_DATA_FORMAT = "yyyy年MM月dd日 HH:mm:ss";
+
 	public static final String DEFAULT_PATTERN = "yyyy-MM-dd";
 
 	/**
@@ -871,4 +870,34 @@ public class DateUtil {
 		// DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		System.out.println(daysBetween(df.parse("2017-07-20 10:07:42"), df.parse(df.format(new Date()))));
 	}
+
+	/**
+	 * 获取时间段内对应星期数的集合
+	 * @param startTime 开始时间
+	 * @param endTime 结束时间
+	 * @param weekNum 周几
+	 * @return
+	 */
+	public static List<Date> getWeekDays(Date startTime, Date endTime, int weekNum){
+		Calendar calendar = Calendar.getInstance();
+		List<Date> dates=new ArrayList<>();
+		for(Date x = startTime; x.compareTo(endTime) <= 0;){
+			calendar.setTime(x);
+			calendar.add(Calendar.DATE, 1);
+			x = calendar.getTime();
+			if(calendar.get(Calendar.DAY_OF_WEEK) == weekNum){
+				dates.add(x);
+			}
+		}
+		return dates;
+	}
+
+	/**
+	 * 时间转换为中文格式
+	 * @param date
+	 * @return
+	 */
+	public static String date2ChineseDate(Date date){
+		return new SimpleDateFormat(CHINESE_DATA_FORMAT).format(date);
+	}
 }

+ 151 - 0
mec-web/src/test/java/com/ym/webApplicationTest.java

@@ -0,0 +1,151 @@
+package com.ym;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import com.ym.mec.biz.dal.dao.VipGroupDao;
+import com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto;
+import junit.framework.TestCase;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+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.test.context.junit4.SpringRunner;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.StudentAttendance;
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.common.security.SecurityUtils;
+import com.ym.mec.web.WebApplication;
+
+/**
+ * Unit test for simple App.
+ */
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = WebApplication.class)
+public class webApplicationTest
+    extends TestCase{
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private CourseScheduleService css;
+
+    @Autowired
+    private StudentAttendanceDao sad;
+
+    @Autowired
+    private ClassGroupDao cgd;
+
+    @Autowired
+    private CourseScheduleDao csd;
+
+    @Autowired
+    private VipGroupDao vipGroupDao;
+
+    @Test
+    public void test(){
+
+        String url = "http://auth-server/queryUserInfo";
+
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Authorization", "bearer " + SecurityUtils.getAuthentication());
+        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+
+        HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(null, headers);
+        ResponseEntity<String> resp = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
+
+        System.out.println("---------"+resp);
+    }
+
+    @Test
+    public void test1(){
+        List<StudentAttendance> sas=new ArrayList<>();
+        StudentAttendance sa=new StudentAttendance();
+        sa.setClassGroupId(1);
+        sa.setCourseScheduleId(1L);
+        sa.setMusicGroupId(1);
+        sa.setRemark("test");
+        sa.setStatus(StudentAttendanceStatusEnum.LEAVE);
+        sa.setTeacherId(1);
+        sa.setUserId(1);
+        sas.add(sa);
+        sad.addStudentAttendances(sas);
+    }
+
+    @Test
+    public void test2() throws ParseException {
+        System.out.println(new StringBuilder("2019-09-11 15:10:01").toString());
+        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").parse("2019-09-11 15:10:01"));
+        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new StringBuilder("2019-09-11 15:10:01").toString()));
+    }
+
+    @Test
+    public void test3() throws ParseException {
+        List<CourseSchedule> courseSchedules=new ArrayList<>();
+        CourseSchedule cs1=new CourseSchedule();
+        cs1.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
+        cs1.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 15:00:00"));
+        cs1.setClassGroupId(1);
+        courseSchedules.add(cs1);
+        CourseSchedule cs2=new CourseSchedule();
+        cs2.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
+        cs2.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 15:00:00"));
+        cs2.setClassGroupId(1);
+        courseSchedules.add(cs2);
+        CourseSchedule cs3=new CourseSchedule();
+        cs3.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
+        cs3.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 16:00:00"));
+        cs3.setClassGroupId(1);
+        courseSchedules.add(cs3);
+        Map<Date, List<CourseSchedule>> collect = courseSchedules.stream().collect(
+                Collectors.groupingBy(CourseSchedule::getClassDate));
+        for(Date keyDate:collect.keySet()){
+            List<CourseSchedule> currentCourses=collect.get(keyDate);
+            Map<Date, List<CourseSchedule>> collect1 = currentCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getStartClassTime));
+            System.out.println(collect1.size());
+        }
+    }
+
+    @Test
+    public void test4(){
+        List<Integer> temp=new ArrayList<>();
+        temp.add(1);
+        temp.add(2);
+        Integer[] integers = csd.countStudentInClass(temp);
+        System.out.println(integers.length);
+    }
+
+    @Test
+    public void test5() throws ParseException {
+        List<CourseScheduleDto> courseSchedules = csd.getCourseSchedulesWithDate(new SimpleDateFormat("yyyyMMdd").parse("20190912"));
+        System.out.println(courseSchedules.size());
+    }
+
+    @Test
+    public void test6(){
+        StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(1L);
+        System.out.println(vipGroupDetail.getAvatar());
+    }
+
+}