浏览代码

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

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
周箭河 5 年之前
父节点
当前提交
ac75536a81
共有 100 个文件被更改,包括 1881 次插入561 次删除
  1. 13 0
      cms/pom.xml
  2. 2 2
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/SysUserFeignService.java
  3. 5 1
      mec-auth/mec-auth-server/pom.xml
  4. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/AuthServerApplication.java
  5. 8 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java
  6. 15 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java
  7. 24 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  8. 12 7
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java
  9. 8 0
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  10. 10 1
      mec-biz/pom.xml
  11. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  12. 34 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DemoGroupDao.java
  13. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java
  14. 23 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  15. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java
  16. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  17. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysConfigDao.java
  18. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  19. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BasicUserDto.java
  20. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ConditionDto.java
  21. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java
  22. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EducationDemoGroupListDto.java
  23. 54 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/QueryConditionDto.java
  24. 20 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentDemoGroupListDto.java
  25. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupDetailDto.java
  26. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupShowListDto.java
  27. 40 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherManageDemoGroupListDto.java
  28. 23 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/DemoGroup.java
  29. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  30. 26 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupStudentFee.java
  31. 86 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysConfig.java
  32. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EmployeeOperateEnum.java
  33. 18 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentDemoGroupQueryInfo.java
  34. 9 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentVipGroupQueryInfo.java
  35. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherManageDemoGroupQueryInfo.java
  36. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  37. 29 1
      mec-biz/src/main/java/com/ym/mec/biz/service/DemoGroupService.java
  38. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
  39. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  40. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/UploadFileService.java
  41. 37 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  42. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  43. 78 25
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java
  44. 44 56
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  45. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentWithdrawServiceImpl.java
  46. 36 20
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  47. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysConfigServiceImpl.java
  48. 22 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  49. 17 4
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  50. 87 22
      mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml
  51. 35 3
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  52. 57 10
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  53. 14 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml
  54. 14 2
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  55. 78 0
      mec-biz/src/main/resources/config/mybatis/SysConfigMapper.xml
  56. 1 1
      mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml
  57. 10 2
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  58. 13 2
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  59. 0 13
      mec-client-api/src/main/java/com/ym/App.java
  60. 0 54
      mec-client-api/src/main/java/com/ym/im/ImFeignService.java
  61. 56 0
      mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java
  62. 8 4
      mec-client-api/src/main/java/com/ym/mec/im/fallback/ImFeignServiceFallback.java
  63. 3 3
      mec-client-api/src/test/java/com/ym/FeignApplicationTest.java
  64. 0 10
      mec-common/common-core/pom.xml
  65. 10 4
      mec-common/common-core/src/main/java/com/ym/mec/common/config/RequestHeaderConfiguration.java
  66. 18 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupModel.java
  67. 34 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImResult.java
  68. 9 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImUserModel.java
  69. 7 1
      mec-common/common-core/src/main/java/com/ym/mec/common/security/BaseAccessDeniedHandler.java
  70. 14 2
      mec-common/common-core/src/main/java/com/ym/mec/common/security/BaseAuthenticationEntryPoint.java
  71. 0 52
      mec-common/common-core/src/main/java/com/ym/mec/common/utils/DateUtils.java
  72. 5 0
      mec-education/pom.xml
  73. 22 9
      mec-education/src/main/java/com/ym/mec/education/EducationApplication.java
  74. 17 1
      mec-education/src/main/java/com/ym/mec/education/base/BaseResponse.java
  75. 6 0
      mec-education/src/main/java/com/ym/mec/education/base/PageResponse.java
  76. 35 0
      mec-education/src/main/java/com/ym/mec/education/controller/ClassGroupController.java
  77. 53 0
      mec-education/src/main/java/com/ym/mec/education/controller/CourseScheduleController.java
  78. 31 0
      mec-education/src/main/java/com/ym/mec/education/controller/EducationDemoGroupController.java
  79. 70 0
      mec-education/src/main/java/com/ym/mec/education/controller/HomeWorkController.java
  80. 11 25
      mec-education/src/main/java/com/ym/mec/education/controller/MusicGroupController.java
  81. 25 11
      mec-education/src/main/java/com/ym/mec/education/controller/StudentAttendanceController.java
  82. 36 0
      mec-education/src/main/java/com/ym/mec/education/controller/StudentController.java
  83. 7 6
      mec-education/src/main/java/com/ym/mec/education/entity/CourseSchedule.java
  84. 11 0
      mec-education/src/main/java/com/ym/mec/education/entity/SysUser.java
  85. 36 0
      mec-education/src/main/java/com/ym/mec/education/enums/ClassGroupStudentStatusEnum.java
  86. 36 0
      mec-education/src/main/java/com/ym/mec/education/enums/ClassGroupTypeEnum.java
  87. 54 0
      mec-education/src/main/java/com/ym/mec/education/enums/StudentAttendanceStatusEnum.java
  88. 11 1
      mec-education/src/main/java/com/ym/mec/education/mapper/ClassGroupStudentMapperMapper.java
  89. 1 1
      mec-education/src/main/java/com/ym/mec/education/mapper/CourseScheduleMapper.java
  90. 1 1
      mec-education/src/main/java/com/ym/mec/education/mapper/StudentCourseHomeworkMapper.java
  91. 1 1
      mec-education/src/main/java/com/ym/mec/education/mapper/StudentRegistrationMapper.java
  92. 1 1
      mec-education/src/main/java/com/ym/mec/education/mapper/SubjectMapper.java
  93. 19 5
      mec-education/src/main/java/com/ym/mec/education/mapper/xml/ClassGroupStudentMapperMapper.xml
  94. 3 1
      mec-education/src/main/java/com/ym/mec/education/mapper/xml/SysUserMapper.xml
  95. 0 20
      mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfCcOrderMapper.xml
  96. 0 25
      mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfHistOrderMapper.xml
  97. 0 16
      mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfHistTaskActorMapper.xml
  98. 0 28
      mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfHistTaskMapper.xml
  99. 0 27
      mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfOrderMapper.xml
  100. 0 24
      mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfProcessMapper.xml

+ 13 - 0
cms/pom.xml

@@ -53,4 +53,17 @@
 			<artifactId>common-core</artifactId>
 		</dependency>
 	</dependencies>
+	
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+			<plugin>
+				<groupId>com.spotify</groupId>
+				<artifactId>docker-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
 </project>

+ 2 - 2
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/SysUserFeignService.java

@@ -18,8 +18,8 @@ public interface SysUserFeignService {
 	@GetMapping(value = "user/queryUserByPhone")
 	public SysUser getUserByMobile(@RequestParam("mobile") String mobile);
 
-	@RequestMapping(value = "user/add",method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
-	public Object addUser(@RequestBody SysUser user);
+	@PostMapping(value = "user/add", consumes = MediaType.APPLICATION_JSON_VALUE)
+	public Object addUser(SysUser user);
 
 	@GetMapping(value = "task/test")
 	public Object test();

+ 5 - 1
mec-auth/mec-auth-server/pom.xml

@@ -70,8 +70,12 @@
 			<artifactId>kaptcha</artifactId>
 			<version>2.3.2</version>
 		</dependency>
+        <dependency>
+            <groupId>com.ym</groupId>
+            <artifactId>mec-client-api</artifactId>
+        </dependency>
 
-	</dependencies>
+    </dependencies>
 	
 	<build>
 		<plugins>

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/AuthServerApplication.java

@@ -15,7 +15,7 @@ import com.spring4all.swagger.EnableSwagger2Doc;
 
 @SpringBootApplication
 @EnableDiscoveryClient
-@EnableFeignClients
+@EnableFeignClients("com.ym.mec.im")
 @MapperScan("com.ym.mec.auth.dal.dao")
 @ComponentScan(basePackages="com.ym.mec")
 @Configuration

+ 8 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.auth.dal.dao;
 import com.ym.mec.auth.api.entity.SysMenu;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.page.PageInfo;
 import org.apache.ibatis.annotations.Param;
 
@@ -28,4 +29,11 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	 * @param password
 	 */
 	void updatePassword(@Param("mobile") String mobile, @Param("password") String password);
+
+	/**
+	 * 获取用户基本信息
+	 * @param userId
+	 * @return
+	 */
+    ImUserModel getBasic(Integer userId);
 }

+ 15 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java

@@ -2,6 +2,7 @@ package com.ym.mec.auth.service;
 
 import com.ym.mec.auth.api.dto.SysUserInfo;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.service.BaseService;
 
 public interface SysUserService extends BaseService<Integer, SysUser> {
@@ -47,4 +48,18 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	 * @param password
 	 */
 	void updatePassword(String mobile, String password);
+
+	/**
+	 * 新增用户
+	 * @param sysUser
+	 * @return
+	 */
+    Integer add(SysUser sysUser);
+
+	/**
+	 * 获取用户基本信息
+	 * @param userId
+	 * @return
+	 */
+	ImUserModel getBasic(Integer userId);
 }

+ 24 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -3,7 +3,10 @@ package com.ym.mec.auth.service.impl;
 import java.util.Date;
 import java.util.List;
 
+import com.ym.mec.im.ImFeignService;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
+import com.ym.mec.common.entity.ImResult;
+import com.ym.mec.common.entity.ImUserModel;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -29,6 +32,9 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	@Autowired
 	private SysRoleMenuService sysRoleMenuService;
 
+	@Autowired
+	private ImFeignService imFeignService;
+
 	@Override
 	public BaseDAO<Integer, SysUser> getDAO() {
 		return sysUserDao;
@@ -95,4 +101,22 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		sysUserDao.updatePassword(mobile,password);
 	}
 
+	@Override
+	public Integer add(SysUser sysUser) {
+		sysUserDao.insert(sysUser);
+		switch (sysUser.getUserType()){
+			case TEACHER:
+
+		}
+		ImResult imResult = (ImResult)imFeignService.register(new ImUserModel(sysUser.getId().toString(), sysUser.getUsername(), sysUser.getAvatar()));
+		sysUser.setImToken(imResult.getToken());
+		sysUserDao.update(sysUser);
+		return sysUser.getId();
+	}
+
+	@Override
+	public ImUserModel getBasic(Integer userId) {
+		return sysUserDao.getBasic(userId);
+	}
+
 }

+ 12 - 7
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java

@@ -10,10 +10,7 @@ import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.security.AuthUser;
 import com.ym.mec.common.security.SecurityUtils;
 import com.ym.mec.common.validcode.SmsCodeService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
@@ -55,17 +52,25 @@ public class UserController extends BaseController {
 		return failed();
 	}
 
+	@ApiOperation(value = "根据用户编号获取用户基本信息")
+	@GetMapping("/getBasic")
+	public Object getBasic(Integer userId) {
+		if(userId == null){
+			return failed("参数校验异常");
+		}
+		return succeed(sysUserService.getBasic(userId));
+	}
+
 	@GetMapping(value = "/queryUserByPhone")
 	public SysUser queryUserByPhone(String mobile) {
 		return sysUserService.queryByPhone(mobile);
 	}
 
 	@ApiOperation(value = "新增用户")
-	@RequestMapping(value = "/add",method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+	@PostMapping(value = "/add", consumes = MediaType.APPLICATION_JSON_VALUE)
 	public Object add(@RequestBody SysUser sysUser) {
 //		sysUser.setPassword(new BCryptPasswordEncoder().encode(sysUser.getPassword()));
-		sysUserService.insert(sysUser);
-		return succeed(sysUser.getId());
+		return succeed(sysUserService.add(sysUser));
 	}
 
 	@ApiOperation(value = "设置密码")

+ 8 - 0
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -165,4 +165,12 @@
     <select id="queryByPhone" resultMap="SysUser">
 		select * from sys_user where phone_ = #{phone} OR username_ = #{phone}
 	</select>
+    <resultMap id="ImUserModel" type="com.ym.mec.common.entity.ImUserModel">
+        <result column="id_" property="id"/>
+        <result property="name" column="username_"/>
+        <result property="portrait" column="avatar_"/>
+    </resultMap>
+    <select id="getBasic" resultMap="ImUserModel">
+        select * from sys_user where id_ = #{userId}
+    </select>
 </mapper>

+ 10 - 1
mec-biz/pom.xml

@@ -25,5 +25,14 @@
 			<groupId>com.ym</groupId>
 			<artifactId>mec-auth-api</artifactId>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>com.ym</groupId>
+            <artifactId>mec-client-api</artifactId>
+        </dependency>
+
+		<dependency>
+			<groupId>com.ym</groupId>
+			<artifactId>mec-thirdparty</artifactId>
+		</dependency>
+    </dependencies>
 </project>

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

@@ -8,7 +8,9 @@ import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.common.dal.BaseDAO;
 
 import com.ym.mec.common.entity.ImGroupModel;
+import com.ym.mec.common.entity.ImUserModel;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.security.core.parameters.P;
 
 import java.util.List;
 import java.util.Map;
@@ -104,9 +106,10 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     /**
      * 获取学员所在群组信息
      * @param userId
+     * @param search
      * @return
      */
-    List<ImGroupModel> queryUserGroups(Integer userId);
+    List<ImGroupModel> queryUserGroups(@Param("userId") Integer userId, @Param("search") String search);
 
     /**
      * 获取vip课的学生名称列表
@@ -114,4 +117,11 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @return
      */
     List<String> findVipStuNames(String musicGroupId);
+
+    /**
+     * 获取课程下的学员列表
+     * @param musicGroupId
+     * @return
+     */
+    List<ImUserModel> findGroupUsers(String musicGroupId);
 }

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

@@ -1,11 +1,14 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.EducationDemoGroupListDto;
 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 +33,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 +64,33 @@ 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);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/27
+     * 根据老师获取本周内的试听课安排
+     */
+    List<EducationDemoGroupListDto> findDemoGroupStartClassTimesWithWeekByTeacherId(Long teacherId);
 	
 }

+ 14 - 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,17 @@ 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);
+    /**
+     * 根据手机号查询对象
+     * @param phone
+     * @return
+     */
+    SysUser queryByPhone(String phone);
+
 }

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

@@ -1,11 +1,12 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.ImGroupModel;
+import com.ym.mec.common.entity.ImUserModel;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -47,4 +48,25 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     List<BasicUserDto> findTeachersByStuId(Integer studentId);
+
+    /**
+     * 获取用户所在乐团
+     * @param userId
+     * @return
+     */
+    List<ImGroupModel> queryUserGroups(@Param("userId") Integer userId,@Param("search") String search);
+
+    /**
+     * 获取乐团总人数
+     * @param musicGroupId
+     * @return
+     */
+    Integer countMusicGroupUserNum(String musicGroupId);
+
+    /**
+     * 获取乐团所有学员基本信息
+     * @param musicGroupId
+     * @return
+     */
+    List<ImUserModel> findGroupUsers(String musicGroupId);
 }

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

@@ -2,8 +2,15 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
 public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudentFee> {
 
-	
+
+    /**
+     * 根据乐团编号和学员编号获取乐团费用信息
+     * @param userId
+     * @return
+     */
+    MusicGroupStudentFee findByUser(@Param("userId") Integer userId,@Param("musicGroupId") String musicGroupId);
 }

+ 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();
 }

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

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface SysConfigDao extends BaseDAO<Long, SysConfig> {
+
+	
+}

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

@@ -20,4 +20,10 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @param user
      */
     void updateUser(SysUser user);
+
+    /**
+     * 新增sysUser
+     * @param user
+     */
+    void addSysUser(SysUser user);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BasicUserDto.java

@@ -6,10 +6,20 @@ public class BasicUserDto {
 
     private String name;
 
+    private String subjectName;
+
     private String headUrl;
 
     private Integer gender;
 
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
     public Integer getUserId() {
         return userId;
     }

+ 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;

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;
@@ -33,6 +34,17 @@ public class CourseListDto {
     @ApiModelProperty(value = "单节课时",required = true)
     private Integer singleClassMinutes;
 
+    @ApiModelProperty(value = "0待续费,1已续费",required = true)
+    private Integer renewStatus = 0;
+
+    public Integer getRenewStatus() {
+        return renewStatus;
+    }
+
+    public void setRenewStatus(Integer renewStatus) {
+        this.renewStatus = renewStatus;
+    }
+
     public Integer getSingleClassMinutes() {
         return singleClassMinutes;
     }

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EducationDemoGroupListDto.java

@@ -0,0 +1,34 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/27
+ */
+public class EducationDemoGroupListDto {
+
+    @ApiModelProperty(value = "上课日期",required = false)
+    private Date classDate;
+
+    @ApiModelProperty(value = "上课时间",required = false)
+    private String startClassTimes;
+
+    public Date getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(Date classDate) {
+        this.classDate = classDate;
+    }
+
+    public String getStartClassTimes() {
+        return startClassTimes;
+    }
+
+    public void setStartClassTimes(String startClassTimes) {
+        this.startClassTimes = startClassTimes;
+    }
+}

+ 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;
 	}

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

@@ -10,7 +10,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 /**
  * 对应数据库表(music_group):
  */
-public class 	MusicGroup {
+public class MusicGroup {
 
 	/**  */
 	private String id;
@@ -87,6 +87,17 @@ public class 	MusicGroup {
 	@ApiModelProperty(value = "缴费月份(多个用,分开)",required = false)
 	private String paymentMonths;
 
+	@ApiModelProperty(value = "乐团图片",required = false)
+	private String img;
+
+	public String getImg() {
+		return img;
+	}
+
+	public void setImg(String img) {
+		this.img = img;
+	}
+
 	public String getPaymentMonths() {
 		return paymentMonths;
 	}

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

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 对应数据库表(music_group_student_fee_):
@@ -24,13 +25,37 @@ public class MusicGroupStudentFee {
 	/** 课程费用 */
 	@ApiModelProperty(value = "课程费用",required = false)
 	private BigDecimal courseFee;
+
+	/** 课程费用 */
+	@ApiModelProperty(value = "下次缴费日期",required = false)
+	private Date nextPaymentDate;
+
+	/** 课程费用 */
+	@ApiModelProperty(value = "最近缴费时间",required = false)
+	private Date latestPaidTime;
 	
 	/**  */
 	private java.util.Date createTime;
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	public Date getNextPaymentDate() {
+		return nextPaymentDate;
+	}
+
+	public void setNextPaymentDate(Date nextPaymentDate) {
+		this.nextPaymentDate = nextPaymentDate;
+	}
+
+	public Date getLatestPaidTime() {
+		return latestPaidTime;
+	}
+
+	public void setLatestPaidTime(Date latestPaidTime) {
+		this.latestPaidTime = latestPaidTime;
+	}
+
 	public void setId(Long id){
 		this.id = id;
 	}

+ 86 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysConfig.java

@@ -0,0 +1,86 @@
+package com.ym.mec.biz.dal.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(sys_config):
+ */
+public class SysConfig {
+
+	/**  */
+	private Long id;
+	
+	/** 参数名称 */
+	@ApiModelProperty(value = "参数名称", required = true)
+	private String paramName;
+	
+	/** 参数值 */
+	@ApiModelProperty(value = "参数值", required = true)
+	private String paranValue;
+	
+	/** 描述 */
+	@ApiModelProperty(value = "描述", required = true)
+	private String description;
+	
+	/** 创建时间 */
+	private java.util.Date createOn;
+	
+	/** 修改时间 */
+	private java.util.Date modifyOn;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setParamName(String paramName){
+		this.paramName = paramName;
+	}
+	
+	public String getParamName(){
+		return this.paramName;
+	}
+			
+	public void setParanValue(String paranValue){
+		this.paranValue = paranValue;
+	}
+	
+	public String getParanValue(){
+		return this.paranValue;
+	}
+			
+	public void setDescription(String description){
+		this.description = description;
+	}
+	
+	public String getDescription(){
+		return this.description;
+	}
+			
+	public void setCreateOn(java.util.Date createOn){
+		this.createOn = createOn;
+	}
+	
+	public java.util.Date getCreateOn(){
+		return this.createOn;
+	}
+			
+	public void setModifyOn(java.util.Date modifyOn){
+		this.modifyOn = modifyOn;
+	}
+	
+	public java.util.Date getModifyOn(){
+		return this.modifyOn;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 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;
+    }
+}

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

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
 import com.ym.mec.biz.dal.page.VipClassQueryInfo;
 import com.ym.mec.common.entity.ImGroupModel;
+import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 import org.apache.ibatis.annotations.Param;
@@ -126,7 +127,15 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
     /**
      * 获取学员所在群组信息
      * @param userId
+     * @param search
      * @return
      */
-    List<ImGroupModel> queryUserGroups(Integer userId);
+    List<ImGroupModel> queryUserGroups(Integer userId,String search);
+
+    /**
+     * 获取群组下用户基本信息
+     * @param groupId
+     * @return
+     */
+    List<ImUserModel> findGroupUsers(String groupId);
 }

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

@@ -1,10 +1,17 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.DemoGroupApplyDto;
+import com.ym.mec.biz.dal.dto.EducationDemoGroupListDto;
+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;
+import org.hibernate.validator.constraints.EAN;
+
+import java.util.List;
 
 public interface DemoGroupService extends BaseService<Long, DemoGroup> {
 
@@ -27,6 +34,27 @@ 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);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/27
+     *
+     */
+    List<EducationDemoGroupListDto> findDemoGroupStartClassTimesWithWeekByTeacherId(Long teacherID);
 
 }

+ 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.MusicGroupSubjectGoodsGroup;
 import com.ym.mec.biz.dal.entity.Subject;
@@ -59,4 +61,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();
 }

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

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.common.service.BaseService;
+
+public interface SysConfigService extends BaseService<Long, SysConfig> {
+
+}

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/service/impl/UploadFileService.java → mec-biz/src/main/java/com/ym/mec/biz/service/UploadFileService.java

@@ -1,4 +1,4 @@
-package com.ym.mec.common.service.impl;
+package com.ym.mec.biz.service;
 
 import java.io.File;
 import java.io.FileOutputStream;

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

@@ -1,7 +1,8 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
@@ -10,9 +11,11 @@ import com.ym.mec.biz.dal.page.VipClassQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupModel;
+import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -31,7 +34,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private TeacherDao teacherDao;
     @Autowired
-    private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
+    private MusicGroupDao musicGroupDao;
     @Autowired
     private ClassGroupRelationService classGroupRelationService;
     @Autowired
@@ -46,6 +49,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private StudentRegistrationService studentRegistrationService;
     @Autowired
     private ClassGroupTeacherSalaryService classGroupTeacherSalaryService;
+    @Autowired
+    private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -333,18 +338,41 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 e.setStudentNames(classGroupDao.findVipStuNames(e.getMusicGroupId()));
             }else {
                 //获取学员乐团课的续费状态
-
-                //获取当前乐团缴费周期
-                List<MusicGroupPaymentCalender> musicGroupPaymentCalenders = musicGroupPaymentCalenderDao.findByMusicGroupId(e.getMusicGroupId());
-
-
+                MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId,e.getMusicGroupId());
+                if(musicGroupStudentFee != null){
+                    int i = DateUtil.daysBetween(new Date(),musicGroupStudentFee.getNextPaymentDate());
+                    e.setRenewStatus(i < 8?0:1);
+                }
             }
         });
         return classGroupDao.queryCoursePage(userId);
     }
 
+
     @Override
-    public List<ImGroupModel> queryUserGroups(Integer userId) {
-        return classGroupDao.queryUserGroups(userId);
+    public List<ImGroupModel> queryUserGroups(Integer userId,String search) {
+        List<ImGroupModel> imGroupModels = musicGroupDao.queryUserGroups(userId,search);
+        List<ImGroupModel> imGroupModels1 = classGroupDao.queryUserGroups(userId,search);
+        if(imGroupModels.size() < 1 || imGroupModels == null){
+            return imGroupModels1;
+        }else {
+            imGroupModels.forEach(e->{
+                e.setCount(musicGroupDao.countMusicGroupUserNum(e.getId()));
+                e.setId("mg" + e.getId());
+            });
+            imGroupModels1.forEach(e->{
+                e.setId("cg" + e.getId());
+            });
+            imGroupModels.addAll(imGroupModels1);
+            return imGroupModels;
+        }
+    }
+
+    @Override
+    public List<ImUserModel> findGroupUsers(String groupId) {
+        if(groupId.startsWith("mg")){
+            return musicGroupDao.findGroupUsers(groupId.substring(2));
+        }
+        return classGroupDao.findGroupUsers(groupId.substring(2));
     }
 }

+ 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){

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

@@ -4,21 +4,22 @@ 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.EducationDemoGroupListDto;
+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 +55,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 +93,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 +102,72 @@ 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;
+	}
+
+	@Override
+	public List<EducationDemoGroupListDto> findDemoGroupStartClassTimesWithWeekByTeacherId(Long teacherID) {
+		return demoGroupDao.findDemoGroupStartClassTimesWithWeekByTeacherId(teacherID);
 	}
 }

+ 44 - 56
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -1,33 +1,11 @@
 package com.ym.mec.biz.service.impl;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Base64;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.entity.Teacher;
-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.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.EmployeeDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
@@ -35,10 +13,23 @@ import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
 import com.ym.mec.biz.service.EmployeeService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.ImResult;
+import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.security.SecurityUtils;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @Service
 public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  implements EmployeeService {
@@ -47,10 +38,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	private EmployeeDao employeeDao;
 
 	@Autowired
-	private RestTemplate restTemplate;
-
-	@Autowired
-	private ObjectMapper objectMapper;
+	private ImFeignService imFeignService;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 	@Autowired
@@ -62,25 +50,37 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	}
 
 	@Override
-	public void add(Employee employee) throws Exception {
+	@Transactional(rollbackFor = Exception.class)
+	public void add(Employee employee){
 		SysUser user = sysUserFeignService.getUserByMobile(employee.getPhone());
 		if(user != null){
-			employee.setUserType(SysUserType.SYSTEM);
-			teacherDao.updateUser(employee);
+            user.setUserType(SysUserType.SYSTEM);
+			teacherDao.updateUser(user);
+			Employee employee1 = employeeDao.get(user.getId());
+			if(employee1 == null || employee1.getId() == null){
+				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);
+		teacherDao.addSysUser(employee);
+        employeeDao.insert(employee);
+		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(), employee.getAvatar()));
+		employee.setImToken(imResult.getToken());
+		employeeDao.update(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 +94,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 +125,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()));

+ 36 - 20
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;
@@ -20,7 +24,7 @@ import java.util.Date;
 import java.util.List;
 
 @Service
-public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implements SubjectService {
+public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  implements SubjectService {
 
     @Autowired
     private SubjectDao subjectDao;
@@ -28,6 +32,8 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
     private SubjectGoodsMapperDao subjectGoodsMapperDao;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
 
     @Override
     public BaseDAO<Integer, Subject> getDAO() {
@@ -42,8 +48,8 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
     @Override
     public PageInfo<Subject> queryPageTree(SubjectQueryInfo queryInfo) {
         PageInfo<Subject> pageInfo = queryPage(queryInfo);
-        for (Subject subject : pageInfo.getRows()) {
-            subject = getTree(subject, queryInfo.getDelFlag());
+        for (Subject subject:pageInfo.getRows()) {
+            subject = getTree(subject,queryInfo.getDelFlag());
         }
         return pageInfo;
     }
@@ -56,8 +62,8 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
     @Override
     public List<SubjectApplyDetailDto> findSubApplyDetail(Integer musicGroupId) {
         List<SubjectApplyDetailDto> subApplyDetail = subjectDao.findSubApplyDetail(musicGroupId);
-        subApplyDetail.forEach(detail -> {
-            detail.setPayNum(studentRegistrationDao.countPayNum(musicGroupId, detail.getSubjectId()));
+        subApplyDetail.forEach(detail ->{
+            detail.setPayNum(studentRegistrationDao.countPayNum(musicGroupId,detail.getSubjectId()));
         });
         return subApplyDetail;
     }
@@ -66,8 +72,8 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
     public void upSetSubject(Subject subject) {
         Integer parentId = upset(subject, null);
         List<Subject> subjects = subject.getSubjects();
-        if (subjects != null && subjects.size() > 0) {
-            subjects.forEach(e -> {
+        if(subjects != null && subjects.size() > 0){
+            subjects.forEach(e->{
                 upset(e, parentId);
             });
         }
@@ -75,51 +81,61 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
 
     @Override
     public void markGoods(List<SubjectGoodsMapper> subjectGoodsMappers) {
-        subjectGoodsMappers.forEach(e -> {
+        subjectGoodsMappers.forEach(e->{
             upsetGoods(e);
         });
     }
 
-    private void upsetGoods(SubjectGoodsMapper subjectGoodsMapper) {
-        if (subjectGoodsMapper.getId() != null) {
-            if (subjectGoodsMapper.getDelFlag()) {
+    private void upsetGoods(SubjectGoodsMapper subjectGoodsMapper){
+        if(subjectGoodsMapper.getId() != null){
+            if(subjectGoodsMapper.getDelFlag()){
                 subjectGoodsMapperDao.delete(subjectGoodsMapper.getId());
                 return;
             }
             subjectGoodsMapper.setUpdateTime(new Date());
             subjectGoodsMapperDao.update(subjectGoodsMapper);
-        } else {
+        }else {
             subjectGoodsMapperDao.insert(subjectGoodsMapper);
         }
     }
 
 
-    private Integer upset(Subject subject, Integer parentId) {
-        if (parentId != null) {
+    private Integer upset(Subject subject,Integer parentId){
+        if(parentId != null){
             subject.setParentSubjectId(parentId);
         }
-        if (subject.getId() != null) {
+        if(subject.getId() != null){
             subject.setUpdateTime(new Date());
             subjectDao.update(subject);
-        } else {
+        }else {
             subjectDao.insert(subject);
         }
         return subject.getId();
     }
 
-    private Subject getTree(Subject sub, YesOrNoEnum yesOrNoEnum) {
+    private Subject getTree(Subject sub,YesOrNoEnum yesOrNoEnum){
         //得到根节点对象
         //获取子节点list
-        List<Subject> subjects = subjectDao.findByParentId(sub.getCode(), yesOrNoEnum);
+        List<Subject> subjects = subjectDao.findByParentId(sub.getCode(),yesOrNoEnum);
         //如果存在子节点
-        if (subjects != null && subjects.size() > 0) {
+        if(subjects != null && subjects.size() > 0) {
             //将子节点list放入父节点对象
             sub.setSubjects(subjects);
             //遍历子节点....
             for (Subject subject : subjects) {
-                getTree(subject, yesOrNoEnum);
+                getTree(subject,yesOrNoEnum);
             }
         }
         return sub;
     }
+
+    @Override
+    public List<Subject> findTeacherSubjects() {
+        return subjectDao.findTeacherSubjects(sysUserFeignService.queryUserInfo().getId().longValue());
+    }
+
+    @Override
+    public List<ConditionDto> findSubjectConditions() {
+        return subjectDao.findSubjectConditions();
+    }
 }

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysConfigServiceImpl.java

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+
+@Service
+public class SysConfigServiceImpl extends BaseServiceImpl<Long, SysConfig>  implements SysConfigService {
+	
+	@Autowired
+	private SysConfigDao sysConfigDao;
+
+	@Override
+	public BaseDAO<Long, SysConfig> getDAO() {
+		return sysConfigDao;
+	}
+	
+}

+ 22 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.OrganizationDao;
 import com.ym.mec.biz.dal.dao.SubjectDao;
@@ -11,9 +12,11 @@ import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.page.TeacherQueryInfo;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.ImResult;
+import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-
+import com.ym.mec.im.ImFeignService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -33,6 +36,9 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	private OrganizationDao organizationDao;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private ImFeignService imFeignService;
+
 
 	@Override
 	public BaseDAO<Integer, Teacher> getDAO() {
@@ -46,17 +52,25 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void add(Teacher teacher) throws Exception {
+	public void add(Teacher teacher){
 		SysUser user = sysUserFeignService.getUserByMobile(teacher.getPhone());
 		if(user != null && user.getId() != null){
-			throw new Exception("系统已存在该手机号的老师,请核查");
+			teacherDao.updateUser(user);
+			Teacher teacher1 = teacherDao.get(user.getId());
+			if(teacher1 == null || teacher1.getId() == null){
+				teacher.setId(user.getId());
+				teacherDao.insert(teacher);
+			}
+			return;
 		}
-		//保存用户表信息
-		sysUserFeignService.addUser(teacher);
-		//注册到融云
-
-		//保存教师表数据
+		teacher.setUserType(SysUserType.TEACHER);
+		teacherDao.addSysUser(teacher);
 		teacherDao.insert(teacher);
+		ImResult imResult = imFeignService.register(new ImUserModel(teacher.getId().toString(), teacher.getUsername(), teacher.getAvatar()));
+		if(imResult != null){
+			teacher.setImToken(imResult.getToken());
+			teacherDao.updateUser(teacher);
+		}
 	}
 
 	@Override

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

@@ -71,7 +71,7 @@
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="ClassGroup">
-        UPDATE class_group SET WHERE id_ = #{id}
+        SELECT * FROM class_group WHERE id_ = #{id}
     </select>
 
     <!-- 全查询 -->
@@ -289,12 +289,20 @@
     <resultMap id="imGroupModel" type="com.ym.mec.common.entity.ImGroupModel">
         <result column="id_" property="id"/>
         <result column="name_" property="name"/>
-        <result column="student_num_" property="minute"/>
+        <result column="student_num_" property="count"/>
+        <result column="img_" property="img"/>
     </resultMap>
     <select id="queryUserGroups" resultMap="imGroupModel">
-        SELECT cg.id_,cg.name_,cg.student_num_ FROM class_group_student_mapper cgsm
+        SELECT cg.id_,cg.name_,cg.student_num_,cg.img_ FROM class_group_student_mapper cgsm
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
-        WHERE cgsm.user_id_ = #{userId}
+        <where>
+            <if test="userId != null">
+                cgsm.user_id_ = #{userId}
+            </if>
+            <if test="search != null and search != ''">
+                AND cg.name_ LIKE CONCAT('%',#{search},'%')
+            </if>
+        </where>
     </select>
     <select id="findVipStuNames" resultType="java.lang.String">
         SELECT su.username_ FROM vip_group_class_group_mapper vgcgm
@@ -302,4 +310,9 @@
         LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
         WHERE vgcgm.vip_group_id_ = #{musicGroupId}
     </select>
+    <select id="findGroupUsers" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.ImUserModel">
+        SELECT su.id_,su.avatar_,su.username_ FROM class_group_student_mapper cgsm
+        LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
+        WHERE cgsm.class_group_id_ = #{musicGroupId} GROUP BY su.id_
+    </select>
 </mapper>

+ 87 - 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,52 @@ 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>
+
+	<select id="findDemoGroupStartClassTimesWithWeekByTeacherId" resultType="com.ym.mec.biz.dal.dto.EducationDemoGroupListDto">
+		SELECT
+			class_date_ classDate,
+			GROUP_CONCAT(start_class_time_) startClassTimes
+		FROM
+			course_schedule
+		WHERE
+			YEARWEEK(class_date_) = YEARWEEK( now( ) )
+		GROUP BY class_date_
+	</select>
+
 </mapper>

+ 35 - 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,10 @@
 		-->
 		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>
+
+    <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 +127,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 +164,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 +199,7 @@
         GROUP BY su.id_
     </select>
 
-    <select id="queryEmployByOrganIdCount" resultType="java.lang.Integer">
+    <select id="queryEmployByOrganIdCount" resultType="int">
 		SELECT
 			count(*)
 		FROM

+ 57 - 10
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -24,6 +24,7 @@
 		<result column="cooperation_organ_id_" property="cooperationOrganId" />
 		<result column="enlightenment_course_time_" property="enlightenmentCourseTime" />
 		<result column="parent_meeting_time_" property="parentMeetingTime" />
+		<result column="img_" property="img" />
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -41,11 +42,12 @@
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroup"
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
-			AS ID FROM DUAL </selectKey> -->
 		INSERT INTO music_group
-		(id_,name_,organ_id_,school_id_,apply_expire_date_,team_teacher_id_,educational_teacher_id_,charge_type_id_,course_form_,create_time_,update_time_,status_,bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,cooperation_organ_id_,enlightenment_course_time_,parent_meeting_time_)
-		VALUES(#{id},#{name},#{organId},#{schoolId},#{applyExpireDate},#{teamTeacherId},#{educationalTeacherId},#{chargeTypeId},#{courseForm},now(),now(),#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{billStartDate},#{improventClassesNum},#{enrollClasses},#{paymentExpireDate},#{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime})
+		(id_,name_,organ_id_,school_id_,apply_expire_date_,team_teacher_id_,educational_teacher_id_,charge_type_id_,course_form_,create_time_,update_time_,status_,
+		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,cooperation_organ_id_,enlightenment_course_time_,parent_meeting_time_,img_)
+		VALUES(#{id},#{name},#{organId},#{schoolId},#{applyExpireDate},#{teamTeacherId},#{educationalTeacherId},#{chargeTypeId},#{courseForm},now(),now(),
+		#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{billStartDate},#{improventClassesNum},#{enrollClasses},#{paymentExpireDate},
+		#{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime},#{img})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -106,6 +108,9 @@
 			<if test="parentMeetingTime != null">
 				parent_meeting_time_ = #{parentMeetingTime},
 			</if>
+			<if test="img != null">
+				img_ = #{img},
+			</if>
 		</set>
 		WHERE id_ = #{id}
 	</update>
@@ -169,17 +174,59 @@
 	</select>
 
 	<resultMap type="com.ym.mec.biz.dal.dto.BasicUserDto" id="BasicUserDto">
+		<result column="subject_name_" property="subjectName" />
 		<result column="username_" property="name" />
 		<result column="user_id_" property="userId" />
 		<result column="head_url_" property="headUrl" />
 		<result column="gender_" property="gender"/>
 	</resultMap>
+
 	<select id="findTeachersByStuId" resultMap="BasicUserDto">
-		SELECT username_,id_ user_id_,avatar_ head_url_,gender_ FROM sys_user
-		WHERE id_ IN (SELECT DISTINCT(su.id_) FROM class_group_student_mapper cgsp
-		LEFT JOIN class_group cg ON cgsp.class_group_id_ = cg.id_
-		LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
-		LEFT JOIN sys_user su ON cgtm.user_id_ = su.id_
-		WHERE cgsp.user_id_ = #{studentId})
+		SELECT DISTINCT
+			su.username_,
+			su.id_ user_id_,
+			su.avatar_ head_url_,
+			gender_,
+			GROUP_CONCAT(s.name_) subject_name_
+		  FROM
+			class_group_student_mapper cgsp
+			LEFT JOIN class_group cg ON cgsp.class_group_id_ = cg.id_
+			LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
+			LEFT JOIN sys_user su ON cgtm.user_id_ = su.id_
+			LEFT JOIN teacher t ON su.id_ = t.id_
+			LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
+		  WHERE
+			cgsp.user_id_ = #{studentId}
+		  GROUP BY su.id_
+	</select>
+
+    <select id="queryUserGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
+        SELECT mg.id_,mg.name_,mg.img_
+		FROM student_registration sr
+		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+		<where>
+			<if test="userId != null">
+				sr.user_id_ = #{userId}
+			</if>
+			<if test="search != null">
+				AND mg.name_ LIKE CONCAT('%',#{search},'%')
+			</if>
+		</where>
+	</select>
+
+    <select id="countMusicGroupUserNum" resultType="java.lang.Integer">
+		SELECT SUM(student_num_) FROM class_group WHERE music_group_id_ = #{musicGroupId}
+    </select>
+
+	<resultMap id="ImUserModel" type="com.ym.mec.common.entity.ImUserModel">
+		<result column="id_" property="id"/>
+		<result property="name" column="username_"/>
+		<result property="portrait" column="avatar_"/>
+	</resultMap>
+	<select id="findGroupUsers" resultMap="ImUserModel">
+		SELECT su.id_,su.avatar_,su.username_ FROM class_group cg
+		LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+		LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
+		WHERE cg.music_group_id_ = #{musicGroupId} GROUP BY su.id_
 	</select>
 </mapper>

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

@@ -11,6 +11,8 @@
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="user_id_" property="userId"/>
         <result column="course_fee_" property="courseFee"/>
+        <result column="next_payment_date_" property="nextPaymentDate"/>
+        <result column="latest_paid_time_" property="latestPaidTime"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
     </resultMap>
@@ -28,8 +30,8 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupStudentFee" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
-		INSERT INTO music_group_student_fee_ (id_,music_group_id_,user_id_,course_fee_,create_time_,update_time_)
-		VALUES(#{id},#{musicGroupId},#{userId},#{courseFee},now(),now())
+		INSERT INTO music_group_student_fee_ (id_,music_group_id_,user_id_,course_fee_,create_time_,update_time_,next_payment_date_,latest_paid_time_)
+		VALUES(#{id},#{musicGroupId},#{userId},#{courseFee},now(),now(),#{nextPaymentDate},#{latestPaidTime})
 	</insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -48,6 +50,12 @@
             <if test="musicGroupId != null">
                 music_group_id_ = #{musicGroupId},
             </if>
+            <if test="nextPaymentDate != null">
+                next_payment_date_ = #{nextPaymentDate},
+            </if>
+            <if test="latestPaidTime != null">
+                latest_paid_time_ = #{latestPaidTime},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>
@@ -67,4 +75,8 @@
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM music_group_student_fee_
 	</select>
+
+    <select id="findByUser" resultMap="MusicGroupStudentFee">
+        SELECT * FROM music_group_student_fee_ WHERE music_group_id_ = #{musicGroupId} AND user_id_ = #{userId}
+    </select>
 </mapper>

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

@@ -120,8 +120,20 @@
         LEFT JOIN `subject` s ON mgsp.subject_id_ = s.id_
         WHERE mgsp.music_group_id_ =
     </select>
-    <select id="findBySubIds" resultType="java.lang.String">
-        SELECT name_ FROM `subject` IN (#{subIds}) WHERE del_flag_ = 0
+    <select id="findBySubIds" resultType="string">
+        SELECT name_ FROM `subject` WHERE del_flag_ = 0 AND FIND_IN_SET (id_,#{subIds})
+    </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">

+ 78 - 0
mec-biz/src/main/resources/config/mybatis/SysConfigMapper.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.ym.mec.biz.dal.dao.SysConfigDao">
+
+	<resultMap type="com.ym.mec.biz.dal.entity.SysConfig" id="SysConfig">
+		<result column="id" property="id" />
+		<result column="param_name_" property="paramName" />
+		<result column="paran_value_" property="paranValue" />
+		<result column="description_" property="description" />
+		<result column="create_on_" property="createOn" />
+		<result column="modify_on_" property="modifyOn" />
+	</resultMap>
+
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="SysConfig">
+		SELECT * FROM sys_config WHERE id = #{id}
+	</select>
+
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysConfig">
+		SELECT * FROM sys_config ORDER BY
+		id
+	</select>
+
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysConfig"
+		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
+			AS ID FROM DUAL </selectKey> -->
+		INSERT INTO sys_config
+		(id,param_name_,paran_value_,description_,create_on_,modify_on_)
+		VALUES(#{id},#{paramName},#{paranValue},#{description},#{createOn},#{modifyOn})
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.SysConfig">
+		UPDATE sys_config
+		<set>
+			<if test="modifyOn != null">
+				modify_on_ = #{modifyOn},
+			</if>
+			<if test="paranValue != null">
+				paran_value_ = #{paranValue},
+			</if>
+			<if test="description != null">
+				description_ = #{description},
+			</if>
+			<if test="id != null">
+				id = #{id},
+			</if>
+			<if test="createOn != null">
+				create_on_ = #{createOn},
+			</if>
+			<if test="paramName != null">
+				param_name_ = #{paramName},
+			</if>
+		</set>
+		WHERE id = #{id}
+	</update>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete">
+		DELETE FROM sys_config WHERE id = #{id}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="SysConfig" parameterType="map">
+		SELECT * FROM sys_config ORDER BY id
+		<include refid="global.limit" />
+	</select>
+
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM
+		sys_config
+	</select>
+</mapper>

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

@@ -154,7 +154,7 @@
 	<select id="queryPage" parameterType="map" resultMap="message">
 		select * from sys_message
 		<include refid="queryCondition" />
-		<include refid="global.orderby" />
+		order by create_on_ desc
 		<include refid="global.limit" />
 	</select>
 

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

@@ -37,7 +37,7 @@
         <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" 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"/>
@@ -68,6 +68,14 @@
         VALUES(#{id},#{organId},#{jobType},#{jobNature},#{isProbationPeriod,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{educationBackground},#{graduateSchool},#{technicalTitles},#{workUnit},#{subjectId},#{entryDate},#{demissionDate},#{certificateType},#{certificateNum},#{flowOrganRange},#{introduction},now(),now())
     </insert>
 
+    <insert id="addSysUser" parameterType="com.ym.mec.auth.api.entity.SysUser" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        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>
+
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.Teacher">
         UPDATE teacher
@@ -145,7 +153,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 - 13
mec-client-api/src/main/java/com/ym/App.java

@@ -1,13 +0,0 @@
-package com.ym;
-
-/**
- * Hello world!
- *
- */
-public class App 
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
-    }
-}

+ 0 - 54
mec-client-api/src/main/java/com/ym/im/ImFeignService.java

@@ -1,54 +0,0 @@
-package com.ym.im;
-
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-
-import com.ym.im.fallback.ImFeignServiceFallback;
-import com.ym.mec.common.config.FeignConfiguration;
-import com.ym.mec.common.entity.ImGroupModel;
-import com.ym.mec.common.entity.ImUserModel;
-
-@FeignClient(name = "im-server", configuration = FeignConfiguration.class, fallback = ImFeignServiceFallback.class)
-public interface ImFeignService {
-
-    /**
-     * 用户注册
-     * @param userModel
-     * @return
-     */
-    @PostMapping(value = "user/register")
-    Object getUser(@RequestBody ImUserModel userModel);
-
-    /**
-     * 创建群组
-     * @param groupModel
-     * @return
-     */
-    @PostMapping(value = "group/create")
-    Object groupCreate(@RequestBody ImGroupModel groupModel);
-
-    /**
-     * 加入群组
-     * @param groupModel
-     * @return
-     */
-    @PostMapping(value = "group/join")
-    Object groupJoin(@RequestBody ImGroupModel groupModel);
-
-    /**
-     * 退出群组
-     * @param groupModel
-     * @return
-     */
-    @PostMapping(value = "group/quit")
-    Object groupQuit(@RequestBody ImGroupModel groupModel);
-
-    /**
-     * 解散群组
-     * @param groupModel
-     * @return
-     */
-    @PostMapping(value = "group/dismiss")
-    Object groupDismiss(@RequestBody ImGroupModel groupModel);
-}

+ 56 - 0
mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java

@@ -0,0 +1,56 @@
+package com.ym.mec.im;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import com.ym.mec.common.config.FeignConfiguration;
+import com.ym.mec.common.entity.ImGroupModel;
+import com.ym.mec.common.entity.ImResult;
+import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.im.fallback.ImFeignServiceFallback;
+
+@FeignClient(name = "im-server", configuration = FeignConfiguration.class, fallback = ImFeignServiceFallback.class)
+public interface ImFeignService {
+
+	/**
+	 * 用户注册
+	 * @param userModel
+	 * @return
+	 */
+	@PostMapping(value = "user/register", consumes = MediaType.APPLICATION_JSON_VALUE)
+	ImResult register(@RequestBody ImUserModel userModel);
+
+	/**
+	 * 创建群组
+	 * @param groupModel
+	 * @return
+	 */
+	@PostMapping(value = "group/create")
+	Object groupCreate(@RequestBody ImGroupModel groupModel);
+
+	/**
+	 * 加入群组
+	 * @param groupModel
+	 * @return
+	 */
+	@PostMapping(value = "group/join")
+	Object groupJoin(@RequestBody ImGroupModel groupModel);
+
+	/**
+	 * 退出群组
+	 * @param groupModel
+	 * @return
+	 */
+	@PostMapping(value = "group/quit")
+	Object groupQuit(@RequestBody ImGroupModel groupModel);
+
+	/**
+	 * 解散群组
+	 * @param groupModel
+	 * @return
+	 */
+	@PostMapping(value = "group/dismiss")
+	Object groupDismiss(@RequestBody ImGroupModel groupModel);
+}

+ 8 - 4
mec-client-api/src/main/java/com/ym/im/fallback/ImFeignServiceFallback.java → mec-client-api/src/main/java/com/ym/mec/im/fallback/ImFeignServiceFallback.java

@@ -1,14 +1,18 @@
-package com.ym.im.fallback;
+package com.ym.mec.im.fallback;
+
+import org.springframework.stereotype.Component;
 
-import com.ym.im.ImFeignService;
 import com.ym.mec.common.entity.ImGroupModel;
+import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
-import org.springframework.stereotype.Component;
+import com.ym.mec.im.ImFeignService;
 
 @Component
 public class ImFeignServiceFallback implements ImFeignService {
     @Override
-    public Object getUser(ImUserModel userModel) {
+    public ImResult register(ImUserModel userModel) {
+    	
+    	System.out.println("*******************");
         return null;
     }
 

+ 3 - 3
mec-client-api/src/test/java/com/ym/AppTest.java → mec-client-api/src/test/java/com/ym/FeignApplicationTest.java

@@ -7,7 +7,7 @@ import junit.framework.TestSuite;
 /**
  * Unit test for simple App.
  */
-public class AppTest 
+public class FeignApplicationTest
     extends TestCase
 {
     /**
@@ -15,7 +15,7 @@ public class AppTest
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
+    public FeignApplicationTest(String testName )
     {
         super( testName );
     }
@@ -25,7 +25,7 @@ public class AppTest
      */
     public static Test suite()
     {
-        return new TestSuite( AppTest.class );
+        return new TestSuite( FeignApplicationTest.class );
     }
 
     /**

+ 0 - 10
mec-common/common-core/pom.xml

@@ -38,15 +38,5 @@
 			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-openfeign</artifactId>
 		</dependency>
-
-		<dependency>
-			<groupId>com.ym</groupId>
-			<artifactId>mec-thirdparty</artifactId>
-		</dependency>
-        <dependency>
-            <groupId>org.springframework.security.oauth</groupId>
-            <artifactId>spring-security-oauth2</artifactId>
-            <version>2.2.1.RELEASE</version>
-        </dependency>
     </dependencies>
 </project>

+ 10 - 4
mec-common/common-core/src/main/java/com/ym/mec/common/config/RequestHeaderConfiguration.java

@@ -1,9 +1,8 @@
 package com.ym.mec.common.config;
 
-import java.util.Enumeration;
-
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.commons.lang.StringUtils;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
@@ -19,7 +18,14 @@ public class RequestHeaderConfiguration implements RequestInterceptor {
 			return;
 		}
 		HttpServletRequest request = attributes.getRequest();
-		Enumeration<String> headerNames = request.getHeaderNames();
+		
+		String authorization = request.getHeader("Authorization");
+
+		if (StringUtils.isNotBlank(authorization)) {
+			template.header("Authorization", authorization);
+		}
+		
+		/*Enumeration<String> headerNames = request.getHeaderNames();
 		if (headerNames != null) {
 			while (headerNames.hasMoreElements()) {
 				String name = headerNames.nextElement();
@@ -27,7 +33,7 @@ public class RequestHeaderConfiguration implements RequestInterceptor {
 				template.header(name, values);
 
 			}
-		}
+		}*/
 	}
 
 }

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

@@ -4,12 +4,22 @@ public class ImGroupModel {
     private String id;
     private ImGroupMember[] members;
     private String name;
+    private String img;
     private Integer minute;
+    private Integer count;
     private Integer status;
 
     public ImGroupModel() {
     }
 
+    public Integer getCount() {
+        return count;
+    }
+
+    public void setCount(Integer count) {
+        this.count = count;
+    }
+
     public ImGroupModel(String id, ImGroupMember[] members, String name, Integer minute) {
         this.id = id;
         this.members = members;
@@ -22,6 +32,14 @@ public class ImGroupModel {
         this.status = status;
     }
 
+    public String getImg() {
+        return img;
+    }
+
+    public void setImg(String img) {
+        this.img = img;
+    }
+
     public String getId() {
         return this.id;
     }

+ 34 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImResult.java

@@ -0,0 +1,34 @@
+package com.ym.mec.common.entity;
+
+public class ImResult {
+
+    private String code;
+
+    private String userId;
+
+    private String token;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+}

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

@@ -11,6 +11,15 @@ public class ImUserModel {
 
     private ImUserModel[] blacklist;
 
+    public ImUserModel(String id, String name, String portrait) {
+        this.id = id;
+        this.name = name;
+        this.portrait = portrait;
+    }
+
+    public ImUserModel() {
+    }
+
     public String getId() {
         return id;
     }

+ 7 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/security/BaseAccessDeniedHandler.java

@@ -6,6 +6,7 @@ import java.io.PrintWriter;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,8 +32,13 @@ public class BaseAccessDeniedHandler extends OAuth2AccessDeniedHandler {
 		response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
 		response.setStatus(HttpServletResponse.SC_OK);
 		PrintWriter printWriter = response.getWriter();
+		
+		Throwable e = ExceptionUtils.getRootCause(authException);
+		if (e == null) {
+			e = authException;
+		}
 
-		HttpResponseResult result = new HttpResponseResult(false, HttpServletResponse.SC_FORBIDDEN, null, "禁止访问");
+		HttpResponseResult result = new HttpResponseResult(false, HttpServletResponse.SC_FORBIDDEN, null, e.getMessage());
 
 		ObjectMapper objectMapper = new ObjectMapper();
 

+ 14 - 2
mec-common/common-core/src/main/java/com/ym/mec/common/security/BaseAuthenticationEntryPoint.java

@@ -7,9 +7,11 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.springframework.http.MediaType;
 import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.oauth2.common.exceptions.InvalidTokenException;
 import org.springframework.security.web.AuthenticationEntryPoint;
 import org.springframework.stereotype.Component;
 
@@ -25,8 +27,18 @@ public class BaseAuthenticationEntryPoint implements AuthenticationEntryPoint {
 		response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
 		response.setStatus(HttpServletResponse.SC_OK);
 		PrintWriter printWriter = response.getWriter();
-
-		HttpResponseResult result = new HttpResponseResult(false, HttpServletResponse.SC_FORBIDDEN, null, authException.getMessage());
+		
+		Throwable e = ExceptionUtils.getRootCause(authException);
+		if (e == null) {
+			e = authException;
+		}
+		
+		int errorCode = 500;
+		if(e instanceof InvalidTokenException){
+			errorCode = HttpServletResponse.SC_FORBIDDEN;
+		}
+
+		HttpResponseResult result = new HttpResponseResult(false, errorCode, null, e.getMessage());
 
 		ObjectMapper objectMapper = new ObjectMapper();
 

+ 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());
-    }
-
-}

+ 5 - 0
mec-education/pom.xml

@@ -98,6 +98,11 @@
 			</exclusions>
 		</dependency>
 
+		<dependency>
+			<groupId>com.ym</groupId>
+			<artifactId>mec-biz</artifactId>
+		</dependency>
+
 	</dependencies>
 	<build>
 		<plugins>

+ 22 - 9
mec-education/src/main/java/com/ym/mec/education/EducationApplication.java

@@ -1,30 +1,43 @@
 package com.ym.mec.education;
 
 import com.spring4all.swagger.EnableSwagger2Doc;
+import com.ym.mec.common.redis.service.RedisCache;
 import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.client.RestTemplate;
 
-@MapperScan("com.ym.mec.education.mapper")
+@MapperScan({"com.ym.mec.education.mapper", "com.ym.mec.biz.dal.dao"})
 @SpringBootApplication
 @EnableDiscoveryClient
 @ComponentScan(basePackages = "com.ym.mec")
 @Configuration
 @EnableSwagger2Doc
 public class EducationApplication {
-	public static void main(String[] args) {
-		SpringApplication.run(EducationApplication.class, args);
-	}
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
 
-	@Bean
-	@LoadBalanced
-	public RestTemplate restTemplate() {
-		return new RestTemplate();
-	}
+    public static void main(String[] args) {
+        SpringApplication.run(EducationApplication.class, args);
+    }
+
+    @Bean
+    @LoadBalanced
+    public RestTemplate restTemplate() {
+        return new RestTemplate();
+    }
+
+    @Bean
+    @ConditionalOnBean(RedisTemplate.class)
+    public RedisCache<String, Object> redisCache() {
+        return new RedisCache<String, Object>(redisTemplate);
+    }
 }

+ 17 - 1
mec-education/src/main/java/com/ym/mec/education/base/BaseResponse.java

@@ -1,5 +1,6 @@
 package com.ym.mec.education.base;
 
+import com.ym.mec.education.enums.ReturnCodeEnum;
 import javax.persistence.MappedSuperclass;
 import java.io.Serializable;
 
@@ -28,4 +29,19 @@ public class BaseResponse<T> extends Response implements Serializable {
     public String toString() {
         return "BaseResponse(super=" + super.toString() + ", dataInfo=" + this.getDataInfo() + ")";
     }
-}
+
+    public static BaseResponse success(Object dataInfo) {
+        BaseResponse baseResponse = new BaseResponse<>();
+        baseResponse.setReturnCode(ReturnCodeEnum.CODE_200.getCode());
+        baseResponse.setMessage(ReturnCodeEnum.CODE_200.getValue());
+        baseResponse.setDataInfo(dataInfo);
+        return baseResponse;
+    }
+
+    public static BaseResponse errorParam(){
+        BaseResponse baseResponse = new BaseResponse();
+        baseResponse.setReturnCode(ReturnCodeEnum.CODE_206.getCode());
+        baseResponse.setMessage(ReturnCodeEnum.CODE_206.getValue());
+        return baseResponse;
+    }
+}

+ 6 - 0
mec-education/src/main/java/com/ym/mec/education/base/PageResponse.java

@@ -175,4 +175,10 @@ public class PageResponse<T> extends Response implements Serializable {
         return pg.append(" }").toString();
     }
 
+    public static PageResponse errorParam(){
+        PageResponse pageResponse = new PageResponse();
+        pageResponse.setReturnCode(ReturnCodeEnum.CODE_206.getCode());
+        pageResponse.setMessage(ReturnCodeEnum.CODE_206.getValue());
+        return pageResponse;
+    }
 }

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

@@ -0,0 +1,35 @@
+package com.ym.mec.education.controller;
+
+import com.ym.mec.education.base.BaseResponse;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.service.IClassGroupService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+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;
+
+/**
+ * @program: mec
+ * @description: 班级
+ * @author: xw
+ * @create: 2019-09-26 14:03
+ */
+@RestController
+@RequestMapping("api/classGroup")
+@Api(tags = "班级")
+@Slf4j
+public class ClassGroupController {
+
+    @Autowired
+    private IClassGroupService classGroupService;
+
+    @PostMapping("/info")
+    @ApiOperation("班级详情")
+    public BaseResponse getInfo(@RequestBody ClassGroupReq classGroupReq) {
+        return classGroupService.getInfo(classGroupReq);
+    }
+}

+ 53 - 0
mec-education/src/main/java/com/ym/mec/education/controller/CourseScheduleController.java

@@ -0,0 +1,53 @@
+package com.ym.mec.education.controller;
+
+import com.ym.mec.education.base.BaseResponse;
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.enums.ReturnCodeEnum;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.req.CourseScheduleReq;
+import com.ym.mec.education.resp.CourseScheduleResp;
+import com.ym.mec.education.service.ICourseScheduleService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+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 java.util.Objects;
+
+/**
+ * @program: mec
+ * @description: 课表
+ * @author: xw
+ * @create: 2019-09-26 21:04
+ */
+@RestController
+@RequestMapping("api/courseSchedule")
+@Api(tags = "课表")
+@Slf4j
+public class CourseScheduleController {
+
+    @Autowired
+    private ICourseScheduleService courseScheduleService;
+
+    @PostMapping("/list")
+    @ApiOperation("课表列表")
+    public PageResponse list(@RequestBody @Validated ClassGroupReq classGroupReq) {
+        return courseScheduleService.getPage(classGroupReq);
+    }
+
+    @PostMapping("/info")
+    @ApiOperation("课程计划详情")
+    public BaseResponse<CourseScheduleResp> getInfo(@RequestBody CourseScheduleReq courseScheduleReq) {
+        return courseScheduleService.getInfo(courseScheduleReq);
+    }
+
+    @PostMapping("/statisticsInfo")
+    @ApiOperation("历史考勤统计-头信息")
+    public BaseResponse getStatisticsInfo(@RequestBody CourseScheduleReq courseScheduleReq) {
+        return courseScheduleService.getStatisticsInfo(courseScheduleReq);
+    }
+}

+ 31 - 0
mec-education/src/main/java/com/ym/mec/education/controller/EducationDemoGroupController.java

@@ -0,0 +1,31 @@
+package com.ym.mec.education.controller;
+
+import com.ym.mec.biz.service.DemoGroupService;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/27
+ */
+
+@Api(tags = "试听课-教务端")
+@RequestMapping("educationDemoGroup")
+@RestController
+public class EducationDemoGroupController extends BaseController {
+
+    @Autowired
+    private DemoGroupService demoGroupService;
+
+    @ApiOperation(value = "试听课安排")
+    @PostMapping("/queryStudentDemoGroups")
+    public Object queryTeacherDemoGroups(Long teacherId){
+        return succeed(demoGroupService.findDemoGroupStartClassTimesWithWeekByTeacherId(teacherId));
+    }
+
+}

+ 70 - 0
mec-education/src/main/java/com/ym/mec/education/controller/HomeWorkController.java

@@ -0,0 +1,70 @@
+package com.ym.mec.education.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
+import com.ym.mec.education.base.BaseResponse;
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.entity.StudentCourseHomework;
+import com.ym.mec.education.entity.SysUser;
+import com.ym.mec.education.req.HomeWorkReq;
+import com.ym.mec.education.req.MusicGroupReq;
+import com.ym.mec.education.resp.HomeWrokResp;
+import com.ym.mec.education.service.IStudentCourseHomeworkService;
+import com.ym.mec.education.service.ISysUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+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 java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * @version V1.0
+ * @Description: TODO
+ * @date Date : 2019年09月27日 19:31
+ */
+
+@RestController
+@RequestMapping("/api/homeWork")
+@DefaultProperties(defaultFallback = "defaultFallback")
+@Slf4j
+public class HomeWorkController {
+
+
+    @Autowired
+    private IStudentCourseHomeworkService studentCourseHomeworkService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+    /**
+     * 服务降级处理
+     *
+     * @return
+     */
+    private BaseResponse defaultFallback() {
+        BaseResponse response = new BaseResponse();
+        response.setReturnCode(500);
+        response.setMessage("太拥挤了, 请稍后再试!");
+        return response;
+    }
+
+    /**
+     *
+     * @param req
+     * @return
+     */
+    @PostMapping(value = "/workList")
+    public PageResponse workList(@RequestBody HomeWorkReq req) {
+
+        return studentCourseHomeworkService.workList(req);
+    }
+}

+ 11 - 25
mec-education/src/main/java/com/ym/mec/education/controller/MusicGroupController.java

@@ -1,34 +1,16 @@
 package com.ym.mec.education.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.collect.Lists;
 import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
 import com.ym.mec.education.base.BaseResponse;
 import com.ym.mec.education.base.PageResponse;
-import com.ym.mec.education.entity.ClassGroup;
-import com.ym.mec.education.entity.ClassGroupTeacherMapper;
-import com.ym.mec.education.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.education.entity.MusicGroup;
 import com.ym.mec.education.enums.ReturnCodeEnum;
+import com.ym.mec.education.req.ClassGroupReq;
 import com.ym.mec.education.req.MusicGroupReq;
-import com.ym.mec.education.resp.MusicGroupResp;
-import com.ym.mec.education.service.IClassGroupService;
-import com.ym.mec.education.service.IClassGroupTeacherMapperService;
-import com.ym.mec.education.service.ICourseScheduleTeacherSalaryService;
 import com.ym.mec.education.service.IMusicGroupService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
 
 /**
  * @author : chengp
@@ -75,7 +57,7 @@ public class MusicGroupController {
      * @return
      */
     @GetMapping(value = "/groupDetail")
-    public BaseResponse groupDetail(@RequestBody Integer groupId) {
+    public BaseResponse groupDetail(@RequestParam("groupId") Integer groupId) {
 
         BaseResponse baseResponse = new BaseResponse();
         if (groupId == null) {
@@ -87,14 +69,18 @@ public class MusicGroupController {
         return musicGroupService.groupDetail(groupId);
 
     }
-    @GetMapping(value = "/classGroupList")
-    public PageResponse classGroupList(@RequestBody Integer groupId){
-
-
 
+    /**
+     * 班级列表
+     * @param req
+     * @return
+     */
+    @PostMapping(value = "/classGroupList")
+    public PageResponse classGroupList(@RequestBody ClassGroupReq req){
 
-        return null;
+        return musicGroupService.classGroupList(req);
 
     }
 
+
 }

+ 25 - 11
mec-education/src/main/java/com/ym/mec/education/controller/StudentAttendanceController.java

@@ -1,8 +1,15 @@
 package com.ym.mec.education.controller;
 
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.req.CourseScheduleReq;
 import com.ym.mec.education.service.IStudentAttendanceService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 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;
 
@@ -14,22 +21,29 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("api/studentAttendance")
+@Api(tags = "学生考勤")
 @Slf4j
 public class StudentAttendanceController {
 
     @Autowired
     private IStudentAttendanceService studentAttendanceService;
 
-    /*@PostMapping("/page")
-    public PageResponse page(@RequestBody StudentAttendanceReq studentAttendanceReq) {
-        Page<StudentAttendance> page = new Page(studentAttendanceReq.getPageNo(), studentAttendanceReq.getPageSize());
-        QueryWrapper<StudentAttendance> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(Objects.nonNull(studentAttendanceReq.getMusicGroupId()),
-                StudentAttendance::getMusicGroupId, studentAttendanceReq.getMusicGroupId())
-                .eq(Objects.nonNull(studentAttendanceReq.getClassGroupId()),
-                        StudentAttendance::getClassGroupId, studentAttendanceReq.getClassGroupId());
-        IPage<StudentAttendance> pageResult = studentAttendanceService.page(page, queryWrapper);
-        return PageResponse.success(pageResult);
-    }*/
+    @PostMapping("/list")
+    @ApiOperation("点名记录列表")
+    public PageResponse list(@RequestBody ClassGroupReq classGroupReq) {
+        return studentAttendanceService.getPage(classGroupReq);
+    }
+
+    @PostMapping("/listByCourse")
+    @ApiOperation("根据课程计划查询考勤列表")
+    public PageResponse listByCourse(@RequestBody CourseScheduleReq courseScheduleReq) {
+        return studentAttendanceService.getPageByCourse(courseScheduleReq);
+    }
+
+    @PostMapping("/statisticsList")
+    @ApiOperation("根据课程计划查询考勤统计列表")
+    public PageResponse statisticsList(@RequestBody CourseScheduleReq courseScheduleReq) {
+        return studentAttendanceService.statisticsList(courseScheduleReq);
+    }
 
 }

+ 36 - 0
mec-education/src/main/java/com/ym/mec/education/controller/StudentController.java

@@ -0,0 +1,36 @@
+package com.ym.mec.education.controller;
+
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.service.IClassGroupStudentMapperService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+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;
+
+/**
+ * @program: mec
+ * @description: 学员名单
+ * @author: xw
+ * @create: 2019-09-26 19:40
+ */
+@RestController
+@RequestMapping("api/student")
+@Api(tags = "学员名单")
+@Slf4j
+public class StudentController {
+
+    @Autowired
+    private IClassGroupStudentMapperService groupStudentMapperService;
+
+    @PostMapping("/list")
+    @ApiOperation("学员名单列表")
+    public PageResponse list(@RequestBody ClassGroupReq classGroupReq) {
+        return groupStudentMapperService.getPage(classGroupReq);
+    }
+
+}

+ 7 - 6
mec-education/src/main/java/com/ym/mec/education/entity/CourseSchedule.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.sql.Time;
 import java.util.Date;
 
 /**
@@ -48,12 +49,12 @@ public class CourseSchedule extends Model<CourseSchedule> {
      * 上课时间
      */
     @TableField("start_class_time_")
-    private Date startClassTime;
+    private Time startClassTime;
     /**
      * 结束时间
      */
     @TableField("end_class_time_")
-    private Date endClassTime;
+    private Time endClassTime;
     /**
      * 上课教师
      */
@@ -125,20 +126,20 @@ public class CourseSchedule extends Model<CourseSchedule> {
         return this;
     }
 
-    public Date getStartClassTime() {
+    public Time getStartClassTime() {
         return startClassTime;
     }
 
-    public CourseSchedule setStartClassTime(Date startClassTime) {
+    public CourseSchedule setStartClassTime(Time startClassTime) {
         this.startClassTime = startClassTime;
         return this;
     }
 
-    public Date getEndClassTime() {
+    public Time getEndClassTime() {
         return endClassTime;
     }
 
-    public CourseSchedule setEndClassTime(Date endClassTime) {
+    public CourseSchedule setEndClassTime(Time endClassTime) {
         this.endClassTime = endClassTime;
         return this;
     }

+ 11 - 0
mec-education/src/main/java/com/ym/mec/education/entity/SysUser.java

@@ -110,6 +110,10 @@ public class SysUser extends Model<SysUser> {
      */
     @TableField("im_token_")
     private String imToken;
+
+
+    @TableField("real_name_")
+    private String realName;
     /**
      * 身份证号码
      */
@@ -126,6 +130,13 @@ public class SysUser extends Model<SysUser> {
     @TableField("wechat_id_")
     private String wechatId;
 
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
 
     public Integer getId() {
         return id;

+ 36 - 0
mec-education/src/main/java/com/ym/mec/education/enums/ClassGroupStudentStatusEnum.java

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

+ 36 - 0
mec-education/src/main/java/com/ym/mec/education/enums/ClassGroupTypeEnum.java

@@ -0,0 +1,36 @@
+package com.ym.mec.education.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+/**
+ * 班级类型
+ */
+public enum ClassGroupTypeEnum implements BaseEnum<String, ClassGroupTypeEnum> {
+	NORMAL("NORMAL", "普通班级"), MIX("MIX", "合奏班级"), HIGH("HIGH", "提高班"), VIP("VIP", "vip课"), DEMO("demo", "试听课");
+
+	private String code;
+
+	private String msg;
+
+	ClassGroupTypeEnum(String code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	@Override
+	public String getCode() {
+		return this.code;
+	}
+}

+ 54 - 0
mec-education/src/main/java/com/ym/mec/education/enums/StudentAttendanceStatusEnum.java

@@ -0,0 +1,54 @@
+package com.ym.mec.education.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+import java.util.Arrays;
+
+/**
+ * 学生考勤状态
+ */
+public enum StudentAttendanceStatusEnum implements BaseEnum<String,StudentAttendanceStatusEnum> {
+    NORMAL("NORMAL","正常"),
+    TRUANT("TRUANT","旷课"),
+    LEAVE("LEAVE","请假"),
+    QUIT_SCHOOL("QUIT_SCHOOL","休学"),
+    DROP_OUT("DROP_OUT","退学");
+
+    private String code;
+
+    private String msg;
+
+    StudentAttendanceStatusEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    /**
+     * 根据枚举值获取枚举信息
+     *
+     * @param code 枚举值
+     * @return 枚举信息
+     */
+    public static String getMsgByCode(String code) {
+        return Arrays.stream(StudentAttendanceStatusEnum.values())
+                .filter(StudentAttendanceStatusEnum -> StudentAttendanceStatusEnum.getCode().equals(code))
+                .findFirst()
+                .map(StudentAttendanceStatusEnum::getMsg).orElse(null);
+    }
+}

+ 11 - 1
mec-education/src/main/java/com/ym/mec/education/mapper/ClassGroupStudentMapperMapper.java

@@ -1,7 +1,13 @@
 package com.ym.mec.education.mapper;
 
-import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ym.mec.education.entity.ClassGroupStudentMapper;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.resp.ClassStudentResp;
+
+import java.util.List;
+
 
 /**
  * <p>
@@ -13,4 +19,8 @@ import com.ym.mec.education.entity.ClassGroupStudentMapper;
  */
 public interface ClassGroupStudentMapperMapper extends BaseMapper<ClassGroupStudentMapper> {
 
+
+    List<ClassStudentResp> selectStudentPage(IPage page, ClassGroupReq req);
+
+    int selectStudentPageCount(ClassGroupReq req);
 }

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/mapper/CourseScheduleMapper.java

@@ -1,7 +1,7 @@
 package com.ym.mec.education.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ym.mec.education.entity.CourseSchedule;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
 
 /**
  * <p>

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/mapper/StudentCourseHomeworkMapper.java

@@ -1,7 +1,7 @@
 package com.ym.mec.education.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ym.mec.education.entity.StudentCourseHomework;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
 
 /**
  * <p>

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/mapper/StudentRegistrationMapper.java

@@ -1,7 +1,7 @@
 package com.ym.mec.education.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ym.mec.education.entity.StudentRegistration;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
 
 /**
  * <p>

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/mapper/SubjectMapper.java

@@ -1,7 +1,7 @@
 package com.ym.mec.education.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ym.mec.education.entity.Subject;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
 
 /**
  * <p>

+ 19 - 5
mec-education/src/main/java/com/ym/mec/education/mapper/xml/ClassGroupStudentMapperMapper.xml

@@ -4,11 +4,11 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ym.mec.education.entity.ClassGroupStudentMapper">
-        <id column="id_" property="id" />
-        <result column="class_group_id_" property="classGroupId" />
-        <result column="user_id_" property="userId" />
-        <result column="create_time_" property="createTime" />
-        <result column="status_" property="status" />
+        <id column="id_" property="id"/>
+        <result column="class_group_id_" property="classGroupId"/>
+        <result column="user_id_" property="userId"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="status_" property="status"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->
@@ -16,4 +16,18 @@
         id_, class_group_id_, user_id_, create_time_, status_
     </sql>
 
+    <select id="selectStudentPage" parameterType="com.ym.mec.education.req.ClassGroupReq"
+            resultType="com.ym.mec.education.resp.ClassStudentResp">
+
+        SELECT s.real_name_ as name,s.avatar_ as avatar,m.class_group_id_ as classGroupId,s.id_ as userId,c.music_group_id_ as musicGroupId  from class_group_student_mapper m
+
+        LEFT JOIN class_group c on m.class_group_id_ = c.id_
+
+        LEFT JOIN sys_user s on m.user_id_ = s.id_
+
+        where c.music_group_id_ = #{musicGroupId}
+
+
+    </select>
+
 </mapper>

+ 3 - 1
mec-education/src/main/java/com/ym/mec/education/mapper/xml/SysUserMapper.xml

@@ -26,11 +26,13 @@
         <result column="id_card_no_" property="idCardNo" />
         <result column="esign_id_" property="esignId" />
         <result column="wechat_id_" property="wechatId" />
+        <result column="real_name_" property="realName" />
+
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id_, username_, password_, salt_, phone_, avatar_, create_time_, update_time_, lock_flag_, del_flag_, wx_openid_, qq_openid_, user_type_, gender_, nation_, birthdate_, email_, organ_id_, im_token_, id_card_no_, esign_id_, wechat_id_
+        id_, username_, password_, salt_, phone_, avatar_, create_time_, update_time_, lock_flag_, del_flag_, wx_openid_, qq_openid_, user_type_, gender_, nation_, birthdate_, email_, organ_id_, im_token_, id_card_no_, esign_id_, wechat_id_,real_name_
     </sql>
 
 </mapper>

+ 0 - 20
mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfCcOrderMapper.xml

@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ym.mec.education.mapper.WfCcOrderMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.ym.mec.education.entity.WfCcOrder">
-        <result column="order_Id" property="orderId" />
-        <result column="actor_Id" property="actorId" />
-        <result column="creator" property="creator" />
-        <result column="create_Time" property="createTime" />
-        <result column="finish_Time" property="finishTime" />
-        <result column="status" property="status" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        order_Id, actor_Id, creator, create_Time, finish_Time, status
-    </sql>
-
-</mapper>

+ 0 - 25
mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfHistOrderMapper.xml

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ym.mec.education.mapper.WfHistOrderMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.ym.mec.education.entity.WfHistOrder">
-        <id column="id" property="id" />
-        <result column="process_Id" property="processId" />
-        <result column="order_State" property="orderState" />
-        <result column="creator" property="creator" />
-        <result column="create_Time" property="createTime" />
-        <result column="end_Time" property="endTime" />
-        <result column="expire_Time" property="expireTime" />
-        <result column="priority" property="priority" />
-        <result column="parent_Id" property="parentId" />
-        <result column="order_No" property="orderNo" />
-        <result column="variable" property="variable" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        id, process_Id, order_State, creator, create_Time, end_Time, expire_Time, priority, parent_Id, order_No, variable
-    </sql>
-
-</mapper>

+ 0 - 16
mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfHistTaskActorMapper.xml

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ym.mec.education.mapper.WfHistTaskActorMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.ym.mec.education.entity.WfHistTaskActor">
-        <result column="task_Id" property="taskId" />
-        <result column="actor_Id" property="actorId" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        task_Id, actor_Id
-    </sql>
-
-</mapper>

+ 0 - 28
mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfHistTaskMapper.xml

@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ym.mec.education.mapper.WfHistTaskMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.ym.mec.education.entity.WfHistTask">
-        <id column="id" property="id" />
-        <result column="order_Id" property="orderId" />
-        <result column="task_Name" property="taskName" />
-        <result column="display_Name" property="displayName" />
-        <result column="task_Type" property="taskType" />
-        <result column="perform_Type" property="performType" />
-        <result column="task_State" property="taskState" />
-        <result column="operator" property="operator" />
-        <result column="create_Time" property="createTime" />
-        <result column="finish_Time" property="finishTime" />
-        <result column="expire_Time" property="expireTime" />
-        <result column="action_Url" property="actionUrl" />
-        <result column="parent_Task_Id" property="parentTaskId" />
-        <result column="variable" property="variable" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        id, order_Id, task_Name, display_Name, task_Type, perform_Type, task_State, operator, create_Time, finish_Time, expire_Time, action_Url, parent_Task_Id, variable
-    </sql>
-
-</mapper>

+ 0 - 27
mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfOrderMapper.xml

@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ym.mec.education.mapper.WfOrderMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.ym.mec.education.entity.WfOrder">
-        <id column="id" property="id" />
-        <result column="parent_Id" property="parentId" />
-        <result column="process_Id" property="processId" />
-        <result column="creator" property="creator" />
-        <result column="create_Time" property="createTime" />
-        <result column="expire_Time" property="expireTime" />
-        <result column="last_Update_Time" property="lastUpdateTime" />
-        <result column="last_Updator" property="lastUpdator" />
-        <result column="priority" property="priority" />
-        <result column="parent_Node_Name" property="parentNodeName" />
-        <result column="order_No" property="orderNo" />
-        <result column="variable" property="variable" />
-        <result column="version" property="version" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        id, parent_Id, process_Id, creator, create_Time, expire_Time, last_Update_Time, last_Updator, priority, parent_Node_Name, order_No, variable, version
-    </sql>
-
-</mapper>

+ 0 - 24
mec-education/src/main/java/com/ym/mec/education/mapper/xml/WfProcessMapper.xml

@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ym.mec.education.mapper.WfProcessMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.ym.mec.education.entity.WfProcess">
-        <id column="id" property="id" />
-        <result column="name" property="name" />
-        <result column="display_Name" property="displayName" />
-        <result column="type" property="type" />
-        <result column="instance_Url" property="instanceUrl" />
-        <result column="state" property="state" />
-        <result column="content" property="content" />
-        <result column="version" property="version" />
-        <result column="create_Time" property="createTime" />
-        <result column="creator" property="creator" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        id, name, display_Name, type, instance_Url, state, content, version, create_Time, creator
-    </sql>
-
-</mapper>

部分文件因为文件数量过多而无法显示