Переглянути джерело

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

chengpeng 5 роки тому
батько
коміт
e9414714ee
81 змінених файлів з 2386 додано та 169 видалено
  1. 2 7
      cms/src/main/java/com/ym/mec/cms/controller/NewsController.java
  2. 1 1
      cms/src/main/java/com/ym/mec/cms/controller/queryinfo/NewsInformationQueryInfo.java
  3. 34 1
      cms/src/main/java/com/ym/mec/cms/dal/entity/SysNewsInformation.java
  4. 11 7
      cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  5. 2 1
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/fallback/SysUserFeignServiceFallback.java
  6. 4 4
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/RoleController.java
  7. 2 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java
  8. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherSalaryDao.java
  9. 38 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  10. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  11. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserBankCardDao.java
  12. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  13. 47 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java
  14. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CashAccountDetail.java
  15. 46 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassDateAdjustDto.java
  16. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicCardDto.java
  17. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupDetailDto.java
  18. 134 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupShowListDto.java
  19. 47 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupManageDetailDto.java
  20. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WithdrawDto.java
  21. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroup.java
  22. 105 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroupTeacherSalary.java
  23. 0 11
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  24. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Employee.java
  25. 6 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/School.java
  26. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java
  27. 195 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserBankCard.java
  28. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/BankCardStatusEnum.java
  29. 65 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupAttendanceQueryInfo.java
  30. 17 2
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  31. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java
  32. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  33. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysUserBankCardService.java
  34. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java
  35. 33 0
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java
  36. 156 25
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  37. 39 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  38. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  39. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserBankCardServiceImpl.java
  40. 10 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  41. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  42. 61 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  43. 6 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  44. 124 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherSalaryMapper.xml
  45. 3 4
      mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml
  46. 81 11
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  47. 23 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  48. 7 9
      mec-biz/src/main/resources/config/mybatis/SchoolMapper.xml
  49. 1 7
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  50. 12 1
      mec-biz/src/main/resources/config/mybatis/StudentWithdrawMapper.xml
  51. 112 0
      mec-biz/src/main/resources/config/mybatis/SysUserBankCardMapper.xml
  52. 4 1
      mec-biz/src/main/resources/config/mybatis/SysUserCashAccountDetailMapper.xml
  53. 4 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  54. 130 0
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  55. 3 0
      mec-common/common-core/src/main/java/com/ym/mec/common/config/FeignConfiguration.java
  56. 54 0
      mec-common/common-core/src/main/java/com/ym/mec/common/enums/TransTypeEnum.java
  57. 41 0
      mec-common/common-core/src/main/java/com/ym/mec/common/utils/DateUtils.java
  58. 5 1
      mec-education/src/main/resources/application.yml
  59. 11 1
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  60. 1 1
      mec-student/src/main/java/com/ym/mec/student/controller/RechargeController.java
  61. 28 0
      mec-student/src/main/java/com/ym/mec/student/controller/RegisterController.java
  62. 41 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseScheduleController.java
  63. 37 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentVipGroupController.java
  64. 5 1
      mec-student/src/main/resources/application.yml
  65. 5 1
      mec-task/src/main/resources/application.yml
  66. 5 1
      mec-teacher/src/main/resources/application.yml
  67. 6 15
      mec-web/src/main/java/com/ym/mec/web/controller/CooperationOrganController.java
  68. 16 0
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  69. 38 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentWithdrawController.java
  70. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/SysMessageController.java
  71. 50 0
      mec-web/src/main/java/com/ym/mec/web/controller/SysUserBankCardController.java
  72. 65 0
      mec-web/src/main/java/com/ym/mec/web/controller/SysUserCashAccountController.java
  73. 55 0
      mec-web/src/main/java/com/ym/mec/web/controller/SysUserCashAccountDetailController.java
  74. 7 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java
  75. 2 5
      mec-web/src/main/java/com/ym/mec/web/controller/education/CourseHomeworkController.java
  76. 9 17
      mec-web/src/main/java/com/ym/mec/web/controller/education/CourseHomeworkTemplateController.java
  77. 32 6
      mec-web/src/main/java/com/ym/mec/web/controller/education/EmployeeController.java
  78. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/student/StudentCourseHomeworkController.java
  79. 14 4
      mec-web/src/main/java/com/ym/mec/web/controller/system/VipGroupManageController.java
  80. 5 1
      mec-web/src/main/resources/application.yml
  81. 28 0
      mec-web/src/test/java/com/ym/Test.java

+ 2 - 7
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -22,15 +22,14 @@ public class NewsController extends BaseController {
 	private SysNewsInformationService sysNewsInformationService;
 
 	@ApiOperation("资讯列表分页查询")
-	@GetMapping(value = "/list", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+	@GetMapping(value = "/list")
 	public Object getList(NewsInformationQueryInfo queryInfo) {
 		return succeed(sysNewsInformationService.queryPage(queryInfo));
 	}
 
 	@ApiOperation("查询资讯详情")
 	@ApiImplicitParam(name = "id", value = "资讯ID编号", required = true, dataType = "Long", paramType = "path")
-	@GetMapping(value = "/query/{id}",
-			consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+	@GetMapping(value = "/query/{id}")
 	public Object query(@PathVariable("id") Long id) {
 
 		return succeed(sysNewsInformationService.get(id));
@@ -39,10 +38,6 @@ public class NewsController extends BaseController {
 	@ApiOperation("新增资讯")
 	@PostMapping(value = "/add", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 	public Object add(SysNewsInformation newsInfo) {
-		Date date = new Date();
-		newsInfo.setCreateTime(date);
-		newsInfo.setUpdateTime(date);
-
 		return succeed(sysNewsInformationService.insert(newsInfo));
 	}
 

+ 1 - 1
cms/src/main/java/com/ym/mec/cms/controller/queryinfo/NewsInformationQueryInfo.java

@@ -9,7 +9,7 @@ import com.ym.mec.common.page.QueryInfo;
 
 public class NewsInformationQueryInfo extends QueryInfo {
 
-	@ApiModelProperty(value = "资讯类型", required = false)
+	@ApiModelProperty(value = "类型,1精彩活动,2热门资讯,3banner类型", required = false)
 	private Integer type;
 
 	@ApiModelProperty(value = "资讯状态", required = false)

+ 34 - 1
cms/src/main/java/com/ym/mec/cms/dal/entity/SysNewsInformation.java

@@ -24,19 +24,52 @@ public class SysNewsInformation {
 	private String coverImage;
 
 	/** 类型 */
-	@ApiModelProperty(value = "类型,1精彩活动,2热门资讯", required = true)
+	@ApiModelProperty(value = "类型,1精彩活动,2热门资讯,3banner类型", required = true)
 	private Integer type;
 
 	/** 状态(1-可见 0-不可见) */
 	@ApiModelProperty(value = "状态(1-可见 0-不可见)", required = true)
 	private NewsStatusEnum status;
 
+	@ApiModelProperty(value = "链接地址", required = true)
+	private String linkUrl;
+
+	@ApiModelProperty(value = "跳转类型_bank,_slef", required = true)
+	private String hrefTarget;
+
+	@ApiModelProperty(value = "顺序号", required = true)
+	private Integer order;
+
 	/**  */
 	private java.util.Date createTime;
 
 	/**  */
 	private java.util.Date updateTime;
 
+	public String getLinkUrl() {
+		return linkUrl;
+	}
+
+	public void setLinkUrl(String linkUrl) {
+		this.linkUrl = linkUrl;
+	}
+
+	public String getHrefTarget() {
+		return hrefTarget;
+	}
+
+	public void setHrefTarget(String hrefTarget) {
+		this.hrefTarget = hrefTarget;
+	}
+
+	public Integer getOrder() {
+		return order;
+	}
+
+	public void setOrder(Integer order) {
+		this.order = order;
+	}
+
 	public void setId(Long id) {
 		this.id = id;
 	}

+ 11 - 7
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -43,13 +43,8 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.cms.dal.entity.SysNewsInformation" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
-		INSERT INTO sys_news_information (id_,title_,content_,cover_image_,type_,status_,create_time_,update_time_)
-		VALUES(#{id},#{title},#{content},#{coverImage},#{type},#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now)
+		INSERT INTO sys_news_information (id_,title_,content_,cover_image_,type_,status_,create_time_,update_time_,link_url_,href_target_,order_)
+		VALUES(#{id},#{title},#{content},#{coverImage},#{type},#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now,#{linkUrl},#{hrefTarget},#{order})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -74,6 +69,15 @@
 			<if test="type != null">
 				type_ = #{type},
 			</if>
+			<if test="linkUrl != null">
+				link_url_ = #{linkUrl},
+			</if>
+			<if test="hrefTarget != null">
+				href_target_ = #{hrefTarget},
+			</if>
+			<if test="order != null">
+				order_ = #{order},
+			</if>
 		</set>
 		WHERE id_ = #{id}
 	</update>

+ 2 - 1
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/fallback/SysUserFeignServiceFallback.java

@@ -16,12 +16,13 @@ public class SysUserFeignServiceFallback implements SysUserFeignService {
 
 	@Override
 	public Object test() {
+		System.out.println("******进入服务降级方法******");
 		return "服务正在拍";
 	}
 
 	@Override
 	public SysUser queryUserInfo() {
-		return new SysUser();
+		return null;
 	}
 
 	@Override

+ 4 - 4
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/RoleController.java

@@ -28,13 +28,13 @@ public class RoleController extends BaseController {
     private SysMenuService sysMenuService;
 
     @ApiOperation("根据权限id查询角色")
-    @GetMapping(value = "/{id}",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+    @GetMapping(value = "/{id}")
     public Object getRole(@ApiParam(value = "权限编号", required = true) @PathVariable("id") Integer id) {
         return succeed(sysRoleService.get(id));
     }
 
     @ApiOperation("删除角色")
-    @PostMapping(value = "/del/{id}",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+    @PostMapping(value = "/del/{id}")
     public Object delRole(@ApiParam(value = "权限编号", required = true) @PathVariable("id") Integer id) {
         return succeed(sysRoleService.delete(id));
     }
@@ -63,7 +63,7 @@ public class RoleController extends BaseController {
     }
 
     @ApiOperation("分页查询角色列表")
-    @GetMapping(value = "/queryPage",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+    @GetMapping(value = "/queryPage")
     public Object queryPage(QueryInfo queryInfo) {
         return succeed(sysRoleService.queryPage(queryInfo));
     }
@@ -94,7 +94,7 @@ public class RoleController extends BaseController {
 
     @ApiOperation("根据角色编号查询拥有的菜单列表")
     @ApiImplicitParams({ @ApiImplicitParam(name = "roleId", value = "角色编号", required = true, dataType = "Integer")})
-    @GetMapping(value = "/getMenus",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+    @GetMapping(value = "/getMenus")
     public Object getMenus(Integer roleId) {
         if(roleId == null){
             return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);

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

@@ -43,7 +43,7 @@ public class UserController extends BaseController {
 	@ApiImplicitParams({ @ApiImplicitParam(name = "userType", value = "用户类型", required = false, dataType = "String"),
 			@ApiImplicitParam(name = "createStartDate", value = "开始注册时间", required = true, dataType = "String"),
 			@ApiImplicitParam(name = "createEndDate", value = "结束注册时间", required = true, dataType = "String") })
-	@GetMapping(value = "/queryPage",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+	@GetMapping(value = "/queryPage")
 	public Object queryPage(SysUserQueryInfo queryInfo) {
 		return succeed(sysUserService.queryPage(queryInfo));
 	}
@@ -58,7 +58,7 @@ public class UserController extends BaseController {
 		return failed();
 	}
 
-	@GetMapping(value = "/queryUserByPhone",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+	@GetMapping(value = "/queryUserByPhone")
 	public SysUser queryUserByPhone(String mobile) {
 		return sysUserService.queryByPhone(mobile);
 	}

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

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

+ 38 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -49,4 +49,42 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     List<Date> getCourseScheduleDateByMonth(@Param("musicGroupID") Long musicGroupID,
                                             @Param("month") Date month);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/23
+     * 统计教师在一天内有时间重复的课数
+     */
+    int countTeacherCourseInOnDayRepeats(CourseSchedule courseSchedule);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/24
+     * 根据日期获取对应老师的课程
+     */
+    List<CourseSchedule> findTeacherCoursesInDates(@Param("dates") List<Date> dates,
+                                                   @Param("teacherId") Long teacherId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/24
+     * 根据日期获取课程
+     */
+    List<CourseSchedule> findCoursesByDates(@Param("dates") List<Date> dates);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/24
+     * 获取在指定时间段内存在重复的课程
+     */
+    List<CourseSchedule> findOverLapCoursesInDay(@Param("dates") List<Date> dates,
+                                                 @Param("startClassTime") Date startClassTime,
+                                                 @Param("endClassTime") Date endClassTime);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/24
+     * 根据id批量获取课程
+     */
+    List<CourseSchedule> findCourseSchedulesByIds(@Param("ids") Long[] ids);
 }

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

@@ -2,7 +2,9 @@ package com.ym.mec.biz.dal.dao;
 
 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 org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -14,4 +16,26 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     List<MusicCardDto> queryUserMusicGroups(Integer userId);
+
+    /**
+     * 获取个人中心乐团数据
+     * @param id
+     * @return
+     */
+    MusicCardDto queryPersonalMusicGroups(Integer id);
+
+    /**
+     * 获取用户有效的乐团数
+     * @param userId
+     * @return
+     */
+    int countUserMusicGroups(Integer userId);
+
+    /**
+     * 根据课程类型获取剩余课时
+     * @param userId
+     * @param type
+     * @return
+     */
+    int countCourseByType(@Param("userId") Integer userId, @Param("type") ClassGroupTypeEnum type);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserBankCardDao.java

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

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java

@@ -22,5 +22,12 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
      * @return
      */
     int getTeacherPersonalAttendancesCount(Map<String,Object> params);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/24
+     * 统计课次
+     */
+    int countClassTime(Long classGroupId);
 	
 }

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

@@ -1,10 +1,15 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.StudentManageVipGroupDto;
+import com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto;
+import com.ym.mec.biz.dal.dto.StudentVipGroupShowListDto;
+import com.ym.mec.biz.dal.dto.VipGroupManageDetailDto;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.common.dal.BaseDAO;
 
 import java.util.List;
+import java.util.Map;
 
 public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 
@@ -15,4 +20,46 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      */
 	List<StudentManageVipGroupDto> findStudentVipGroups(Long userID);
 
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/23
+	 * 学生端获取vip课列表
+	 */
+	List<StudentVipGroupShowListDto> findVipGroups(Map<String,Object> params);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/23
+	 * 统计vip数
+	 */
+	int countVipGorups(Map<String,Object> params);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/23
+	 * 获取小课详情
+	 */
+	VipGroupManageDetailDto getVipGroupBaseInfo(Long vipGroupId);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/23
+	 * 获取小课考勤记录
+	 */
+    List<CourseSchedule> findVipGroupAttendances(Map<String,Object> params);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/23
+     * 统计小课考勤记录数
+     */
+    int countVipGroupAttendance(Map<String,Object> params);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/23
+     * 获取vip课详情
+     */
+    StudentVipGroupDetailDto getVipGroupDetail(Long vipGroupId);
+
 }

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CashAccountDetail.java

@@ -0,0 +1,15 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class CashAccountDetail extends QueryInfo {
+    private Integer userId;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+}

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassDateAdjustDto.java

@@ -0,0 +1,46 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/23
+ */
+public class ClassDateAdjustDto extends CourseSchedule {
+
+    @ApiModelProperty(value = "课时调整有效时段开始时间",required = false)
+    private Date adjustStartTime;
+
+    @ApiModelProperty(value = "课时调整有效时段结束时间",required = false)
+    private Date adjustEndTime;
+
+    @ApiModelProperty(value = "星期几",required = false)
+    private Integer weekNum;
+
+    public Integer getWeekNum() {
+        return weekNum;
+    }
+
+    public void setWeekNum(Integer weekNum) {
+        this.weekNum = weekNum;
+    }
+
+    public Date getAdjustStartTime() {
+        return adjustStartTime;
+    }
+
+    public void setAdjustStartTime(Date adjustStartTime) {
+        this.adjustStartTime = adjustStartTime;
+    }
+
+    public Date getAdjustEndTime() {
+        return adjustEndTime;
+    }
+
+    public void setAdjustEndTime(Date adjustEndTime) {
+        this.adjustEndTime = adjustEndTime;
+    }
+}

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

@@ -23,6 +23,28 @@ public class MusicCardDto {
     @ApiModelProperty(value = "是否缴费",required = true)
     private YesOrNoEnum paymentStatus;
 
+    @ApiModelProperty(value = "乐团数量",required = true)
+    private Integer musicGroupNum;
+
+    @ApiModelProperty(value = "vip课数量",required = true)
+    private Integer vipClassNum;
+
+    public Integer getMusicGroupNum() {
+        return musicGroupNum;
+    }
+
+    public void setMusicGroupNum(Integer musicGroupNum) {
+        this.musicGroupNum = musicGroupNum;
+    }
+
+    public Integer getVipClassNum() {
+        return vipClassNum;
+    }
+
+    public void setVipClassNum(Integer vipClassNum) {
+        this.vipClassNum = vipClassNum;
+    }
+
     public String getUserName() {
         return userName;
     }

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupDetailDto.java

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/23
+ */
+public class StudentVipGroupDetailDto extends StudentVipGroupShowListDto {
+
+    @ApiModelProperty(value = "课程列表",required = false)
+    private CourseSchedule courseSchedules;
+
+    public CourseSchedule getCourseSchedules() {
+        return courseSchedules;
+    }
+
+    public void setCourseSchedules(CourseSchedule courseSchedules) {
+        this.courseSchedules = courseSchedules;
+    }
+}

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

@@ -0,0 +1,134 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/23
+ */
+public class StudentVipGroupShowListDto {
+
+    @ApiModelProperty(value = "vip课ID",required = false)
+    private Long vipGroupId;
+
+    @ApiModelProperty(value = "vip课名称",required = false)
+    private String vipGroupName;
+
+    @ApiModelProperty(value = "单节课时", required = false)
+    private Integer singleClassMinutes;
+
+    @ApiModelProperty(value = "缴费截止时间", required = false)
+    private java.util.Date paymentExpireDate;
+
+    @ApiModelProperty(value = "线上课课时数", required = false)
+    private Integer onlineClassesNum;
+
+    @ApiModelProperty(value = "线下课课时数", required = false)
+    private Integer offlineClassesNum;
+
+    @ApiModelProperty(value = "学生购买价格",required = false)
+    private BigDecimal price;
+
+    @ApiModelProperty(value = "预计招生人数",hidden = true)
+    private Integer expectStudentNum;
+
+    @ApiModelProperty(value = "学生数量", required = false)
+    private Integer studentNum;
+
+    @ApiModelProperty(value = "教师名称",required = false)
+    private String teacherName;
+
+    @ApiModelProperty(value = "教师头像",required = false)
+    private String avatar;
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public Long getVipGroupId() {
+        return vipGroupId;
+    }
+
+    public void setVipGroupId(Long vipGroupId) {
+        this.vipGroupId = vipGroupId;
+    }
+
+    public String getVipGroupName() {
+        return vipGroupName;
+    }
+
+    public void setVipGroupName(String vipGroupName) {
+        this.vipGroupName = vipGroupName;
+    }
+
+    public Integer getSingleClassMinutes() {
+        return singleClassMinutes;
+    }
+
+    public void setSingleClassMinutes(Integer singleClassMinutes) {
+        this.singleClassMinutes = singleClassMinutes;
+    }
+
+    public Date getPaymentExpireDate() {
+        return paymentExpireDate;
+    }
+
+    public void setPaymentExpireDate(Date paymentExpireDate) {
+        this.paymentExpireDate = paymentExpireDate;
+    }
+
+    public Integer getOnlineClassesNum() {
+        return onlineClassesNum;
+    }
+
+    public void setOnlineClassesNum(Integer onlineClassesNum) {
+        this.onlineClassesNum = onlineClassesNum;
+    }
+
+    public Integer getOfflineClassesNum() {
+        return offlineClassesNum;
+    }
+
+    public void setOfflineClassesNum(Integer offlineClassesNum) {
+        this.offlineClassesNum = offlineClassesNum;
+    }
+
+    public BigDecimal getPrice() {
+        return price;
+    }
+
+    public void setPrice(BigDecimal price) {
+        this.price = price;
+    }
+
+    public Integer getExpectStudentNum() {
+        return expectStudentNum;
+    }
+
+    public void setExpectStudentNum(Integer expectStudentNum) {
+        this.expectStudentNum = expectStudentNum;
+    }
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+}

+ 47 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupManageDetailDto.java

@@ -0,0 +1,47 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.VipGroup;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/23
+ */
+public class VipGroupManageDetailDto extends VipGroup {
+
+    @ApiModelProperty(value = "最新课次",required = false)
+    private Integer latestClassTime;
+
+    @ApiModelProperty(value = "学生数量", required = false)
+    private Integer studentNum;
+
+    @ApiModelProperty(value = "小课学院",required = false)
+    private List<SysUser> students;
+
+    public Integer getLatestClassTime() {
+        return latestClassTime;
+    }
+
+    public void setLatestClassTime(Integer latestClassTime) {
+        this.latestClassTime = latestClassTime;
+    }
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
+    public List<SysUser> getStudents() {
+        return students;
+    }
+
+    public void setStudents(List<SysUser> students) {
+        this.students = students;
+    }
+}

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WithdrawDto.java

@@ -0,0 +1,18 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+public class WithdrawDto extends QueryInfo {
+
+    @ApiModelProperty(value = "最新课次",required = false)
+    private Integer userId;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+}

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

@@ -63,6 +63,17 @@ public class ClassGroup {
 	@ApiModelProperty(value = "总统课次",required = false)
 	private Integer totalClassTimes;
 
+	@ApiModelProperty(value = "当前课次",required = false)
+	private Integer currentClassTimes;
+
+	public Integer getCurrentClassTimes() {
+		return currentClassTimes;
+	}
+
+	public void setCurrentClassTimes(Integer currentClassTimes) {
+		this.currentClassTimes = currentClassTimes;
+	}
+
 	public Integer getTotalClassTimes() {
 		return totalClassTimes;
 	}

+ 105 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroupTeacherSalary.java

@@ -0,0 +1,105 @@
+package com.ym.mec.biz.dal.entity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ClassGroupTeacherSalary {
+    private Long id;
+
+    private Integer musicGroupId;
+
+    private Integer classGroupId;
+
+    /**
+    * 老师角色(主教、助教)
+    */
+    private String teacherRole;
+
+    private Integer userId;
+
+    /**
+    * 课时长
+    */
+    private Integer duration;
+
+    /**
+    * 薪酬
+    */
+    private BigDecimal salary;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(Integer musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public String getTeacherRole() {
+        return teacherRole;
+    }
+
+    public void setTeacherRole(String teacherRole) {
+        this.teacherRole = teacherRole;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Integer getDuration() {
+        return duration;
+    }
+
+    public void setDuration(Integer duration) {
+        this.duration = duration;
+    }
+
+    public BigDecimal getSalary() {
+        return salary;
+    }
+
+    public void setSalary(BigDecimal salary) {
+        this.salary = salary;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}

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

@@ -57,17 +57,6 @@ public class CourseSchedule {
 
 	private boolean complaintStatus;
 
-	@ApiModelProperty(value = "当前课次",required = false)
-	private Integer currentClassTimes;
-
-	public Integer getCurrentClassTimes() {
-		return currentClassTimes;
-	}
-
-	public void setCurrentClassTimes(Integer currentClassTimes) {
-		this.currentClassTimes = currentClassTimes;
-	}
-
 	public void setId(Long id) {
 		this.id = id;
 	}

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.enums.JobNatureEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 
@@ -10,7 +11,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 /**
  * 对应数据库表(employee):
  */
-public class Employee {
+public class Employee extends SysUser {
 
 	/**  */
 	private Integer userId;

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

@@ -39,8 +39,8 @@ public class School {
 	private java.util.Date updateTime;
 
 	/**  */
-	@ApiModelProperty(value = "是否删除1是,0否", required = false)
-	private YesOrNoEnum delFlag;
+	@ApiModelProperty(value = "是否删除1是,0否,2停用", required = false)
+	private Integer delFlag;
 
 	/** 联系人 */
 	@ApiModelProperty(value = "联系人", required = false)
@@ -52,8 +52,10 @@ public class School {
 	@ApiModelProperty(value = "补贴", required = false)
 	private BigDecimal subsidy;
 	
+	@ApiModelProperty(value = "合作单位编号", required = false)
 	private Integer cooperationOrganId;
 	
+	@ApiModelProperty(value = "备注", required = false)
 	private String remark;
 
 	public void setId(Integer id) {
@@ -112,11 +114,11 @@ public class School {
 		return this.updateTime;
 	}
 
-	public YesOrNoEnum getDelFlag() {
+	public Integer getDelFlag() {
 		return delFlag;
 	}
 
-	public void setDelFlag(YesOrNoEnum delFlag) {
+	public void setDelFlag(Integer delFlag) {
 		this.delFlag = delFlag;
 	}
 

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

@@ -35,11 +35,11 @@ public class StudentRegistration {
 	private String currentClass;
 	
 	/** 报名科目 */
-	@ApiModelProperty(value = "报名科目",required = false)
+	@ApiModelProperty(value = "报名科目",required = true)
 	private Integer subjectId;
 
 	/** 报名科目 */
-	@ApiModelProperty(value = "实际科目",required = false)
+	@ApiModelProperty(value = "实际科目",hidden = true)
 	private Integer actualSubjectId;
 	
 	/** 是否允许调剂 */

+ 195 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserBankCard.java

@@ -0,0 +1,195 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.BankCardStatusEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(sys_user_bank_card):
+ */
+public class SysUserBankCard {
+
+	/**  */
+	private Long id;
+	
+	/** 会员标识 */
+	@ApiModelProperty(value = "会员标识",required = false)
+	private Integer userId;
+	
+	/** 是否默认 0,否;1,是 */
+	@ApiModelProperty(value = "是否默认 0,否;1,是",required = false)
+	private YesOrNoEnum isDefault;
+	
+	/** 银行名称 */
+	@ApiModelProperty(value = "银行名称",required = false)
+	private String bankName;
+	
+	/** 银行代码 */
+	@ApiModelProperty(value = "银行代码",required = false)
+	private String bankCode;
+	
+	/** 银行卡号 */
+	@ApiModelProperty(value = "银行卡号",required = false)
+	private String cardNo;
+	
+	/** 省 */
+	@ApiModelProperty(value = "省",required = false)
+	private String province;
+	
+	/** 城市 */
+	@ApiModelProperty(value = "城市",required = false)
+	private String city;
+	
+	/** 地址 */
+	@ApiModelProperty(value = "地址",required = false)
+	private String address;
+	
+	/** 0,已删除;1,正常;2,冻结;3,验证中 */
+	@ApiModelProperty(value = "联系方式",required = false)
+	private BankCardStatusEnum status;
+	
+	/** 创建时间 */
+	private java.util.Date createOn;
+	
+	/** 修改时间 */
+	private java.util.Date modifyOn;
+	
+	/** 是否是快捷卡(0,否 1,是) */
+	@ApiModelProperty(value = "是否是快捷卡",required = false)
+	private YesOrNoEnum isQuick;
+	
+	/** 银行卡绑定的手机号码 */
+	@ApiModelProperty(value = "银行卡绑定的手机号码",required = false)
+	private String mobilePhone;
+	
+	/**  */
+	@ApiModelProperty(value = "联系方式",required = false)
+	private String transNo;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public void setBankName(String bankName){
+		this.bankName = bankName;
+	}
+	
+	public String getBankName(){
+		return this.bankName;
+	}
+			
+	public void setBankCode(String bankCode){
+		this.bankCode = bankCode;
+	}
+	
+	public String getBankCode(){
+		return this.bankCode;
+	}
+			
+	public void setCardNo(String cardNo){
+		this.cardNo = cardNo;
+	}
+	
+	public String getCardNo(){
+		return this.cardNo;
+	}
+			
+	public void setProvince(String province){
+		this.province = province;
+	}
+	
+	public String getProvince(){
+		return this.province;
+	}
+			
+	public void setCity(String city){
+		this.city = city;
+	}
+	
+	public String getCity(){
+		return this.city;
+	}
+			
+	public void setAddress(String address){
+		this.address = address;
+	}
+	
+	public String getAddress(){
+		return this.address;
+	}
+			
+	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;
+	}
+			
+	public void setMobilePhone(String mobilePhone){
+		this.mobilePhone = mobilePhone;
+	}
+	
+	public String getMobilePhone(){
+		return this.mobilePhone;
+	}
+			
+	public void setTransNo(String transNo){
+		this.transNo = transNo;
+	}
+	
+	public String getTransNo(){
+		return this.transNo;
+	}
+
+	public YesOrNoEnum getIsDefault() {
+		return isDefault;
+	}
+
+	public void setIsDefault(YesOrNoEnum isDefault) {
+		this.isDefault = isDefault;
+	}
+
+	public BankCardStatusEnum getStatus() {
+		return status;
+	}
+
+	public void setStatus(BankCardStatusEnum status) {
+		this.status = status;
+	}
+
+	public YesOrNoEnum getIsQuick() {
+		return isQuick;
+	}
+
+	public void setIsQuick(YesOrNoEnum isQuick) {
+		this.isQuick = isQuick;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/BankCardStatusEnum.java

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+/**
+ * 0,已删除;1,正常;2,冻结;3,验证中
+ */
+public enum BankCardStatusEnum implements BaseEnum<Integer, BankCardStatusEnum> {
+	DEL(0, "已删除"), SUCCESS(1, "正常"), FREEZE(2, "冻结"), WAIT_AUTH(3, "待验证");
+
+	private Integer code;
+
+	private String msg;
+
+	BankCardStatusEnum(Integer code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+
+	public void setCode(Integer code) {
+		this.code = code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	@Override
+	public Integer getCode() {
+		return this.code;
+	}
+}

+ 65 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupAttendanceQueryInfo.java

@@ -0,0 +1,65 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/23
+ */
+public class VipGroupAttendanceQueryInfo extends QueryInfo {
+
+    private Long vipGroupId;
+
+    private Date startTime;
+
+    private Date endTime;
+
+    @ApiModelProperty(value = "课程状态  NOT_START未开始,SIGN_IN已签到,SIGN_OUT已签退",required = false)
+    private CourseStatusEnum status;
+
+    private boolean complaintStatus;
+
+    public Long getVipGroupId() {
+        return vipGroupId;
+    }
+
+    public void setVipGroupId(Long vipGroupId) {
+        this.vipGroupId = vipGroupId;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public CourseStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(CourseStatusEnum status) {
+        this.status = status;
+    }
+
+    public boolean isComplaintStatus() {
+        return complaintStatus;
+    }
+
+    public void setComplaintStatus(boolean complaintStatus) {
+        this.complaintStatus = complaintStatus;
+    }
+}

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
@@ -22,14 +23,14 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      * @Date: 2019/9/17
      * 批量插入课程计划
      */
-    String batchAddCourseSchedule(List<CourseSchedule> courseSchedules);
+    void batchAddCourseSchedule(List<CourseSchedule> courseSchedules);
 
     /**
      * @Author: Joburgess
      * @Date: 2019/9/17
      * 批量更新课程计划
      */
-    String batchUpdateCourseSchedule(List<CourseSchedule> courseSchedules,Long musicGroupID);
+    void batchUpdateCourseSchedule(List<CourseSchedule> courseSchedules,Long musicGroupID);
 
     /**
      * @Author: Joburgess
@@ -44,4 +45,18 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      * 根据月份获取乐团在该月有课的日期
      */
     List<Date> getCourseScheduleDateByMonth(Long musicGroupID, Date month);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/23
+     * 课时调整
+     */
+    void classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/24
+     * 课程交换
+     */
+    void courseSwap(Long courseScheduleId1,Long courseScheduleId2);
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -24,4 +25,23 @@ public interface EmployeeService extends BaseService<Integer, Employee> {
      */
     void employeeOperate(Long employeeId, EmployeeOperateEnum operate);
 
+    /**
+     * 新增员工
+     * @param employee
+     */
+    void add(Employee employee) throws Exception;
+
+    /**
+     * 修改员工信息
+     * @param employee
+     */
+    void updateEmployee(Employee employee);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/24
+     * 删除员工
+     */
+    void deleteEmployee(Long userId);
+
 }

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

@@ -26,4 +26,11 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
      * @return
      */
     List<MusicCardDto> queryUserMusicGroups(Integer userId);
+
+    /**
+     * 获取个人中心乐团数据
+     * @param id
+     * @return
+     */
+    MusicCardDto queryPersonalMusicGroups(Integer id);
 }

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

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

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

@@ -40,4 +40,11 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
      * @return
      */
     Teacher getDetail(Integer id);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/24
+     * 删除教师
+     */
+    void deleteTeacher(Long userId);
 }

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -1,7 +1,12 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto;
 import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
+import com.ym.mec.biz.dal.dto.VipGroupManageDetailDto;
 import com.ym.mec.biz.dal.entity.VipGroup;
+import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface VipGroupService extends BaseService<Long, VipGroup> {
@@ -13,4 +18,32 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      */
     String createVipGroup(VipGroupApplyDto vipGroup);
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/23
+     * 获取可购买vip课列表
+     */
+    PageInfo findStudentVipGroupList(QueryInfo queryInfo);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/23
+     * 获取vip课详情
+     */
+    VipGroupManageDetailDto getVipGroupDetail(Long vipGroupId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/23
+     * 获取vip课考勤记录
+     */
+    PageInfo findVipGroupAttendances(VipGroupAttendanceQueryInfo queryInfo);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/23
+     * 学生端获取vip课详情
+     */
+    StudentVipGroupDetailDto getVipGroupShowDetail(Long vipGroupId);
+
 }

+ 156 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1,21 +1,26 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
+import com.ym.mec.common.utils.DateUtils;
+import io.swagger.models.auth.In;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -38,26 +43,16 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
-	public String batchAddCourseSchedule(List<CourseSchedule> courseSchedules) {
-		String result=checkCourseSchedule(courseSchedules);
-		if(result.isEmpty()){
-			courseScheduleDao.batchAddCourseSchedules(courseSchedules);
-			return result;
-		}else{
-			return result;
-		}
+	public void batchAddCourseSchedule(List<CourseSchedule> courseSchedules) {
+		checkCourseSchedule(courseSchedules);
+		courseScheduleDao.batchAddCourseSchedules(courseSchedules);
 	}
 
 	@Override
-	public String batchUpdateCourseSchedule(List<CourseSchedule> courseSchedules, Long musicGroupID) {
-		String result=checkCourseSchedule(courseSchedules);
-		if(result.isEmpty()){
-			courseScheduleDao.deleteCourseSchedulesByMusicGroupID(musicGroupID);
-			courseScheduleDao.batchAddCourseSchedules(courseSchedules);
-			return result;
-		}else{
-			return result;
-		}
+	public void batchUpdateCourseSchedule(List<CourseSchedule> courseSchedules, Long musicGroupID) {
+		checkCourseSchedule(courseSchedules);
+        courseScheduleDao.deleteCourseSchedulesByMusicGroupID(musicGroupID);
+        courseScheduleDao.batchAddCourseSchedules(courseSchedules);
 	}
 
 	@Override
@@ -76,7 +71,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	 * @param courseSchedules
 	 * @return
 	 */
-	private String checkCourseSchedule(List<CourseSchedule> courseSchedules){
+	private void checkCourseSchedule(List<CourseSchedule> courseSchedules){
 		Map<Date, List<CourseSchedule>> collect = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getClassDate));
 		for(Date keyDate:collect.keySet()){
 			List<CourseSchedule> currentCourses=collect.get(keyDate);
@@ -85,26 +80,162 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				continue;
 			}else{
 				for(Date keyDate2:collect1.keySet()){
-					List<CourseSchedule> currentCourses1=collect.get(keyDate2);
+					List<CourseSchedule> currentCourses1=collect1.get(keyDate2);
 					if(currentCourses1.size()>ParamEnum.ONE.getCode()){
 						Map<Long, List<CourseSchedule>> collect2 = currentCourses1.stream().collect(
 								Collectors.groupingBy(CourseSchedule::getTeacherId));
 						for (Long teacherID:collect2.keySet()){
 							if(collect2.get(teacherID).size()>ParamEnum.ONE.getCode()){
-								return new SimpleDateFormat("yyyy-MM-dd").format(keyDate)+"日的课程安排在教师分配上有冲突!";
+								throw new BizException(new SimpleDateFormat("yyyy-MM-dd").format(keyDate)+"日的课程安排在教师分配上有冲突!");
 							}
 						}
 						List<Integer> repeatClassGroupIds = currentCourses1.stream().map(CourseSchedule::getClassGroupId).collect(Collectors.toList());
 						Integer[] counts=courseScheduleDao.countStudentInClass(repeatClassGroupIds);
 						for (Integer i:counts){
 							if (i>ParamEnum.ONE.getCode()){
-								return new SimpleDateFormat("yyyy-MM-dd").format(keyDate)+"日的课程安排有学生重复!";
+								throw new BizException(new SimpleDateFormat("yyyy-MM-dd").format(keyDate)+"日的课程安排有学生重复!");
 							}
 						}
 					}
 				}
 			}
 		}
-		return "";
+		//课次创建
+//		Map<Integer, List<CourseSchedule>> classGroupByID = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getClassGroupId));
+//		List<Long> ids=new ArrayList<>();
+//		for (Integer key:classGroupByID.keySet()){
+//			ids.add(Long.valueOf(key));
+//		}
+//		Map<Integer, Integer> maxClassTimes = convertToMap(courseScheduleDao.getMaxClassTimeByClassIds(ids));
+//		courseSchedules.clear();
+//		for (Integer key:classGroupByID.keySet()){
+//			Integer maxClassTime = null == maxClassTimes.get(key) ? 0 : maxClassTimes.get(key);
+//			for(CourseSchedule courseSchedule:classGroupByID.get(key)){
+//				courseSchedules.add(courseSchedule);
+//			}
+//		}
+	}
+
+	private Map<Integer,Integer> convertToMap(String[] result){
+		Map<Integer,Integer> map=new HashMap<>();
+		for(String s:result){
+			map.put(Integer.valueOf(s.split(",")[0]),Integer.valueOf(s.split(",")[1]));
+		}
+		return map;
+	}
+
+	@Transactional(rollbackFor = Exception.class)
+	@Override
+	public void classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto) {
+		//单次调整课时
+		if(null==classDateAdjustDto.getAdjustStartTime()&&null==classDateAdjustDto.getAdjustEndTime()){
+			ArrayList<Date> dates = new ArrayList<>();
+			dates.add(classDateAdjustDto.getClassDate());
+			List<CourseSchedule> coursesByDates = courseScheduleDao.findOverLapCoursesInDay(dates,classDateAdjustDto.getStartClassTime(),classDateAdjustDto.getEndClassTime());
+			//判断是否存在同时间上课的班级
+			if(null==coursesByDates||coursesByDates.size()<=0){
+				courseScheduleDao.update(classDateAdjustDto);
+			}else{
+				coursesByDates.forEach(courseSchedule -> {
+					if(courseSchedule.getTeacherId().equals(classDateAdjustDto.getTeacherId())){
+						//存在时间重叠,需要前端重新调整
+						throw new BizException("所选教师在当天课程安排上存在重叠!");
+					}
+				});
+				List<Integer> repeatClassGroupIds = coursesByDates.stream().map(CourseSchedule::getClassGroupId).collect(Collectors.toList());
+				checkStudentIsRepeat(repeatClassGroupIds);
+				courseScheduleDao.update(classDateAdjustDto);
+			}
+		}else{
+			//根据时间段调整课时
+			List<Date> dates= DateUtils.getWeekDays(classDateAdjustDto.getAdjustStartTime(),classDateAdjustDto.getAdjustEndTime(),classDateAdjustDto.getWeekNum());
+			List<CourseSchedule> coursesByDates = courseScheduleDao.findOverLapCoursesInDay(dates,classDateAdjustDto.getStartClassTime(),classDateAdjustDto.getEndClassTime());
+			//判断是否存在同时间上课的班级
+			if(null==coursesByDates||coursesByDates.size()<=0){
+				createNewCourseByAdjust(dates,classDateAdjustDto);
+			}else{
+				//判断教师是否在时间安排上存在冲突
+				SimpleDateFormat s1=new SimpleDateFormat("yyyy-MM-dd"),
+						s2=new SimpleDateFormat("HH:mm:ss"),
+						s3=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+				List<CourseSchedule> teacherCoursesInDates = courseScheduleDao.findTeacherCoursesInDates(dates, classDateAdjustDto.getTeacherId());
+				teacherCoursesInDates.forEach(courseSchedule -> {
+					Date updateStartClassTime = null,updateEndClassTime=null;
+					try {
+						updateStartClassTime=s3.parse(s1.format(courseSchedule.getClassDate())+" "+s2.format(classDateAdjustDto.getStartClassTime()));
+						updateEndClassTime=s3.parse(s1.format(courseSchedule.getClassDate())+" "+s2.format(classDateAdjustDto.getEndClassTime()));
+					} catch (ParseException e) {
+						e.printStackTrace();
+					}
+					boolean isDuplication=(courseSchedule.getStartClassTime().after(updateStartClassTime)
+							&&courseSchedule.getStartClassTime().before(updateEndClassTime))
+							||(updateStartClassTime.after(courseSchedule.getStartClassTime())
+							&&updateStartClassTime.before(courseSchedule.getEndClassTime()));
+					if(isDuplication){
+						throw new BizException("在所选时段内教师上课时间存在重复!");
+					}
+
+				});
+				//判断学生在时间安排上是否存在冲突
+				Map<Date, List<CourseSchedule>> collect = coursesByDates.stream().collect(Collectors.groupingBy(CourseSchedule::getClassDate));
+				for(Date keyDate:collect.keySet()){
+					List<Integer> repeatClassGroupIds = collect.get(keyDate).stream().map(CourseSchedule::getClassGroupId).collect(Collectors.toList());
+					checkStudentIsRepeat(repeatClassGroupIds);
+				}
+				createNewCourseByAdjust(dates,classDateAdjustDto);
+			}
+		}
+	}
+
+	@Transactional(rollbackFor = Exception.class)
+	@Override
+	public void courseSwap(Long courseScheduleId1, Long courseScheduleId2) {
+		List<CourseSchedule> courseSchedules = courseScheduleDao.findCourseSchedulesByIds(new Long[]{courseScheduleId1, courseScheduleId2});
+		CourseSchedule temp=new CourseSchedule();
+		BeanUtils.copyProperties(courseSchedules.get(0),temp);
+		courseSchedules.get(0).setClassDate(courseSchedules.get(1).getClassDate());
+		courseSchedules.get(0).setStartClassTime(courseSchedules.get(1).getStartClassTime());
+		courseSchedules.get(0).setEndClassTime(courseSchedules.get(1).getEndClassTime());
+		courseSchedules.get(1).setClassDate(temp.getClassDate());
+		courseSchedules.get(1).setStartClassTime(temp.getStartClassTime());
+		courseSchedules.get(1).setEndClassTime(temp.getEndClassTime());
+		courseScheduleDao.update(courseSchedules.get(0));
+		courseScheduleDao.update(courseSchedules.get(1));
+	}
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/24
+	 * 检测学生是否存在重复
+	 */
+	private void checkStudentIsRepeat(List<Integer> studentIds){
+		Integer[] counts=courseScheduleDao.countStudentInClass(studentIds);
+		for (Integer i:counts){
+			if (i>ParamEnum.ONE.getCode()){
+				throw new BizException("所选课程安排日期有学生重复!");
+			}
+		}
 	}
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/24
+	 * 根据课时调整信息增加新课程
+	 */
+	private void createNewCourseByAdjust(List<Date> dates,ClassDateAdjustDto classDateAdjustDto){
+		CourseSchedule schedule=courseScheduleDao.get(classDateAdjustDto.getId());
+		List<CourseSchedule> courseSchedules=new ArrayList<>();
+		courseScheduleDao.delete(classDateAdjustDto.getId());
+		for (Date date:dates){
+			CourseSchedule courseSchedule=new CourseSchedule();
+			BeanUtils.copyProperties(schedule,courseSchedule);
+			courseSchedule.setClassDate(date);
+			courseSchedule.setStartClassTime(classDateAdjustDto.getStartClassTime());
+			courseSchedule.setEndClassTime(classDateAdjustDto.getEndClassTime());
+			courseSchedule.setTeacherId(classDateAdjustDto.getTeacherId());
+			courseSchedules.add(courseSchedule);
+		}
+		courseScheduleDao.batchAddCourseSchedules(courseSchedules);
+	}
+
 }

+ 39 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -8,6 +8,11 @@ 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.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;
@@ -16,6 +21,7 @@ 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;
 
@@ -44,6 +50,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 
 	@Autowired
 	private ObjectMapper objectMapper;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private TeacherDao teacherDao;
 
 	@Override
 	public BaseDAO<Integer, Employee> getDAO() {
@@ -51,6 +61,35 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	}
 
 	@Override
+	public void add(Employee employee) throws Exception {
+		SysUser user = sysUserFeignService.getUserByMobile(employee.getPhone());
+		if(user != null){
+			throw new Exception("系统已存在该手机号的老师,请核查");
+		}
+		//保存用户表信息
+		sysUserFeignService.addUser(employee);
+		//注册到融云
+
+		//保存教师表数据
+		employeeDao.insert(employee);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateEmployee(Employee employee) {
+		employeeDao.update(employee);
+		teacherDao.updateUser(employee);
+	}
+
+	@Override
+	public void deleteEmployee(Long userId) {
+		SysUser sysUser=new SysUser();
+		sysUser.setId(userId.intValue());
+		sysUser.setDelFlag(YesOrNoEnum.YES);
+		teacherDao.updateUser(sysUser);
+	}
+
+	@Override
 	public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws IOException {
 		String url = "http://auth-server/queryUserInfo";
 

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

@@ -4,10 +4,10 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -93,4 +93,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup>
 	public List<MusicCardDto> queryUserMusicGroups(Integer userId) {
 		return musicGroupDao.queryUserMusicGroups(userId);
 	}
+
+	@Override
+	public MusicCardDto queryPersonalMusicGroups(Integer id) {
+		MusicCardDto musicCardDto = musicGroupDao.queryPersonalMusicGroups(id);
+		musicCardDto.setMusicGroupNum(musicGroupDao.countUserMusicGroups(id));
+		musicCardDto.setVipClassNum(musicGroupDao.countCourseByType(id,ClassGroupTypeEnum.VIP));
+		return musicGroupDao.queryPersonalMusicGroups(id);
+	}
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserBankCardServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.SysUserBankCardDao;
+import com.ym.mec.biz.dal.entity.SysUserBankCard;
+import com.ym.mec.biz.service.SysUserBankCardService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SysUserBankCardServiceImpl extends BaseServiceImpl<Long, SysUserBankCard> implements SysUserBankCardService {
+	
+	@Autowired
+	private SysUserBankCardDao sysUserBankCardDao;
+
+	@Override
+	public BaseDAO<Long, SysUserBankCard> getDAO() {
+		return sysUserBankCardDao;
+	}
+	
+}

+ 10 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -2,17 +2,11 @@ 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.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
-import com.ym.mec.biz.dal.dao.StudentCourseHomeworkDao;
-import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherPersonalAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherSignOutDto;
-import com.ym.mec.biz.dal.entity.CourseHomework;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.StudentCourseHomework;
-import com.ym.mec.biz.dal.entity.TeacherAttendance;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.enums.SignStatusEnum;
@@ -45,6 +39,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	private StudentCourseHomeworkDao studentCourseHomeworkDao;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private ClassGroupDao classGroupDao;
 
 	@Override
 	public BaseDAO<Long, TeacherAttendance> getDAO() {
@@ -79,6 +75,12 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		teacherAttendance.setCreateTime(date);
 		teacherAttendanceDao.insert(teacherAttendance);
 		if(teacherAttendance.getStatus()==SignStatusEnum.YES_QUIT){
+			//更新课次
+			ClassGroup classGroup=new ClassGroup();
+			classGroup.setId(currentCourseDetail.getClassId().intValue());
+			classGroup.setCurrentClassTimes(teacherAttendanceDao.countClassTime(currentCourseDetail.getClassId()));
+			classGroupDao.update(classGroup);
+			//新增课堂作业
 			CourseHomework courseHomework=teacherSignOutDto.getCourseHomeworkInfo();
 			courseHomework.setCourseScheduleId(teacherAttendance.getCourseScheduleId());
 			courseHomework.setMusicGroupId(currentCourseDetail.getMusicGroupId().intValue());

+ 9 - 0
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.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.OrganizationDao;
 import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
@@ -67,6 +68,14 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	}
 
 	@Override
+	public void deleteTeacher(Long userId) {
+		SysUser sysUser=new SysUser();
+		sysUser.setId(userId.intValue());
+		sysUser.setDelFlag(YesOrNoEnum.YES);
+		teacherDao.updateUser(sysUser);
+	}
+
+	@Override
 	public PageInfo<Teacher> queryPageDetail(TeacherQueryInfo queryInfo) {
 		PageInfo<Teacher> pageInfo = queryPage(queryInfo);
 		List<Teacher> teachers = pageInfo.getRows();

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

@@ -1,21 +1,29 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
-import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
+import com.ym.mec.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 @Service
 public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> implements VipGroupService {
 	
@@ -60,4 +68,55 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		});
 		return courseScheduleService.batchAddCourseSchedule(vipGroup.getCourseSchedules());
 	}
+
+	@Override
+	public PageInfo findStudentVipGroupList(QueryInfo 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 = vipGroupDao.countVipGorups(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = vipGroupDao.findVipGroups(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
+	public VipGroupManageDetailDto getVipGroupDetail(Long vipGroupId) {
+		VipGroupManageDetailDto vipGroupBaseInfo = vipGroupDao.getVipGroupBaseInfo(vipGroupId);
+		return vipGroupBaseInfo;
+	}
+
+	@Override
+	public PageInfo findVipGroupAttendances(VipGroupAttendanceQueryInfo 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 = vipGroupDao.countVipGroupAttendance(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = vipGroupDao.findVipGroupAttendances(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
+	public StudentVipGroupDetailDto getVipGroupShowDetail(Long vipGroupId) {
+		return vipGroupDao.getVipGroupDetail(vipGroupId);
+	}
 }

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

@@ -51,6 +51,7 @@
             <if test="type!=null">type_,</if>
             <if test="expectStudentNum!=null">expect_student_num_,</if>
             <if test="totalClassTimes!=null">total_class_times_,</if>
+            <if test="currentClassTimes!=null">current_class_times_,</if>
         </trim>
         VALUES
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -64,6 +65,7 @@
             <if test="type!=null">#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},</if>
             <if test="expectStudentNum!=null">#{expectStudentNum},</if>
             <if test="totalClassTimes!=null">#{totalClassTimes},</if>
+            <if test="currentClassTimes!=null">#{currentClassTimes},</if>
         </trim>
     </insert>
 
@@ -107,6 +109,9 @@
             <if test="totalClassTimes != null">
                 total_class_times_ = #{totalClassTimes},
             </if>
+            <if test="currentClassTimes!=null">
+                current_class_times_=#{currentClassTimes},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>
@@ -217,7 +222,7 @@
     </resultMap>
     <select id="getTeacherVipClass" resultMap="getTeacherVipClassMap">
         SELECT vg.id_ vip_group_id_,vg.name_ vip_group_name_,vg.audit_status_,cs.status_,
-        cg.student_num_,vg.price_,vg.payment_expire_date_,vg.courses_expire_date_,vg.create_time_
+        cg.student_num_,vg.price_,vg.payment_expire_date_,vg.courses_expire_date_,vg.create_time_,
         cs.current_class_times_,cg.total_class_times_
         FROM vip_group vg
         LEFT JOIN sys_user su ON vg.user_id_ = su.id_

+ 124 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherSalaryMapper.xml

@@ -0,0 +1,124 @@
+<?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.ClassGroupTeacherSalaryDao">
+  <resultMap id="ClassGroupTeacherSalary" type="com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary">
+    <id column="id_" jdbcType="BIGINT" property="id" />
+    <result column="music_group_id_" jdbcType="INTEGER" property="musicGroupId" />
+    <result column="class_group_id_" jdbcType="INTEGER" property="classGroupId" />
+    <result column="teacher_role_" jdbcType="VARCHAR" property="teacherRole" />
+    <result column="user_id_" jdbcType="INTEGER" property="userId" />
+    <result column="duration_" jdbcType="INTEGER" property="duration" />
+    <result column="salary_" jdbcType="DECIMAL" property="salary" />
+    <result column="create_time_" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    
+    id_, music_group_id_, class_group_id_, teacher_role_, user_id_, duration_, salary_, 
+    create_time_, update_time_
+  </sql>
+  <select id="get" parameterType="java.lang.Long" resultMap="ClassGroupTeacherSalary">
+     select * from class_group_teacher_salary where id_ = #{id}
+  </select>
+  <delete id="delete" parameterType="java.lang.Long">
+    delete from class_group_teacher_salary
+    where id_ = #{id}
+  </delete>
+  <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary" useGeneratedKeys="true">
+    
+    insert into class_group_teacher_salary
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="musicGroupId != null">
+        music_group_id_,
+      </if>
+      <if test="classGroupId != null">
+        class_group_id_,
+      </if>
+      <if test="teacherRole != null">
+        teacher_role_,
+      </if>
+      <if test="userId != null">
+        user_id_,
+      </if>
+      <if test="duration != null">
+        duration_,
+      </if>
+      <if test="salary != null">
+        salary_,
+      </if>
+      <if test="createTime != null">
+        create_time_,
+      </if>
+      <if test="updateTime != null">
+        update_time_,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="musicGroupId != null">
+        #{musicGroupId,jdbcType=INTEGER},
+      </if>
+      <if test="classGroupId != null">
+        #{classGroupId,jdbcType=INTEGER},
+      </if>
+      <if test="teacherRole != null">
+        #{teacherRole,jdbcType=VARCHAR},
+      </if>
+      <if test="userId != null">
+        #{userId,jdbcType=INTEGER},
+      </if>
+      <if test="duration != null">
+        #{duration,jdbcType=INTEGER},
+      </if>
+      <if test="salary != null">
+        #{salary,jdbcType=DECIMAL},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+  <update id="update" parameterType="com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary">
+    
+    update class_group_teacher_salary
+    <set>
+      <if test="musicGroupId != null">
+        music_group_id_ = #{musicGroupId,jdbcType=INTEGER},
+      </if>
+      <if test="classGroupId != null">
+        class_group_id_ = #{classGroupId,jdbcType=INTEGER},
+      </if>
+      <if test="teacherRole != null">
+        teacher_role_ = #{teacherRole,jdbcType=VARCHAR},
+      </if>
+      <if test="userId != null">
+        user_id_ = #{userId,jdbcType=INTEGER},
+      </if>
+      <if test="duration != null">
+        duration_ = #{duration,jdbcType=INTEGER},
+      </if>
+      <if test="salary != null">
+        salary_ = #{salary,jdbcType=DECIMAL},
+      </if>
+      <if test="createTime != null">
+        create_time_ = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateTime != null">
+        update_time_ = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    where id_ = #{id,jdbcType=BIGINT}
+  </update>
+  <!-- 分页查询 -->
+  <select id="queryPage" resultMap="ClassGroupTeacherSalary" parameterType="map">
+    SELECT * FROM class_group_teacher_salary ORDER BY id_
+    <include refid="global.limit"/>
+  </select>
+
+  <!-- 查询当前表的总记录数 -->
+  <select id="queryCount" resultType="int">
+    SELECT COUNT(*) FROM class_group_teacher_salary
+  </select>
+</mapper>

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

@@ -68,10 +68,9 @@
     </update>
 
     <!-- 根据主键删除一条记录 -->
-    <delete id="delete">
-		DELETE FROM cooperation_organ WHERE id_ =
-		#{id}
-	</delete>
+    <update id="delete">
+		UPDATE cooperation_organ SET det_flag_ = 1 WHERE id_ =#{id}
+	</update>
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="CooperationOrgan"

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

@@ -20,7 +20,6 @@
         <result column="update_time_" property="updateTime"/>
         <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="complaint_status_" property="complaintStatus"/>
-        <result column="current_class_times_" property="currentClassTimes"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.CourseScheduleDto" id="courseScheduleDto" extends="CourseSchedule">
@@ -47,16 +46,16 @@
         </selectKey>
         -->
         INSERT INTO course_schedule
-        (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,current_class_times_)
-        VALUES(#{id},#{classGroupId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},#{endClassTime},#{teacherId},#{actualTeacherId},now(),now(),#{currentClassTimes})
+        (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_)
+        VALUES(#{id},#{classGroupId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},#{endClassTime},#{teacherId},#{actualTeacherId},now(),now())
     </insert>
 
     <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
         INSERT INTO course_schedule
-        (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,current_class_times_)
+        (class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_)
         VALUE
         <foreach collection="list" item="course" separator=",">
-            (#{course.id},#{course.classGroupId},#{course.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},#{course.actualTeacherId},now(),now(),#{currentClassTimes})
+            (#{course.classGroupId},#{course.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},#{course.actualTeacherId},now(),now())
         </foreach>
     </insert>
 
@@ -91,16 +90,13 @@
             <if test="updateTime != null">
                 update_time_ = #{updateTime},
             </if>
-            <if test="currentClassTimes!=null">
-                current_class_times_=#{currentClassTimes}
-            </if>
         </set>
         WHERE id_ = #{id}
     </update>
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
-		DELETE FROM course_schedule WHERE id_ = #{id} 
+		DELETE FROM course_schedule WHERE id_ = #{id}
 	</delete>
 
     <delete id="deleteCourseSchedulesByMusicGroupID">
@@ -193,9 +189,9 @@
 
     <select id="countStudentInClass" resultType="java.lang.Integer">
         SELECT
-            COUNT(class_group_id_)
+        COUNT(class_group_id_)
         FROM
-            class_group_student_mapper cgsm
+        class_group_student_mapper cgsm
         WHERE class_group_id_ IN
         <foreach collection="list" item="item" index="index" separator="," open="(" close=")">
             #{item}
@@ -224,4 +220,78 @@
         AND cg.music_group_id_=#{musicGroupID}
         GROUP BY cs.class_date_
     </select>
+
+    <select id="countTeacherCourseInOnDayRepeats" parameterType="com.ym.mec.biz.dal.entity.CourseSchedule" resultType="int">
+        SELECT
+        COUNT( * )
+        FROM
+        course_schedule cs
+        WHERE
+        cs.teacher_id_ = #{teacherId}
+        AND cs.class_date_ = DATE_FORMAT( #{classDate}, '%Y-%m-%d' )
+        AND (
+        CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; DATE_FORMAT( 'endClassTime', '%Y-%m-%d %H:%i:%s' )
+        OR CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) &gt; DATE_FORMAT( 'startClassTime', '%Y-%m-%d %H:%i:%s' )
+        )
+    </select>
+    <select id="findTeacherCoursesInDates" resultMap="CourseSchedule">
+        SELECT
+        id_,
+        class_group_id_,
+        status_,
+        subsidy_,
+        class_date_,
+        concat(class_date_,' ',start_class_time_) start_class_time_,
+        concat(class_date_,' ',end_class_time_) end_class_time_,
+        teacher_id_,
+        actual_teacher_id_,
+        create_time_,
+        update_time_
+        FROM
+        course_schedule cs
+        WHERE
+        cs.teacher_id_ = #{teacherId}
+        AND cs.class_date_ IN
+        <foreach collection="dates" item="date" open="(" close=")" separator=",">
+            #{date}
+        </foreach>
+    </select>
+    <select id="findCoursesByDates" resultMap="CourseSchedule">
+        SELECT
+        *
+        FROM
+        course_schedule cs
+        WHERE
+        cs.class_date_ IN
+        <foreach collection="dates" item="date" open="(" close=")" separator=",">
+            DATE_FORMAT(#{date},'%Y-%m-%d')
+        </foreach>
+    </select>
+
+    <select id="findOverLapCoursesInDay" resultMap="CourseSchedule">
+        SELECT
+        *
+        FROM
+        course_schedule cs
+        WHERE
+        cs.class_date_ IN
+        <foreach collection="dates" item="date" open="(" close=")" separator=",">
+            DATE_FORMAT(#{date},'%Y-%m-%d')
+        </foreach>
+        AND (
+        DATE_FORMAT(cs.start_class_time_,"%H:%i:%s") &gt; DATE_FORMAT(#{endClassTime}, '%H:%i:%s' ) OR DATE_FORMAT(cs.end_class_time_,"%H:%i:%s") &lt; DATE_FORMAT( #{endClassTime}, '%H:%i:%s' )
+        )=0
+    </select>
+
+    <select id="findCourseSchedulesByIds" resultMap="CourseSchedule">
+        SELECT
+        *
+        FROM
+        course_schedule cs
+        WHERE
+        cs.id_ IN
+        <foreach collection="ids" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>

+ 23 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -133,8 +133,11 @@
 		<result column="current_class_" property="currentClass" />
 		<result column="current_grade_" property="currentGrade" />
 		<result column="music_group_name_" property="musicGroupName" />
+		<result column="vip_class_num_" property="vipClassNum" />
+		<result column="music_group_num_" property="musicGroupNum" />
 		<result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 	</resultMap>
+
     <select id="queryUserMusicGroups" resultMap="queryUserMusicGroupsMap">
 		SELECT sr.name_ user_name_,sr.current_class_,sr.current_grade_,
 		sr.payment_status_,mg.name_ music_group_name_,s.name_ subject_name_
@@ -143,4 +146,24 @@
 		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
 		WHERE sr.user_id_ = #{userId}
 	</select>
+
+	<select id="queryPersonalMusicGroups" resultMap="queryUserMusicGroupsMap">
+		SELECT sr.name_ user_name_,mg.name_ music_group_name_,s.name_ subject_name_
+		FROM student_registration sr
+		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
+		WHERE sr.user_id_ = #{userId}
+	</select>
+
+	<select id="countUserMusicGroups" resultType="int">
+		SELECT COUNT(mg.id_)
+		FROM student_registration sr
+		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+		WHERE sr.user_id_ = #{userId}
+	</select>
+    <select id="countCourseByType" resultType="java.lang.Integer">
+		SELECT SUM(cg.total_class_times_) - SUM(cg.current_class_times_) FROM student_registration sr
+		LEFT JOIN class_group cg ON sr.class_group_id_ = cg.id_
+		WHERE sr.user_id_ = #{userId} AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+	</select>
 </mapper>

+ 7 - 9
mec-biz/src/main/resources/config/mybatis/SchoolMapper.xml

@@ -14,7 +14,7 @@
         <result column="contact_phone_" property="contactPhone"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
-        <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="del_flag_" property="delFlag"/>
         <result column="contact_name_" property="contactName"/>
         <result column="longitude_latitude_" property="longitudeLatitude"/>
         <result column="subsidy_" property="subsidy"/>
@@ -35,11 +35,6 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.School" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
-        <!--
-        <selectKey resultClass="int" keyProperty="id" >
-        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
-        </selectKey>
-        -->
         INSERT INTO school
         (id_,name_,organ_id_,address_,contact_phone_,create_time_,update_time_,contact_name_,longitude_latitude_,subsidy_,cooperation_organ_id_,remark_)
         VALUES(#{id},#{name},#{organId},#{address},#{contactPhone},now(),now(),#{contactName},#{longitudeLatitude},#{subsidy},#{cooperationOrganId},#{remark})
@@ -50,7 +45,7 @@
         UPDATE school
         <set>
             <if test="delFlag != null">
-                del_flag_ = #{delFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                del_flag_ = #{delFlag},
             </if>
             <if test="organId != null">
                 organ_id_ = #{organId},
@@ -93,13 +88,16 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="School" parameterType="map">
-        SELECT * FROM school ORDER BY id_
+        SELECT * FROM school
+        where del_flag_ != 1
+        ORDER BY id_
         <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM school
+		where del_flag_ != 1
 	</select>
     <select id="queryByOrganId" resultMap="School">
         SELECT * FROM school
@@ -108,7 +106,7 @@
                 organ_id_ = #{organId}
             </if>
             <if test="delFlag != null">
-                AND del_flag_ = #{delFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+                AND del_flag_ = #{delFlag}
             </if>
         </where>
     </select>

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

@@ -214,12 +214,6 @@
     </select>
 
     <update id="updateByUserIdAndMusicGroupId" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration">
-        UPDATE student_registration
-        <set>
-            <if test="classGroupId != null != null">
-                class_group_id_ = #{classGroupId},
-            </if>
-        </set>
-        WHERE user_id_ = #{userId} AND music_group_id_ = #{musicGroupId}
+        UPDATE student_registration SET class_group_id_ = #{classGroupId} WHERE user_id_ = #{userId} AND music_group_id_ = #{musicGroupId}
     </update>
 </mapper>

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

@@ -89,12 +89,23 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="StudentWithdraw" parameterType="map">
-        SELECT * FROM student_withdraw ORDER BY id_
+        SELECT * FROM student_withdraw
+        <where>
+            <if test="userId != null">
+                user_id_ = #{userId}
+            </if>
+        </where>
+        ORDER BY id_
         <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM student_withdraw
+        <where>
+            <if test="userId != null">
+                user_id_ = #{userId}
+            </if>
+        </where>
 	</select>
 </mapper>

+ 112 - 0
mec-biz/src/main/resources/config/mybatis/SysUserBankCardMapper.xml

@@ -0,0 +1,112 @@
+<?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.SysUserBankCardDao">
+
+    <resultMap type="com.ym.mec.biz.dal.entity.SysUserBankCard" id="SysUserBankCard">
+        <result column="id_" property="id"/>
+        <result column="user_id_" property="userId"/>
+        <result column="is_default_" property="isDefault" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="bank_name_" property="bankName"/>
+        <result column="bank_code_" property="bankCode"/>
+        <result column="card_no_" property="cardNo"/>
+        <result column="province_" property="province"/>
+        <result column="city_" property="city"/>
+        <result column="address" property="address"/>
+        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="create_on_" property="createOn"/>
+        <result column="modify_on_" property="modifyOn"/>
+        <result column="is_quick_" property="isQuick" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="mobile_phone_" property="mobilePhone"/>
+        <result column="trans_no_" property="transNo"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="SysUserBankCard">
+		SELECT * FROM sys_user_bank_card WHERE id_ = #{id} 
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="SysUserBankCard">
+		SELECT * FROM sys_user_bank_card ORDER BY id_
+	</select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysUserBankCard" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        <!--
+        <selectKey resultClass="int" keyProperty="id" >
+        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
+        </selectKey>
+        -->
+        INSERT INTO sys_user_bank_card
+        (id_,user_id_,is_default_,bank_name_,bank_code_,card_no_,province_,city_,address,create_on_,modify_on_,is_quick_,mobile_phone_,trans_no_)
+        VALUES(#{id},#{userId},#{isDefault,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{bankName},#{bankCode},#{cardNo},#{province},#{city},#{address},now(),now(),#{isQuick,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{mobilePhone},#{transNo})
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.SysUserBankCard">
+        UPDATE sys_user_bank_card
+        <set>
+            <if test="mobilePhone != null">
+                mobile_phone_ = #{mobilePhone},
+            </if>
+            <if test="status != null">
+                status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="modifyOn != null">
+                modify_on_ = #{modifyOn},
+            </if>
+            <if test="address != null">
+                address = #{address},
+            </if>
+            <if test="isDefault != null">
+                is_default_ = #{isDefault,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="bankCode != null">
+                bank_code_ = #{bankCode},
+            </if>
+            <if test="cardNo != null">
+                card_no_ = #{cardNo},
+            </if>
+            <if test="bankName != null">
+                bank_name_ = #{bankName},
+            </if>
+            <if test="province != null">
+                province_ = #{province},
+            </if>
+            <if test="city != null">
+                city_ = #{city},
+            </if>
+            <if test="userId != null">
+                user_id_ = #{userId},
+            </if>
+            <if test="isQuick != null">
+                is_quick_ = #{isQuick,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="transNo != null">
+                trans_no_ = #{transNo},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <update id="delete">
+		UPDATE sys_user_bank_card SET del_flag_ = 1 WHERE id_ = #{id}
+	</update>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="SysUserBankCard" parameterType="map">
+        SELECT * FROM sys_user_bank_card ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_user_bank_card
+	</select>
+</mapper>

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

@@ -85,13 +85,16 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="SysUserCashAccountDetail" parameterType="map">
-        SELECT * FROM sys_user_cash_account_detail ORDER BY id_
+        SELECT * FROM sys_user_cash_account_detail
+        WHERE user_id_ = #{userId}
+        ORDER BY id_
         <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM sys_user_cash_account_detail
+		WHERE user_id_ = #{userId}
 	</select>
 
     <select id="selectDetailByTransNo" resultMap="SysUserCashAccountDetail">

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -145,5 +145,9 @@
         <include refid="queryCondition"/>
     </select>
 
+    <select id="countClassTime" resultType="java.lang.Integer">
+        select count(*) from teacher_attendance where class_group_id_=#{classGroupId} for update
+    </select>
+
 
 </mapper>

+ 130 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -26,6 +26,33 @@
         <result property="vipGroupCategory" column="vip_group_category_"/>
     </resultMap>
 
+    <resultMap id="vipGroupManageDetailDto" type="com.ym.mec.biz.dal.dto.VipGroupManageDetailDto" extends="VipGroup">
+        <result property="studentNum" column="student_num_"/>
+        <result property="latestClassTime" column="current_class_times_"/>
+        <collection property="students" ofType="com.ym.mec.auth.api.entity.SysUser" column="user_id_">
+            <result property="id" column="user_id_"/>
+            <result property="username" column="username_"/>
+        </collection>
+    </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_"/>
+    </resultMap>
+
+    <resultMap type="com.ym.mec.biz.dal.dto.StudentVipGroupShowListDto" id="studentVipGroup">
+        <result column="vip_group_id_" property="vipGroupId"/>
+        <result column="vip_group_name_" property="vipGroupName"/>
+        <result column="single_class_minutes_" property="singleClassMinutes"/>
+        <result column="payment_expire_date_" property="paymentExpireDate"/>
+        <result column="online_classes_num_" property="onlineClassesNum"/>
+        <result column="offline_classes_num_" property="offlineClassesNum"/>
+        <result column="price_" property="price"/>
+        <result column="expect_student_num_" property="expectStudentNum"/>
+        <result column="student_num_" property="studentNum"/>
+        <result column="teacher_name_" property="teacherName"/>
+        <result column="avatar_" property="avatar"/>
+    </resultMap>
+
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="VipGroup">
 		SELECT * FROM vip_group WHERE id_ = #{id} 
@@ -117,4 +144,107 @@
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM vip_group
 	</select>
+
+
+
+    <select id="findVipGroups" resultMap="studentVipGroup">
+       SELECT
+            vg.id_ vip_group_id_,
+            vg.name_ vip_group_name_,
+            vg.single_class_minutes_,
+            vg.payment_expire_date_,
+            vg.courses_expire_date_,
+            vg.online_classes_num_,
+            vg.offline_classes_num_,
+            cg.expect_student_num_,
+            cg.student_num_,
+            su.username_ teacher_name_,
+            su.avatar_
+        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 sys_user su ON cgtm.user_id_=su.id_
+        ORDER BY vg.id_ DESC
+        <include refid="global.limit"/>
+    </select>
+    <select id="countVipGorups" resultType="int">
+        SELECT
+            count(*)
+        FROM
+            vip_group vg
+    </select>
+    <select id="getVipGroupBaseInfo" resultMap="vipGroupManageDetailDto">
+        SELECT
+            vg.*,
+            cg.student_num_,
+            cg.current_class_times_,
+            su.*
+        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_student_mapper cgsm ON vgcgm.class_group_id_=cgsm.class_group_id_
+            LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
+        WHERE vg.id_=1
+        ORDER BY vg.id_ DESC
+    </select>
+
+    <sql id="vipGroupAttendanceQueryCondition">
+        <where>
+            <if test="vipGroupId!=null">
+                and vg.id_=#{vipGroupId}
+            </if>
+            <if test="startTime != null">
+                and CONCAT(cs.class_date_,' ',cs.end_class_time_) &gt; #{startTime}
+            </if>
+            <if test="endTime != null">
+                and CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt; #{endTime}
+            </if>
+            <if test="status != null">
+                and cs.status_ = #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="complaintStatus != null">
+                and cs.complaint_status_ = #{complaintStatus}
+            </if>
+        </where>
+    </sql>
+    <select id="findVipGroupAttendances" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule">
+        SELECT
+            cs.*
+        FROM
+            vip_group vg
+            LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
+            LEFT JOIN teacher_attendance ta ON vgcgm.class_group_id_=ta.class_group_id_
+            LEFT JOIN course_schedule cs ON ta.course_schedule_id_=cs.id_
+        <include refid="vipGroupAttendanceQueryCondition"/>
+        ORDER BY ta.id_
+        <include refid="global.limit"/>
+    </select>
+    <select id="countVipGroupAttendance" resultType="int">
+        SELECT
+        count(*)
+        FROM
+        vip_group vg
+        LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
+        LEFT JOIN teacher_attendance ta ON vgcgm.class_group_id_=ta.class_group_id_
+        LEFT JOIN course_schedule cs ON ta.course_schedule_id_=cs.id_
+        <include refid="vipGroupAttendanceQueryCondition"/>
+        ORDER BY ta.id_
+    </select>
+
+    <select id="getVipGroupDetail" resultMap="studentVipGroupDetailDto">
+        SELECT
+            vg.*,
+            su.username_ teacher_name_,
+            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 sys_user su ON cgtm.user_id_=su.id_
+        WHERE vg.id_=#{vipGroupId}
+    </select>
 </mapper>

+ 3 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/config/FeignConfiguration.java

@@ -17,6 +17,9 @@ public class FeignConfiguration implements RequestInterceptor {
 	@Override
 	public void apply(RequestTemplate template) {
 		ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+		if (attributes == null) {
+			return;
+		}
 		HttpServletRequest request = attributes.getRequest();
 		Enumeration<String> headerNames = request.getHeaderNames();
 		if (headerNames != null) {

+ 54 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/enums/TransTypeEnum.java

@@ -0,0 +1,54 @@
+package com.ym.mec.common.enums;
+
+import java.util.Arrays;
+
+/**
+ * @program: mec
+ * @description: 提现/充值交易类型
+ * @author: xw
+ * @create: 2019-09-24 16:00
+ */
+public enum TransTypeEnum {
+
+    WECHAT(1, "微信"),
+    ALIPAY(2, "支付宝"),
+    FAST_PAYMENT(3, "快捷支付");
+
+    private Integer code;
+
+    private String description;
+
+    TransTypeEnum(Integer code, String description) {
+        this.code = code;
+        this.description = description;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    /**
+     * 根据枚举值获取枚举信息
+     *
+     * @param code 枚举值
+     * @return 枚举信息
+     */
+    public static String getDescriptionByCode(Integer code) {
+        return Arrays.stream(TransTypeEnum.values())
+                .filter(billStatusEnum -> billStatusEnum.getCode().equals(code))
+                .findFirst()
+                .map(TransTypeEnum::getDescription).orElse(null);
+    }
+}

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

@@ -0,0 +1,41 @@
+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 {
+
+    /**
+     * @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;
+    }
+
+    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 - 1
mec-education/src/main/resources/application.yml

@@ -72,4 +72,8 @@ management:
         include: "*"
   endpoint:
     health:
-      show-details: ALWAYS
+      show-details: ALWAYS
+  
+feign:
+  hystrix:
+    enabled: true

+ 11 - 1
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -23,11 +23,21 @@ public class MusicGroupController extends BaseController {
 
     @ApiOperation("获取学生所在乐团列表")
     @GetMapping(value = "/queryUserMusicGroups")
-    private Object queryUserMusicGroups(){
+    public Object queryUserMusicGroups(){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){
             return failed("请重新登录");
         }
         return succeed(musicGroupService.queryUserMusicGroups(sysUser.getId()));
     }
+
+    @ApiOperation("获取学生个人中心乐团信息")
+    @GetMapping(value = "/queryPersonalMusicGroups")
+    public Object queryPersonalMusicGroups(){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("请重新登录");
+        }
+        return succeed(musicGroupService.queryPersonalMusicGroups(sysUser.getId()));
+    }
 }

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/controller/RechargeController.java

@@ -36,7 +36,7 @@ public class RechargeController extends BaseController {
 
     @ApiOperation("充值")
     @GetMapping(value = "/recharge")
-    private Object recharge(RechargeDto rechargeDto){
+    public Object recharge(RechargeDto rechargeDto){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){
             return failed("请重新登录");

+ 28 - 0
mec-student/src/main/java/com/ym/mec/student/controller/RegisterController.java

@@ -0,0 +1,28 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.service.StudentRegistrationService;
+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;
+
+@RequestMapping("register")
+@Api(tags = "乐团服务")
+@RestController
+public class RegisterController extends BaseController {
+
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
+
+
+    @ApiOperation(value = "新增学生报名信息")
+    @PostMapping("/add")
+    public Object add(StudentRegistration studentRegistration) {
+        studentRegistrationService.insert(studentRegistration);
+        return succeed();
+    }
+}

+ 41 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseScheduleController.java

@@ -0,0 +1,41 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.StudentAttendanceService;
+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.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/24
+ */
+@RequestMapping("studentCourseSchedule")
+@Api(tags = "课程计划服务")
+@RestController
+public class StudentCourseScheduleController extends BaseController {
+
+    @Autowired
+    private CourseScheduleService scheduleService;
+    @Autowired
+    private StudentAttendanceService studentAttendanceService;
+
+    @ApiOperation(value = "课时调整")
+    @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public Object classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto){
+        scheduleService.classStartDateAdjust(classDateAdjustDto);
+        return succeed();
+    }
+
+    @ApiOperation(value = "课时交换")
+    @GetMapping(value = "/courseSwap",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public Object courseSwap(Long courseScheduleId1,Long courseScheduleId2){
+        scheduleService.courseSwap(courseScheduleId1,courseScheduleId2);
+        return succeed();
+    }
+
+}

+ 37 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentVipGroupController.java

@@ -0,0 +1,37 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
+import com.ym.mec.biz.service.VipGroupService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/23
+ */
+
+@Api(tags = "vip课-学生端")
+@RequestMapping("studentVipGroup")
+@RestController
+public class StudentVipGroupController extends BaseController {
+
+    @Autowired
+    private VipGroupService vipGroupService;
+
+    @ApiOperation("获取vip课列表")
+    @GetMapping(value = "/queryVipGroups")
+    public Object queryVipGroups(QueryInfo queryInfo){
+        return succeed(vipGroupService.findStudentVipGroupList(queryInfo));
+    }
+
+    @ApiOperation("获取学生端vip课显示详情")
+    @GetMapping(value = "/getVipGroupShowDetail/{vipGroupId}")
+    public Object getVipGroupShowDetail(@PathVariable("vipGroupId") Long vipGroupId){
+        return succeed(vipGroupService.getVipGroupShowDetail(vipGroupId));
+    }
+
+}

+ 5 - 1
mec-student/src/main/resources/application.yml

@@ -72,4 +72,8 @@ management:
         include: "*"
   endpoint:
     health:
-      show-details: ALWAYS
+      show-details: ALWAYS
+  
+feign:
+  hystrix:
+    enabled: true

+ 5 - 1
mec-task/src/main/resources/application.yml

@@ -50,4 +50,8 @@ security:
       token-info-uri: http://localhost:8001/oauth/check_token
       
 swagger:
-  base-package: com.ym.mec.task.controller
+  base-package: com.ym.mec.task.controller
+  
+feign:
+  hystrix:
+    enabled: true

+ 5 - 1
mec-teacher/src/main/resources/application.yml

@@ -72,4 +72,8 @@ management:
         include: "*"
   endpoint:
     health:
-      show-details: ALWAYS
+      show-details: ALWAYS
+  
+feign:
+  hystrix:
+    enabled: true

+ 6 - 15
mec-web/src/main/java/com/ym/mec/web/controller/CooperationOrganController.java

@@ -1,25 +1,16 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.common.security.AuthUser;
-import com.ym.mec.common.security.SecurityUtils;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.service.CooperationOrganService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-
-import java.util.Date;
-
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.service.CooperationOrganService;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.QueryInfo;
+import java.util.Date;
 
 @RequestMapping("cooperationOrgan")
 @Api(tags = "合作单位(教学点)服务")

+ 16 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -8,6 +9,7 @@ import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -85,4 +87,18 @@ public class CourseScheduleController extends BaseController {
         return succeed(studentAttendanceService.getCurrentCourseStudents(queryInfo));
     }
 
+    @ApiOperation(value = "课时调整")
+    @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public Object classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto){
+        scheduleService.classStartDateAdjust(classDateAdjustDto);
+        return succeed();
+    }
+
+    @ApiOperation(value = "课时交换")
+    @GetMapping(value = "/courseSwap",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public Object courseSwap(Long courseScheduleId1,Long courseScheduleId2){
+        scheduleService.courseSwap(courseScheduleId1,courseScheduleId2);
+        return succeed();
+    }
+
 }

+ 38 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentWithdrawController.java

@@ -0,0 +1,38 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.dto.WithdrawDto;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.dal.entity.StudentWithdraw;
+import com.ym.mec.biz.service.CooperationOrganService;
+import com.ym.mec.biz.service.StudentWithdrawService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+@RequestMapping("studentWithdraw")
+@Api(tags = "提现服务")
+@RestController
+public class StudentWithdrawController extends BaseController {
+
+    @Autowired
+    private StudentWithdrawService studentWithdrawService;
+
+    @ApiOperation(value = "新增")
+    @PostMapping("/add")
+    public Object add(StudentWithdraw studentWithdraw) {
+        studentWithdrawService.insert(studentWithdraw);
+        return succeed();
+    }
+
+    @ApiOperation(value = "分页查询")
+    @GetMapping("/queryPage")
+    public Object queryPage(WithdrawDto queryInfo) {
+        return succeed(studentWithdrawService.queryPage(queryInfo));
+    }
+}

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/SysMessageController.java

@@ -51,7 +51,7 @@ public class SysMessageController extends BaseController {
     }
 
     @ApiOperation(value = "获取用户未读消息条数")
-    @PostMapping("/findNewMessageNum")
+    @GetMapping("/findNewMessageNum")
     public Object findNewMessageNum(){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){

+ 50 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SysUserBankCardController.java

@@ -0,0 +1,50 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.entity.SysUserBankCard;
+import com.ym.mec.biz.service.SysUserBankCardService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+@RequestMapping("userBankCard")
+@Api(tags = "银行卡信息服务")
+@RestController
+public class SysUserBankCardController extends BaseController {
+
+    @Autowired
+    private SysUserBankCardService sysUserBankCardService;
+
+    @ApiOperation(value = "新增银行卡信息")
+    @PostMapping("/add")
+    public Object add(SysUserBankCard sysUserBankCard) {
+        sysUserBankCardService.insert(sysUserBankCard);
+        return succeed();
+    }
+
+    @ApiOperation(value = "删除银行卡信息")
+    @PostMapping("/del/{id}")
+    public Object del(@ApiParam(value = "银行卡信息编号", required = true) @PathVariable("id") Long id) {
+        sysUserBankCardService.delete(id);
+        return succeed();
+    }
+
+    @ApiOperation(value = "修改银行卡信息")
+    @PutMapping("/update")
+    public Object update(SysUserBankCard sysUserBankCard) {
+        sysUserBankCard.setModifyOn(new Date());
+        sysUserBankCardService.update(sysUserBankCard);
+        return succeed();
+    }
+
+    @ApiOperation(value = "分页查询银行卡信息列表")
+    @GetMapping("/queryPage")
+    public Object queryPage(QueryInfo queryInfo) {
+        return succeed(sysUserBankCardService.queryPage(queryInfo));
+    }
+}

+ 65 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SysUserCashAccountController.java

@@ -0,0 +1,65 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.entity.ChargeType;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.service.ChargeTypeService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.common.security.AuthUser;
+import com.ym.mec.common.security.SecurityUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+@RequestMapping("userCashAccount")
+@Api(tags = "用户账户服务")
+@RestController
+public class SysUserCashAccountController extends BaseController {
+
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
+
+//    @ApiOperation(value = "新增用户账户")
+//    @PostMapping("/add")
+//    public Object add(SysUserCashAccount sysUserCashAccount) {
+//        sysUserCashAccountService.insert(sysUserCashAccount);
+//        return succeed();
+//    }
+
+    @ApiOperation(value = "获取用户账户信息")
+    @GetMapping("/get")
+    public Object add() {
+        AuthUser user = SecurityUtils.getUser();
+        if(user == null){
+            return failed("请重新登录");
+        }
+        return succeed(sysUserCashAccountService.get(user.getUserId()));
+    }
+
+//    @ApiOperation(value = "删除收费类型")
+//    @PostMapping("/del/{id}")
+//    public Object del(@ApiParam(value = "收费类型编号", required = true) @PathVariable("id") Integer id) {
+//        sysUserCashAccountService.delete(id);
+//        return succeed();
+//    }
+//
+//    @ApiOperation(value = "修改收费类型")
+//    @PostMapping("/update")
+//    public Object update(SysUserCashAccount sysUserCashAccount) {
+//        sysUserCashAccount.setUpdateTime(new Date());
+//        sysUserCashAccountService.update(sysUserCashAccount);
+//        return succeed();
+//    }
+
+    @ApiOperation(value = "分页查询收费类型列表")
+    @GetMapping("/queryPage")
+    public Object queryPage(QueryInfo queryInfo) {
+        return succeed(sysUserCashAccountService.queryPage(queryInfo));
+    }
+
+}

+ 55 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SysUserCashAccountDetailController.java

@@ -0,0 +1,55 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.CashAccountDetail;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.common.security.AuthUser;
+import com.ym.mec.common.security.SecurityUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+@RequestMapping("userCashAccountDetail")
+@Api(tags = "用户交易明细服务")
+@RestController
+public class SysUserCashAccountDetailController extends BaseController {
+
+    @Autowired
+    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+
+    @ApiOperation(value = "新增用户交易明细")
+    @PostMapping("/add")
+    public Object add(SysUserCashAccountDetail sysUserCashAccountDetail) {
+        sysUserCashAccountDetailService.insert(sysUserCashAccountDetail);
+        return succeed();
+    }
+
+//    @ApiOperation(value = "修改用户交易明细")
+//    @PostMapping("/update")
+//    public Object update(SysUserCashAccountDetail sysUserCashAccountDetail) {
+//        sysUserCashAccountDetail.setUpdateTime(new Date());
+//        sysUserCashAccountDetailService.update(sysUserCashAccountDetail);
+//        return succeed();
+//    }
+
+    @ApiOperation(value = "分页查询用户交易明细")
+    @GetMapping("/queryPage")
+    public Object queryPage(CashAccountDetail queryInfo) {
+        AuthUser user = SecurityUtils.getUser();
+        if(user == null){
+            return failed("请重新登录");
+        }
+        queryInfo.setUserId(user.getUserId());
+        return succeed(sysUserCashAccountDetailService.queryPage(queryInfo));
+    }
+
+}

+ 7 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java

@@ -51,6 +51,13 @@ public class TeacherController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "删除教师")
+    @PostMapping("/delete/{userId}")
+    public Object update(@PathVariable("userId") Long userId) {
+        teacherService.deleteTeacher(userId);
+        return succeed();
+    }
+
     @ApiOperation(value = "根据教师编号查询教师基本信息")
     @GetMapping("/get/{id}")
     @ApiParam(value = "教师编号", required = true)

+ 2 - 5
mec-web/src/main/java/com/ym/mec/web/controller/education/CourseHomeworkController.java

@@ -27,11 +27,8 @@ public class CourseHomeworkController extends BaseController {
     private CourseHomeworkService courseHomeworkService;
 
     @ApiOperation(value = "分页查询作业列表")
-    @GetMapping(value = "/queryPage",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
-    public Object queryPage(@RequestBody(required = false) CourseHomeworkQueryInfo queryInfo){
-        if(queryInfo == null){
-            queryInfo = new CourseHomeworkQueryInfo();
-        }
+    @GetMapping(value = "/queryPage")
+    public Object queryPage(CourseHomeworkQueryInfo queryInfo){
         return succeed(courseHomeworkService.queryPage(queryInfo));
     }
 

+ 9 - 17
mec-web/src/main/java/com/ym/mec/web/controller/education/CourseHomeworkTemplateController.java

@@ -1,23 +1,15 @@
 package com.ym.mec.web.controller.education;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
 import com.ym.mec.biz.dal.entity.CourseHomeworkTemplate;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseHomeWorkTemplateQueryInfo;
 import com.ym.mec.biz.service.CourseHomeworkTemplateService;
 import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @Author Joburgess
@@ -34,22 +26,22 @@ public class CourseHomeworkTemplateController extends BaseController {
 
     @ApiOperation(value = "新增作业模板")
     @PostMapping("/add")
-    public Object add(@RequestBody CourseHomeworkTemplate courseHomeworkTemplate){
+    public Object add(CourseHomeworkTemplate courseHomeworkTemplate){
         courseHomeworkTemplate.setDelFlag(YesOrNoEnum.NO);
         courseHomeworkTemplateService.insert(courseHomeworkTemplate);
         return succeed();
     }
 
     @ApiOperation(value = "删除作业模板")
-    @DeleteMapping("/del/{id}")
+    @PostMapping("/del/{id}")
     public Object del(@ApiParam(value = "科目编号", required = true) @PathVariable("id") Integer id){
         courseHomeworkTemplateService.delete(id);
         return succeed();
     }
 
     @ApiOperation(value = "修改作业模板")
-    @PutMapping("/update")
-    public Object update(@RequestBody CourseHomeworkTemplate courseHomeworkTemplate){
+    @PostMapping("/update")
+    public Object update(CourseHomeworkTemplate courseHomeworkTemplate){
         courseHomeworkTemplateService.update(courseHomeworkTemplate);
         return succeed();
     }

+ 32 - 6
mec-web/src/main/java/com/ym/mec/web/controller/education/EmployeeController.java

@@ -1,16 +1,15 @@
 package com.ym.mec.web.controller.education;
 
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.Teacher;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
 import java.io.IOException;
+import java.util.Date;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
@@ -31,7 +30,7 @@ public class EmployeeController extends BaseController {
 
     @ApiOperation(value = "根据部门获取下面的员工")
     @GetMapping("/queryEmployByOrganId")
-    public Object queryEmployByOrganId(@RequestBody EmployeeQueryInfo queryInfo) throws IOException {
+    public Object queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws IOException {
         return employeeService.queryEmployByOrganId(queryInfo);
     }
 
@@ -41,4 +40,31 @@ public class EmployeeController extends BaseController {
         employeeService.employeeOperate(employeeId,operate);
         return succeed();
     }
+
+    @ApiOperation(value = "新增员工")
+    @PostMapping("/add")
+    public Object add(Employee employee) {
+        try {
+            employeeService.add(employee);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return failed(e.getMessage());
+        }
+        return succeed();
+    }
+
+    @ApiOperation(value = "修改员工")
+    @PostMapping("/update")
+    public Object update(Employee employee) {
+        employee.setUpdateTime(new Date());
+        employeeService.updateEmployee(employee);
+        return succeed();
+    }
+
+    @ApiOperation(value = "删除员工")
+    @PostMapping("/delete/{userId}")
+    public Object update(@PathVariable("userId") Long userId) {
+        employeeService.deleteEmployee(userId);
+        return succeed();
+    }
 }

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/student/StudentCourseHomeworkController.java

@@ -56,7 +56,7 @@ public class StudentCourseHomeworkController extends BaseController {
     }
 
     @ApiOperation(value = "分页查询作业列表")
-    @GetMapping(value = "/queryPage",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    @GetMapping(value = "/queryPage")
     public Object queryPage(@RequestBody(required = false) CourseHomeworkQueryInfo queryInfo){
         if(queryInfo == null){
             queryInfo = new CourseHomeworkQueryInfo();

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

@@ -1,13 +1,11 @@
 package com.ym.mec.web.controller.system;
 
+import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
 import com.ym.mec.biz.service.VipGroupService;
@@ -35,4 +33,16 @@ public class VipGroupManageController extends BaseController {
             return failed(s);
         }
     }
+
+    @ApiOperation("vip课详情")
+    @GetMapping("/getVipGroupDetail/{vipGroupId}")
+    public Object getVipGroupDetail(@PathVariable("vipGroupId") Long vipGroupId){
+        return succeed(vipGroupService.getVipGroupDetail(vipGroupId));
+    }
+
+    @ApiOperation("获取vip课考勤记录")
+    @PostMapping("/getVipGroupAttendances")
+    public Object getVipGroupAttendances(@RequestBody VipGroupAttendanceQueryInfo queryInfo){
+        return succeed(vipGroupService.findVipGroupAttendances(queryInfo));
+    }
 }

+ 5 - 1
mec-web/src/main/resources/application.yml

@@ -72,4 +72,8 @@ management:
         include: "*"
   endpoint:
     health:
-      show-details: ALWAYS
+      show-details: ALWAYS
+  
+feign:
+  hystrix:
+    enabled: true

+ 28 - 0
mec-web/src/test/java/com/ym/Test.java

@@ -0,0 +1,28 @@
+package com.ym;
+
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import org.springframework.beans.BeanUtils;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/24
+ */
+public class Test {
+
+    @org.junit.Test
+    public void test1(){
+        ClassDateAdjustDto temp=new ClassDateAdjustDto();
+        temp.setClassDate(new Date());
+        temp.setWeekNum(1);
+        temp.setId(1L);
+        CourseSchedule courseSchedule=new CourseSchedule();
+//        courseSchedule=temp;
+        BeanUtils.copyProperties(temp,courseSchedule);
+        courseSchedule.setId(2L);
+        System.out.println(courseSchedule.getId());
+    }
+
+}