Kaynağa Gözat

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

# Conflicts:
#	mec-education/src/main/java/com/ym/mec/education/utils/DateUtil.java
chengpeng 5 yıl önce
ebeveyn
işleme
b2004963dc
100 değiştirilmiş dosya ile 1486 ekleme ve 293 silme
  1. 0 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java
  2. 9 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  3. 27 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  4. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DemoGroupCoursesPlanDao.java
  5. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DemoGroupDao.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GoodsDao.java
  7. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupBuildLogDao.java
  8. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserBankCardDao.java
  9. 15 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java
  10. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentApplyDetailDto.java
  12. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroup.java
  13. 35 11
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/DemoGroupCoursesPlan.java
  14. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  15. 14 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupBuildLog.java
  16. 138 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseScheduleRecordDto.java
  17. 7 7
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherLeaveRecord.java
  18. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupCategory.java
  19. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupDefaultClassesCycle.java
  20. 14 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupDefaultClassesUnitPrice.java
  21. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ClassGroupTypeEnum.java
  22. 80 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentCourseScheduleRecordQueryInfo.java
  23. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentPayLogQueryInfo.java
  24. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentRegistrationQueryInfo.java
  25. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  26. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  27. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/GoodsService.java
  28. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupBuildLogService.java
  29. 1 8
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  30. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysUserBankCardService.java
  31. 35 15
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  32. 44 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  33. 18 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java
  34. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java
  35. 7 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupBuildLogServiceImpl.java
  36. 17 16
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  37. 0 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentWithdrawServiceImpl.java
  38. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserBankCardServiceImpl.java
  39. 32 5
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  40. 84 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  41. 29 20
      mec-biz/src/main/resources/config/mybatis/DemoGroupCoursesPlanMapper.xml
  42. 16 2
      mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml
  43. 3 2
      mec-biz/src/main/resources/config/mybatis/GoodsMapper.xml
  44. 56 59
      mec-biz/src/main/resources/config/mybatis/MusicGroupBuildLogMapper.xml
  45. 6 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  46. 11 7
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  47. 3 0
      mec-biz/src/main/resources/config/mybatis/SysUserBankCardMapper.xml
  48. 2 3
      mec-biz/src/main/resources/config/mybatis/SysUserCashAccountDetailMapper.xml
  49. 5 5
      mec-biz/src/main/resources/config/mybatis/TeacherLeaveRecordMapper.xml
  50. 6 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupMember.java
  51. 14 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupModel.java
  52. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/validcode/impl/SmsCodeServiceImpl.java
  53. 33 0
      mec-education/src/main/java/com/ym/mec/education/controller/TeacherAttendanceController.java
  54. 33 0
      mec-education/src/main/java/com/ym/mec/education/controller/TeacherLeaveRecordController.java
  55. 81 15
      mec-education/src/main/java/com/ym/mec/education/entity/CourseSchedule.java
  56. 3 3
      mec-education/src/main/java/com/ym/mec/education/entity/TeacherAttendance.java
  57. 88 19
      mec-education/src/main/java/com/ym/mec/education/entity/TeacherLeaveRecord.java
  58. 49 0
      mec-education/src/main/java/com/ym/mec/education/enums/SignStatusEnum.java
  59. 1 1
      mec-education/src/main/java/com/ym/mec/education/mapper/ClassGroupTeacherSalaryMapper.java
  60. 1 1
      mec-education/src/main/java/com/ym/mec/education/mapper/LeaveCategoryMapper.java
  61. 5 1
      mec-education/src/main/java/com/ym/mec/education/mapper/TeacherAttendanceMapper.java
  62. 1 1
      mec-education/src/main/java/com/ym/mec/education/mapper/TeacherLeaveRecordMapper.java
  63. 0 23
      mec-education/src/main/java/com/ym/mec/education/mapper/xml/TeacherAttendanceMapper.xml
  64. 27 0
      mec-education/src/main/java/com/ym/mec/education/req/TeacherLeaveRecordReq.java
  65. 45 0
      mec-education/src/main/java/com/ym/mec/education/resp/TeacherAttendanceResp.java
  66. 45 0
      mec-education/src/main/java/com/ym/mec/education/resp/TeacherLeaveRecordResp.java
  67. 1 1
      mec-education/src/main/java/com/ym/mec/education/service/IClassGroupTeacherSalaryService.java
  68. 1 1
      mec-education/src/main/java/com/ym/mec/education/service/ILeaveCategoryService.java
  69. 4 1
      mec-education/src/main/java/com/ym/mec/education/service/ITeacherAttendanceService.java
  70. 4 1
      mec-education/src/main/java/com/ym/mec/education/service/ITeacherLeaveRecordService.java
  71. 4 2
      mec-education/src/main/java/com/ym/mec/education/service/impl/ClassGroupStudentMapperServiceImpl.java
  72. 1 1
      mec-education/src/main/java/com/ym/mec/education/service/impl/ClassGroupTeacherSalaryServiceImpl.java
  73. 1 1
      mec-education/src/main/java/com/ym/mec/education/service/impl/LeaveCategoryServiceImpl.java
  74. 74 1
      mec-education/src/main/java/com/ym/mec/education/service/impl/TeacherAttendanceServiceImpl.java
  75. 77 1
      mec-education/src/main/java/com/ym/mec/education/service/impl/TeacherLeaveRecordServiceImpl.java
  76. 25 0
      mec-education/src/main/java/com/ym/mec/education/utils/DateUtil.java
  77. 1 1
      mec-education/src/main/resources/application.yml
  78. 0 0
      mec-education/src/main/resources/mapper/ChargeTypeMapper.xml
  79. 0 0
      mec-education/src/main/resources/mapper/ChargeTypeSubjectMapperMapper.xml
  80. 0 0
      mec-education/src/main/resources/mapper/ClassGroupMapper.xml
  81. 0 0
      mec-education/src/main/resources/mapper/ClassGroupRelationMapper.xml
  82. 0 0
      mec-education/src/main/resources/mapper/ClassGroupStudentMapperMapper.xml
  83. 0 0
      mec-education/src/main/resources/mapper/ClassGroupTeacherMapperMapper.xml
  84. 0 0
      mec-education/src/main/resources/mapper/ClassGroupTeacherSalaryMapper.xml
  85. 0 0
      mec-education/src/main/resources/mapper/CooperationOrganMapper.xml
  86. 0 0
      mec-education/src/main/resources/mapper/CourseHomeworkMapper.xml
  87. 0 0
      mec-education/src/main/resources/mapper/CourseHomeworkTemplateMapper.xml
  88. 5 1
      mec-education/src/main/resources/mapper/CourseScheduleMapper.xml
  89. 0 0
      mec-education/src/main/resources/mapper/CourseScheduleTeacherSalaryMapper.xml
  90. 0 0
      mec-education/src/main/resources/mapper/DemoGroupClassGroupMapperMapper.xml
  91. 0 0
      mec-education/src/main/resources/mapper/DemoGroupCoursesPlanMapper.xml
  92. 0 0
      mec-education/src/main/resources/mapper/DemoGroupMapper.xml
  93. 0 0
      mec-education/src/main/resources/mapper/EmployeeMapper.xml
  94. 0 0
      mec-education/src/main/resources/mapper/GoodsCategoryMapper.xml
  95. 0 0
      mec-education/src/main/resources/mapper/GoodsMapper.xml
  96. 0 0
      mec-education/src/main/resources/mapper/GoodsOrderItemMapper.xml
  97. 0 0
      mec-education/src/main/resources/mapper/GoodsOrderMapper.xml
  98. 0 0
      mec-education/src/main/resources/mapper/GoodsOrderPaymentMapper.xml
  99. 0 0
      mec-education/src/main/resources/mapper/HotWordsLabelMapper.xml
  100. 0 0
      mec-education/src/main/resources/mapper/LeaveCategoryMapper.xml

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

@@ -69,7 +69,6 @@ public class UserController extends BaseController {
 	@ApiOperation(value = "新增用户")
 	@PostMapping(value = "/add", consumes = MediaType.APPLICATION_JSON_VALUE)
 	public Object add(@RequestBody SysUser sysUser) {
-//		sysUser.setPassword(new BCryptPasswordEncoder().encode(sysUser.getPassword()));
 		return succeed(sysUserService.add(sysUser));
 	}
 

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

@@ -94,10 +94,10 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
 
     /**
      * 获取学生所购买课程列表
-     * @param userId
+     * @param params
      * @return
      */
-    List<CourseListDto> queryCoursePage(Integer userId);
+    List<CourseListDto> queryCoursePage(Map<String, Object> params);
 
     /**
      * 获取学员所在群组信息
@@ -134,4 +134,11 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @return
      */
     List<StudentPayInfoDto> queryStudentPayLog(Map<String, Object> params);
+
+    /**
+     * COUNT学员购买列表
+     * @param params
+     * @return
+     */
+    int countCoursePage(Map<String, Object> params);
 }

+ 27 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -3,12 +3,13 @@ package com.ym.mec.biz.dal.dao;
 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.entity.StudentCourseScheduleRecordDto;
 import com.ym.mec.common.dal.BaseDAO;
-
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
@@ -73,7 +74,8 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * 获取学生有课日期
      */
     List<Date> getStudentCourseScheduleDate(@Param("studentId") Long studentId,
-                                            @Param("month") Date month);
+                                            @Param("month") Date month,
+                                            @Param("isAttend") Integer isAttend);
 
     /**
      * @Author: Joburgess
@@ -130,9 +132,31 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * 获取班级的课程计划
-     *
      * @param classGroupList
      * @return
      */
     List<CourseSchedule> findClassGroupCourseSchedules(@Param("classGroupList") List classGroupList);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/30
+     * 获取学生上课记录
+     */
+    List<StudentCourseScheduleRecordDto> findStudentCourseScheduleRecords(Map<String,Object> params);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/30
+     * 统计学生上课记录
+     */
+    int countStudentCourseScheduleRecords(Map<String,Object> params);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/30
+     * 获取学生未上课记录
+     */
+    List<StudentCourseScheduleRecordDto> findStudentCourseScheduleNotStartRecords(@Param("userId") Long userId,
+                                                                                  @Param("date") Date date);
+
 }

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

@@ -15,6 +15,7 @@ public interface DemoGroupCoursesPlanDao extends BaseDAO<Long, DemoGroupCoursesP
      * 根据上课时间批量记录临时上课计划
      */
     int batchInsertByDates(@Param("dates") List<Date> dates,
-                           @Param("demoGroupId") Long demoGroupId);
+                           @Param("demoGroupId") Long demoGroupId,
+                           @Param("classMinutes") Integer classMinutes);
 	
 }

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

@@ -33,13 +33,22 @@ public interface DemoGroupDao extends BaseDAO<Long, DemoGroup> {
      * @Date: 2019/9/25
      * 根据试听课信息构造课程计划
      */
-    List<CourseSchedule> createCourseScheduleByDemoGroup(@Param("demoGroup") DemoGroup demoGroup,
+    List<CourseSchedule> createCourseSchedulesByDemoGroup(@Param("demoGroup") DemoGroup demoGroup,
                                                          @Param("startTime") Date startTime,
                                                          @Param("classGroupId") Long classGroupId);
 
     /**
      * @Author: Joburgess
      * @Date: 2019/9/25
+     * 根据试听课信息构造课程计划
+     */
+    CourseSchedule createCourseScheduleByDemoGroupPlan(@Param("demoGroup") DemoGroup demoGroup,
+                                                         @Param("coursePlanId") Long coursePlanId,
+                                                         @Param("classGroupId") Long classGroupId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
      * 统计乐团已报名人数
      */
     Integer countDemoGroupStudents(Long demoGroupId);

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

@@ -15,7 +15,7 @@ public interface GoodsDao extends BaseDAO<Integer, Goods> {
      * @param subjectId
      * @return
      */
-    List<Goods> findGoodsBySubId(@Param("subjectId") Integer subjectId, @Param("goodsCategoryId") Integer goodsCategoryId);
+    List<Goods> findGoodsBySubId(@Param("subjectId") Integer subjectId, @Param("type") String type);
 
     /**
      * 根据商品分类查找商品数量

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

@@ -3,7 +3,14 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
 import com.ym.mec.common.dal.BaseDAO;
 
+import java.util.List;
+
 public interface MusicGroupBuildLogDao extends BaseDAO<Integer, MusicGroupBuildLog> {
 
-	
+    /**
+     * 获取所有日志记录
+     * @param musicGroupId
+     * @return
+     */
+    List<MusicGroupBuildLog> findById(String musicGroupId);
 }

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

@@ -18,4 +18,11 @@ public interface SysUserBankCardDao extends BaseDAO<Long, SysUserBankCard> {
      * @return
      */
     List<SysUserBankCard> findByUser(@Param("userId") Integer userId);
+
+    /**
+     * 删除银行卡
+     * @param id
+     * @param userId
+     */
+    void del(@Param("id") Long id, @Param("userId")Integer userId);
 }

+ 15 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java

@@ -1,17 +1,20 @@
 package com.ym.mec.biz.dal.dto;
 
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;
 
 public class CourseListDto {
 
+    @ApiModelProperty(value = "班级类型", required = true)
+    private ClassGroupTypeEnum type;
+
     @ApiModelProperty(value = "乐团、vip课编号",required = true)
     private String musicGroupId;
 
     @ApiModelProperty(value = "学生姓名",required = true)
-    private List<String> studentNames;
+    private String studentNames;
 
     @ApiModelProperty(value = "乐团、vip课名称",required = true)
     private String musicGroupName;
@@ -37,6 +40,14 @@ public class CourseListDto {
     @ApiModelProperty(value = "0待续费,1已续费",required = true)
     private Integer renewStatus = 0;
 
+    public ClassGroupTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(ClassGroupTypeEnum type) {
+        this.type = type;
+    }
+
     public Integer getRenewStatus() {
         return renewStatus;
     }
@@ -61,11 +72,11 @@ public class CourseListDto {
         this.musicGroupId = musicGroupId;
     }
 
-    public List<String> getStudentNames() {
+    public String getStudentNames() {
         return studentNames;
     }
 
-    public void setStudentNames(List<String> studentNames) {
+    public void setStudentNames(String studentNames) {
         this.studentNames = studentNames;
     }
 

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java

@@ -1,11 +1,12 @@
 package com.ym.mec.biz.dal.dto;
 
-import java.util.Arrays;
+import java.math.BigDecimal;
 
 /**
  * 学团注册支付
  */
 public class RegisterPayDto {
+    private BigDecimal amount;
     private Integer registerId;
     private String goodsGroupIds;
     private String goodsIds;
@@ -33,4 +34,12 @@ public class RegisterPayDto {
     public void setGoodsIds(String goodsIds) {
         this.goodsIds = goodsIds;
     }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentApplyDetailDto.java

@@ -6,7 +6,7 @@ import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.common.enums.UserGenderEnum;
 import com.ym.mec.common.page.QueryInfo;
 
-public class StudentApplyDetailDto extends QueryInfo {
+public class StudentApplyDetailDto{
 
     @ApiModelProperty(value = "学生姓名",required = false)
     private String studentName;

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

@@ -21,6 +21,10 @@ public class ClassGroup {
 	private Integer musicGroupId;
 
 	/**  */
+	@ApiModelProperty(value = "上课模式", required = true)
+	private String teachMode;
+
+	/**  */
 	@ApiModelProperty(value = "科目编号(多个,号分割)", required = true)
 	private String subjectIdList;
 
@@ -66,6 +70,14 @@ public class ClassGroup {
 	@ApiModelProperty(value = "当前课次",required = false)
 	private Integer currentClassTimes;
 
+	public String getTeachMode() {
+		return teachMode;
+	}
+
+	public void setTeachMode(String teachMode) {
+		this.teachMode = teachMode;
+	}
+
 	public Integer getCurrentClassTimes() {
 		return currentClassTimes;
 	}

+ 35 - 11
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/DemoGroupCoursesPlan.java

@@ -4,6 +4,8 @@ import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.Date;
+
 /**
  * 对应数据库表(demo_group_courses_plan):
  */
@@ -14,9 +16,15 @@ public class DemoGroupCoursesPlan {
 	
 	/**  */
 	private Long demoGroupId;
-	
-	/**  */
-	private java.util.Date coursesStartTime;
+
+	@ApiModelProperty(value = "上课日期")
+	private Date courseDate;
+
+	@ApiModelProperty(value = "上课时间")
+	private Date startTime;
+
+	@ApiModelProperty(value = "结束时间")
+	private Date endTime;
 	
 	/**  */
 	private java.util.Date createTime;
@@ -24,6 +32,30 @@ public class DemoGroupCoursesPlan {
 	@ApiModelProperty(value = "预约状态",required = false)
 	private YesOrNoEnum status;
 
+	public Date getCourseDate() {
+		return courseDate;
+	}
+
+	public void setCourseDate(Date courseDate) {
+		this.courseDate = courseDate;
+	}
+
+	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 YesOrNoEnum getStatus() {
 		return status;
 	}
@@ -48,14 +80,6 @@ public class DemoGroupCoursesPlan {
 		return this.demoGroupId;
 	}
 			
-	public void setCoursesStartTime(java.util.Date coursesStartTime){
-		this.coursesStartTime = coursesStartTime;
-	}
-	
-	public java.util.Date getCoursesStartTime(){
-		return this.coursesStartTime;
-	}
-			
 	public void setCreateTime(java.util.Date createTime){
 		this.createTime = createTime;
 	}

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

@@ -89,6 +89,9 @@ public class MusicGroup {
 
 	@ApiModelProperty(value = "乐团图片",required = false)
 	private String img;
+	
+	@ApiModelProperty(value = "教学主任",required = false)
+	private String directorUserId;
 
 	public String getImg() {
 		return img;
@@ -266,6 +269,14 @@ public class MusicGroup {
 		this.isExtraClass = isExtraClass;
 	}
 
+	public String getDirectorUserId() {
+		return directorUserId;
+	}
+
+	public void setDirectorUserId(String directorUserId) {
+		this.directorUserId = directorUserId;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

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

@@ -11,7 +11,7 @@ public class MusicGroupBuildLog {
 	private Integer id;
 	
 	/**  */
-	private Integer musicGroupId;
+	private String musicGroupId;
 	
 	/** 事件 */
 	private String event;
@@ -24,7 +24,17 @@ public class MusicGroupBuildLog {
 	
 	/**  */
 	private java.util.Date createTime;
-	
+
+	public MusicGroupBuildLog(String musicGroupId, String event, Integer operator, String memo) {
+		this.musicGroupId = musicGroupId;
+		this.event = event;
+		this.operator = operator;
+		this.memo = memo;
+	}
+
+	public MusicGroupBuildLog() {
+	}
+
 	public void setId(Integer id){
 		this.id = id;
 	}
@@ -33,11 +43,11 @@ public class MusicGroupBuildLog {
 		return this.id;
 	}
 			
-	public void setMusicGroupId(Integer musicGroupId){
+	public void setMusicGroupId(String musicGroupId){
 		this.musicGroupId = musicGroupId;
 	}
 	
-	public Integer getMusicGroupId(){
+	public String getMusicGroupId(){
 		return this.musicGroupId;
 	}
 			

+ 138 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseScheduleRecordDto.java

@@ -0,0 +1,138 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/30
+ */
+public class StudentCourseScheduleRecordDto {
+
+
+    @ApiModelProperty(value = "记录编号",required = false)
+    private Long id;
+
+    @ApiModelProperty(value = "课程ID")
+    private Long courseScheduleId;
+
+    @ApiModelProperty(value = "课程名称",required = false)
+    private String courseName;
+
+    /** 上课日期 */
+    @ApiModelProperty(value = "上课日期", required = false)
+    private java.util.Date classDate;
+
+    /** 上课时间 */
+    @ApiModelProperty(value = "上课时间", required = false)
+    private java.util.Date startClassTime;
+
+    /** 结束时间 */
+    @ApiModelProperty(value = "结束时间", required = false)
+    private java.util.Date endClassTime;
+
+    @ApiModelProperty(value = "课程类型",required = false)
+    private CourseSchedule.CourseScheduleType type;
+
+    @ApiModelProperty(value = "状态(正常、旷课、请假、休学)",required = false)
+    private StudentAttendanceStatusEnum status;
+
+    @ApiModelProperty(value = "教师ID")
+    private Long teacherId;
+
+    @ApiModelProperty(value = "教师名称",required = false)
+    private String teacherName;
+
+    @ApiModelProperty(value = "剩余课次",required = false)
+    private Integer restOfClass;
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Long getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    public void setCourseScheduleId(Long courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public Date getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(Date classDate) {
+        this.classDate = classDate;
+    }
+
+    public Date getStartClassTime() {
+        return startClassTime;
+    }
+
+    public void setStartClassTime(Date startClassTime) {
+        this.startClassTime = startClassTime;
+    }
+
+    public Date getEndClassTime() {
+        return endClassTime;
+    }
+
+    public void setEndClassTime(Date endClassTime) {
+        this.endClassTime = endClassTime;
+    }
+
+    public CourseSchedule.CourseScheduleType getType() {
+        return type;
+    }
+
+    public void setType(CourseSchedule.CourseScheduleType type) {
+        this.type = type;
+    }
+
+    public StudentAttendanceStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(StudentAttendanceStatusEnum status) {
+        this.status = status;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public Integer getRestOfClass() {
+        return restOfClass;
+    }
+
+    public void setRestOfClass(Integer restOfClass) {
+        this.restOfClass = restOfClass;
+    }
+}

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

@@ -19,7 +19,7 @@ public class TeacherLeaveRecord {
 	private double days;
 	
 	/** 请假类型 */
-	private String type;
+	private Integer leaveCategoryId;
 	
 	/** 请假状态(审批中、拒绝、通过) */
 	private AuditStatusEnum status;
@@ -72,14 +72,14 @@ public class TeacherLeaveRecord {
 		return this.days;
 	}
 			
-	public void setType(String type){
-		this.type = type;
+	public Integer getLeaveCategoryId() {
+		return leaveCategoryId;
 	}
-	
-	public String getType(){
-		return this.type;
+
+	public void setLeaveCategoryId(Integer leaveCategoryId) {
+		this.leaveCategoryId = leaveCategoryId;
 	}
-			
+
 	public void setStatus(AuditStatusEnum status){
 		this.status = status;
 	}

+ 5 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupCategory.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
+import io.swagger.annotations.ApiModelProperty;
+
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -10,7 +12,7 @@ public class VipGroupCategory {
 	/**  */
 	private Integer id;
 	
-	/** 名称 */
+	@ApiModelProperty(value = "名称",required = false)
 	private String name;
 	
 	/**  */
@@ -22,10 +24,10 @@ public class VipGroupCategory {
 	/**  */
 	private java.util.Date updateTime;
 	
-	/** 单节课时 */
+	@ApiModelProperty(value = "单节课时",required = false)
 	private Integer singleClassMinutes;
 	
-	/** 学生数 */
+	@ApiModelProperty(value = "学生数",required = false)
 	private Integer studentNum;
 	
 	public void setId(Integer id){

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupDefaultClassesCycle.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
+import io.swagger.annotations.ApiModelProperty;
+
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -11,12 +13,15 @@ public class VipGroupDefaultClassesCycle {
 	private Integer id;
 	
 	/** 最小课次 */
+	@ApiModelProperty(value = "最小课次",required = false)
 	private Integer minClassTimes;
 	
 	/** 最大课次 */
+	@ApiModelProperty(value = "最大课次",required = false)
 	private Integer maxClassTimes;
 	
 	/** 最大排课范围(月份) */
+	@ApiModelProperty(value = "最大排课范围(月份)",required = false)
 	private Integer month;
 	
 	/**  */

+ 14 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupDefaultClassesUnitPrice.java

@@ -1,5 +1,9 @@
 package com.ym.mec.biz.dal.entity;
 
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -10,17 +14,17 @@ public class VipGroupDefaultClassesUnitPrice {
 	/**  */
 	private Integer id;
 	
-	/**  */
+	@ApiModelProperty(value = "所属分部",required = false)
 	private Integer organId;
 	
-	/**  */
+	@ApiModelProperty(value = "类别",required = false)
 	private Integer vipGroupCategoryId;
 	
-	/**  */
-	private long onlineClassesUnitPrice;
+	@ApiModelProperty(value = "线上课单价",required = false)
+	private BigDecimal onlineClassesUnitPrice;
 	
-	/**  */
-	private long offlineClassesUnitPrice;
+	@ApiModelProperty(value = "线下课单价",required = false)
+	private BigDecimal offlineClassesUnitPrice;
 	
 	/**  */
 	private java.util.Date createTime;
@@ -52,19 +56,19 @@ public class VipGroupDefaultClassesUnitPrice {
 		return this.vipGroupCategoryId;
 	}
 			
-	public void setOnlineClassesUnitPrice(long onlineClassesUnitPrice){
+	public void setOnlineClassesUnitPrice(BigDecimal onlineClassesUnitPrice){
 		this.onlineClassesUnitPrice = onlineClassesUnitPrice;
 	}
 	
-	public long getOnlineClassesUnitPrice(){
+	public BigDecimal getOnlineClassesUnitPrice(){
 		return this.onlineClassesUnitPrice;
 	}
 			
-	public void setOfflineClassesUnitPrice(long offlineClassesUnitPrice){
+	public void setOfflineClassesUnitPrice(BigDecimal offlineClassesUnitPrice){
 		this.offlineClassesUnitPrice = offlineClassesUnitPrice;
 	}
 	
-	public long getOfflineClassesUnitPrice(){
+	public BigDecimal getOfflineClassesUnitPrice(){
 		return this.offlineClassesUnitPrice;
 	}
 			

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

@@ -6,7 +6,11 @@ import com.ym.mec.common.enums.BaseEnum;
  * 班级类型
  */
 public enum ClassGroupTypeEnum implements BaseEnum<String, ClassGroupTypeEnum> {
-	NORMAL("NORMAL", "普通班级"), MIX("MIX", "合奏班级"), HIGH("HIGH", "提高班"), VIP("VIP", "vip课"), DEMO("demo", "试听课");
+	NORMAL("NORMAL", "普通班级"),
+	MIX("MIX", "合奏班级"),
+	HIGH("HIGH", "提高班"),
+	VIP("VIP", "vip课"),
+	DEMO("demo", "试听课");
 
 	private String code;
 

+ 80 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentCourseScheduleRecordQueryInfo.java

@@ -0,0 +1,80 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/30
+ */
+public class StudentCourseScheduleRecordQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "上课方式")
+    private String teachMode;
+
+    @ApiModelProperty(value = "课程类型")
+    private String type;
+
+    @ApiModelProperty(value = "考勤状态")
+    private String status;
+
+    @ApiModelProperty(value = "用户ID")
+    private Long userId;
+
+    @ApiModelProperty(value = "上课日期")
+    private Date date;
+
+    @ApiModelProperty(value = "是否是未上课时")
+    private YesOrNoEnum isAttend;
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public YesOrNoEnum getIsAttend() {
+        return isAttend;
+    }
+
+    public void setIsAttend(YesOrNoEnum isAttend) {
+        this.isAttend = isAttend;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getTeachMode() {
+        return teachMode;
+    }
+
+    public void setTeachMode(String teachMode) {
+        this.teachMode = teachMode;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentPayLogQueryInfo.java

@@ -11,6 +11,17 @@ public class StudentPayLogQueryInfo extends QueryInfo {
 
     private Integer userId;
 
+    @ApiModelProperty(value = "当前年月(2019-08)",required = true)
+    private String date;
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
     public Integer getUserId() {
         return userId;
     }

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

@@ -19,6 +19,28 @@ public class StudentRegistrationQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "实际专业编号",required = false)
     private Integer actualSubjectId;
 
+    @ApiModelProperty(value = "学员缴费状态",required = false)
+    private YesOrNoEnum paymentStatus;
+
+    @ApiModelProperty(value = "用户名或手机号",required = false)
+    private String name;
+
+    public YesOrNoEnum getPaymentStatus() {
+        return paymentStatus;
+    }
+
+    public void setPaymentStatus(YesOrNoEnum paymentStatus) {
+        this.paymentStatus = paymentStatus;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
     public Integer getActualSubjectId() {
         return actualSubjectId;
     }

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

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.page.VipClassQueryInfo;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
@@ -119,9 +120,10 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * 获取学生所购买课程列表
      *
      * @param userId
+     * @param queryInfo
      * @return
      */
-    List<CourseListDto> queryCoursePage(Integer userId);
+    PageInfo<CourseListDto> queryCoursePage(QueryInfo queryInfo,Integer userId);
 
     /**
      * 获取学员所在群组信息

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

@@ -4,6 +4,7 @@ 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.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.Date;
@@ -65,7 +66,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      * @Date: 2019/9/17
      * 根据学生获取乐团在该月有课的日期
      */
-    List<Date> getCourseScheduleDateByStudent(Date month);
+    List<Date> getCourseScheduleDateByStudent(Date month, Integer isAttend);
 
     /**
      * @Author: Joburgess
@@ -95,4 +96,12 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      * @return
      */
     List<CourseSchedule> findClassGroupCourseSchedules(List classGroupList);
+
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/30
+     * 获取学生上课记录
+     */
+    Object findStudentCourseScheduleRecords(StudentCourseScheduleRecordQueryInfo queryInfo);
 }

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

@@ -15,7 +15,7 @@ public interface GoodsService extends BaseService<Integer, Goods> {
      * @param subjectId
      * @return
      */
-    List<Goods> findGoodsBySubId(Integer subjectId, Integer goodsCategoryId);
+    List<Goods> findGoodsBySubId(Integer subjectId,String type);
 
     /**
      * 根据商品分类id查找商品数量

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

@@ -2,7 +2,16 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
 import com.ym.mec.common.service.BaseService;
+import org.w3c.dom.stylesheets.LinkStyle;
+
+import java.util.List;
 
 public interface MusicGroupBuildLogService extends BaseService<Integer, MusicGroupBuildLog> {
 
+    /**
+     * 根据乐团编号获取乐团流程记录
+     * @param musicGroupId
+     * @return
+     */
+    List<MusicGroupBuildLog> findById(String musicGroupId);
 }

+ 1 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java

@@ -10,19 +10,12 @@ import com.ym.mec.common.service.BaseService;
 import java.util.List;
 
 public interface MusicGroupService extends BaseService<String, MusicGroup> {
-
-    /**
-     * 建团申请,基本信息提交
-     * @param musicGroup
-     */
-    void add(MusicGroup musicGroup);
-
     /**
      * 建团申请数据提交
      * @param subFeeSettingDto
      * @Author superzou
      */
-    void createGroup(SubFeeSettingDto subFeeSettingDto);
+    void createGroup(SubFeeSettingDto subFeeSettingDto,Integer userId);
 
     /**
      * 获取学生所在乐团详情

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

@@ -20,4 +20,11 @@ public interface SysUserBankCardService extends BaseService<Long, SysUserBankCar
      * @return
      */
     List<SysUserBankCard> findByUser(Integer id);
+
+    /**
+     * 删除银行卡
+     * @param id
+     * @param userId
+     */
+    void del(Long id, Integer userId);
 }

+ 35 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -14,9 +14,11 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -331,22 +333,40 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         return classGroupAndTeachers;
     }
 
-    public List<CourseListDto> queryCoursePage(Integer userId) {
-        List<CourseListDto> courseListDtos = classGroupDao.queryCoursePage(userId);
-        courseListDtos.forEach(e->{
-            if("VIP".equals(e.getTeachMode())){
-                //获取vip课的学生名称列表
-                e.setStudentNames(classGroupDao.findVipStuNames(e.getMusicGroupId()));
-            }else {
-                //获取学员乐团课的续费状态
-                MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId,e.getMusicGroupId());
-                if(musicGroupStudentFee != null){
-                    int i = DateUtil.daysBetween(new Date(),musicGroupStudentFee.getNextPaymentDate());
-                    e.setRenewStatus(i < 8?0:1);
+    public PageInfo<CourseListDto> queryCoursePage(QueryInfo queryInfo, Integer userId) {
+        queryInfo.setSearch(userId.toString());
+        PageInfo<CourseListDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<CourseListDto> courseListDtos = null;
+        int count = classGroupDao.countCoursePage(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            courseListDtos = classGroupDao.queryCoursePage(params);
+            courseListDtos.forEach(e->{
+                if("VIP".equals(e.getTeachMode())){
+                    //获取vip课的学生名称列表
+                    List<String> vipStuNames = classGroupDao.findVipStuNames(e.getMusicGroupId());
+                    if(vipStuNames != null && vipStuNames.size() > 0){
+                        StringUtils.join(vipStuNames,",");
+                        e.setStudentNames(StringUtils.join());
+                    }
+                }else {
+                    //获取学员乐团课的续费状态
+                    MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId,e.getMusicGroupId());
+                    if(musicGroupStudentFee != null){
+                        int i = DateUtil.daysBetween(new Date(),musicGroupStudentFee.getNextPaymentDate());
+                        e.setRenewStatus(i < 8?0:1);
+                    }
                 }
-            }
-        });
-        return classGroupDao.queryCoursePage(userId);
+            });
+        }
+        if (count == 0) {
+            courseListDtos = new ArrayList<>();
+        }
+        pageInfo.setRows(courseListDtos);
+        return pageInfo;
     }
 
 

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

@@ -8,11 +8,16 @@ 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.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang.time.DateUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -69,9 +74,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
-	public List<Date> getCourseScheduleDateByStudent(Date month) {
+	public List<Date> getCourseScheduleDateByStudent(Date month, Integer isAttend) {
 		SysUser user = sysUserFeignService.queryUserInfo();
-		return courseScheduleDao.getStudentCourseScheduleDate(user.getId().longValue(),month);
+		return courseScheduleDao.getStudentCourseScheduleDate(user.getId().longValue(),month,isAttend);
 	}
 
 	@Override
@@ -172,6 +177,15 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	@Transactional(rollbackFor = Exception.class)
 	@Override
 	public void classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto) {
+
+		CourseSchedule nowCourseSchedule = courseScheduleDao.get(classDateAdjustDto.getId());
+		if(DateUtils.isSameDay(nowCourseSchedule.getClassDate(),classDateAdjustDto.getClassDate())&&
+				DateUtils.isSameDay(nowCourseSchedule.getStartClassTime(),classDateAdjustDto.getStartClassTime())&&
+				DateUtils.isSameDay(nowCourseSchedule.getEndClassTime(),classDateAdjustDto.getEndClassTime())){
+			courseScheduleDao.update(classDateAdjustDto);
+			return;
+		}
+
 		//单次调整课时
 		if(null==classDateAdjustDto.getAdjustStartTime()&&null==classDateAdjustDto.getAdjustEndTime()){
 			ArrayList<Date> dates = new ArrayList<>();
@@ -288,4 +302,32 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		courseScheduleDao.batchAddCourseSchedules(courseSchedules);
 	}
 
+	@Override
+	public Object findStudentCourseScheduleRecords(StudentCourseScheduleRecordQueryInfo queryInfo) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		queryInfo.setUserId(user.getId().longValue());
+		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+
+		if(queryInfo.getIsAttend()== YesOrNoEnum.YES){
+			pageInfo.setRows(courseScheduleDao.findStudentCourseScheduleNotStartRecords(user.getId().longValue(),
+					queryInfo.getDate()));
+			return pageInfo;
+		}
+
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List dataList = null;
+		int count = courseScheduleDao.countStudentCourseScheduleRecords(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = courseScheduleDao.findStudentCourseScheduleRecords(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
 }

+ 18 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java

@@ -45,6 +45,8 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private SubjectDao subjectDao;
 
 	@Override
 	public BaseDAO<Long, DemoGroup> getDAO() {
@@ -62,7 +64,9 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 
 		demoGroupApplyDto.setUserId(user.getId());
 		demoGroupDao.insert(demoGroupApplyDto);
-		demoGroupCoursesPlanDao.batchInsertByDates(demoGroupApplyDto.getCourseDates(),demoGroupApplyDto.getId());
+		demoGroupCoursesPlanDao.batchInsertByDates(demoGroupApplyDto.getCourseDates(),
+				demoGroupApplyDto.getId(),
+				demoGroupApplyDto.getSingleClassMinutes());
 	}
 
 	@Override
@@ -129,15 +133,22 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 
 		//创建课程
 		DemoGroupCoursesPlan demoGroupCoursesPlan=demoGroupCoursesPlanDao.get(coursePlanId);
-		List<CourseSchedule> courseScheduleByDemoGroup = demoGroupDao.createCourseScheduleByDemoGroup(
+//		List<CourseSchedule> courseScheduleByDemoGroup = demoGroupDao.createCourseSchedulesByDemoGroup(
+//				demoGroup,
+//				demoGroupCoursesPlan.getCoursesStartTime(),
+//				classGroup.getId().longValue());
+		CourseSchedule courseScheduleByDemoGroup = demoGroupDao.createCourseScheduleByDemoGroupPlan(
 				demoGroup,
-				demoGroupCoursesPlan.getCoursesStartTime(),
+				coursePlanId,
 				classGroup.getId().longValue());
-		String[] classSubjects = courseScheduleDao.findClassSubjects(Arrays.asList(new Integer[]{classGroup.getId()}));
-		StringBuilder className=new StringBuilder(classSubjects[0].split("-")[1]);
+//		String[] classSubjects = courseScheduleDao.findClassSubjects(Arrays.asList(new Integer[]{classGroup.getId()}));
+		StringBuilder className=new StringBuilder(subjectDao.get(demoGroup.getSubjectId().intValue()).getName());
 		className.append("-");
 		className.append(CourseSchedule.CourseScheduleType.DEMO.getMsg());
-		courseScheduleDao.batchAddCourseSchedules(courseScheduleByDemoGroup);
+		courseScheduleByDemoGroup.setName(className.toString());
+		ArrayList<CourseSchedule> courseSchedules = new ArrayList<>();
+		courseSchedules.add(courseScheduleByDemoGroup);
+		courseScheduleDao.batchAddCourseSchedules(courseSchedules);
 
 		//更新所属分部列表
 		List<Integer> organIds = demoGroupDao.organIdListByDemoGroupId(demoGroup.getId());
@@ -155,7 +166,7 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 	@Override
 	public PageInfo findTeacherDemoGroups(TeacherManageDemoGroupQueryInfo queryInfo) {
 		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<String, Object>();
+		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 
 		List dataList = null;

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

@@ -23,8 +23,8 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 	}
 
 	@Override
-	public List<Goods> findGoodsBySubId(Integer subjectId,Integer goodsCategoryId) {
-		return goodsDao.findGoodsBySubId(subjectId,goodsCategoryId);
+	public List<Goods> findGoodsBySubId(Integer subjectId,String type) {
+		return goodsDao.findGoodsBySubId(subjectId,type);
 	}
 
 	public int findGoodsNumByCategoryId(Integer goodsCategoryId){

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupBuildLogServiceImpl.java

@@ -9,6 +9,8 @@ import com.ym.mec.biz.service.MusicGroupBuildLogService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
+import java.util.List;
+
 @Service
 public class MusicGroupBuildLogServiceImpl extends BaseServiceImpl<Integer, MusicGroupBuildLog>  implements MusicGroupBuildLogService {
 	
@@ -19,5 +21,9 @@ public class MusicGroupBuildLogServiceImpl extends BaseServiceImpl<Integer, Musi
 	public BaseDAO<Integer, MusicGroupBuildLog> getDAO() {
 		return musicGroupBuildLogDao;
 	}
-	
+
+	@Override
+	public List<MusicGroupBuildLog> findById(String musicGroupId) {
+		return musicGroupBuildLogDao.findById(musicGroupId);
+	}
 }

+ 17 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1,6 +1,5 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
@@ -9,7 +8,10 @@ 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.entity.ImGroupMember;
+import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.im.ImFeignService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -30,6 +32,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup>
 	private MusicGroupSubjectGoodsGroupDao musicGroupSubjectGoodsGroupDao;
 	@Autowired
 	private MusicGroupSubjectPlanDao musicGroupSubjectPlanDao;
+	@Autowired
+	private ImFeignService imFeignService;
+	@Autowired
+	private MusicGroupBuildLogDao musicGroupBuildLogDao;
 
 	@Override
 	public BaseDAO<String, MusicGroup> getDAO() {
@@ -38,21 +44,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup>
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void add(MusicGroup musicGroup) {
-		musicGroupDao.insert(musicGroup);
-		String[] split = musicGroup.getPaymentMonths().split(",");
-		MusicGroupPaymentCalender mg;
-		for (String month:split) {
-			mg = new MusicGroupPaymentCalender();
-			mg.setMusicGroupId(musicGroup.getId());
-			mg.setPaymentMonth(Integer.parseInt(month));
-			musicGroupPaymentCalenderDao.insert(mg);
-		}
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void createGroup(SubFeeSettingDto subFeeSettingDto) {
+	public void createGroup(SubFeeSettingDto subFeeSettingDto,Integer userId) {
 		MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
 		List<MusicGroupPaymentEntities> musicGroupPaymentEntities = subFeeSettingDto.getMusicGroupPaymentEntities();
 		List<MusicGroupSubjectGoodsGroup> musicGroupSubjectGoodsGroups = subFeeSettingDto.getMusicGroupSubjectGoodsGroups();
@@ -88,6 +80,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup>
 				e.setMusicGroupId(musicGroupId);
 				musicGroupSubjectGoodsGroupDao.insert(e);
 			});
+			//新增聊天群
+			ImGroupModel imGroupModel = new ImGroupModel(musicGroupId, musicGroup.getName());
+			//教务老师和运营主管加入群组
+			ImGroupMember[] imGroupMembers = {new ImGroupMember(musicGroup.getTeamTeacherId().toString()),
+					new ImGroupMember(musicGroup.getEducationalTeacherId().toString())};
+			//创建群组
+			imFeignService.groupCreate(new ImGroupModel(musicGroupId,imGroupMembers,musicGroup.getName()));
+			//记录创建日志
+			musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"提交建团申请",userId,""));
 		}
 	}
 

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

@@ -67,10 +67,6 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 	@Transactional(rollbackFor = Exception.class)
 	public boolean confirmWithdraw(WithdrawDto withdrawDto) {
 		try {
-//			SysUser sysUser = sysUserFeignService.queryUserInfo();
-//			if (Objects.isNull(sysUser)) {
-//				throw new BizException("请重新登录");
-//			}
 			lock.lock();
 			SysUserCashAccount sysUserCashAccount = cashAccountService.get(withdrawDto.getUserId().intValue());
 			if (Objects.isNull(sysUserCashAccount)){

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

@@ -49,4 +49,9 @@ public class SysUserBankCardServiceImpl extends BaseServiceImpl<Long, SysUserBan
 	public List<SysUserBankCard> findByUser(Integer userId) {
 		return sysUserBankCardDao.findByUser(userId);
 	}
+
+	@Override
+	public void del(Long id, Integer userId) {
+		sysUserBankCardDao.del(id,userId);
+	}
 }

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

@@ -259,8 +259,9 @@
     <resultMap type="com.ym.mec.biz.dal.dto.CourseListDto" id="CourseListDto">
         <result column="music_group_name_" property="musicGroupName"/>
         <result column="music_group_id_" property="musicGroupId"/>
-        <result column="type_" property="teachMode"/>
+        <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="total_class_times_" property="totalClassTimes"/>
+        <result column="teach_mode_" property="teachMode"/>
         <result column="current_class_times_" property="currentClassTimes"/>
         <result column="address_" property="address"/>
         <result column="single_class_minutes_" property="singleClassMinutes"/>
@@ -268,22 +269,23 @@
     <select id="queryCoursePage" resultMap="CourseListDto">
         SELECT * FROM (
             SELECT cg.type_,s.address_,mg.name_ music_group_name_,
-            cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_ music_group_id_,cg.create_time_
+            cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_ music_group_id_,cg.create_time_,cg.teach_mode_
             FROM student_registration sr
             LEFT JOIN class_group cg ON cg.id_ = sr.class_group_id_
             LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
             LEFT JOIN school s ON mg.school_id_ = s.id_
-            WHERE sr.user_id_ = #{userId} AND cg.type_ != 'VIP'
+            WHERE sr.user_id_ = #{search} AND cg.type_ != 'VIP'
             UNION ALL
             SELECT cg.type_,ts.address_,vg.name_ music_group_name_,
-            cg.total_class_times_,cg.current_class_times_,vg.single_class_minutes_,vg.id_ music_group_id_,cg.create_time_
+            cg.total_class_times_,cg.current_class_times_,vg.single_class_minutes_,vg.id_ music_group_id_,cg.create_time_,cg.teach_mode_
             FROM class_group_student_mapper cgsm
             LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
             LEFT JOIN vip_group_class_group_mapper vgcgm ON vgcgm.class_group_id_ = cgsm.class_group_id_
             LEFT JOIN vip_group vg ON vg.id_ = vgcgm.vip_group_id_
             LEFT JOIN teacher_school ts ON vg.teacher_school_id_ = ts.id_
-            WHERE cgsm.user_id_ = #{userId} AND cg.type_ = 'VIP') a
+            WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
             ORDER BY a.create_time_ DESC
+            <include refid="global.limit"/>
     </select>
 
     <resultMap id="imGroupModel" type="com.ym.mec.common.entity.ImGroupModel">
@@ -323,6 +325,9 @@
             <if test="search != null and search != ''">
                 AND cg.name_ LIKE CONCAT('%',#{search},'%')
             </if>
+            <if test="date != null and date != ''">
+                AND spo.create_time_ LIKE CONCAT(#{date},'%')
+            </if>
             <if test="userId != null">
                 AND spo.user_id_ = #{userId}
             </if>
@@ -345,6 +350,9 @@
             <if test="search != null and search != ''">
                 AND cg.name_ LIKE CONCAT('%',#{search},'%')
             </if>
+            <if test="date != null and date != ''">
+                AND spo.create_time_ LIKE CONCAT(#{date},'%')
+            </if>
             <if test="userId != null">
                 AND spo.user_id_ = #{userId}
             </if>
@@ -354,4 +362,23 @@
         </where>
         <include refid="global.limit"/>
     </select>
+    <select id="countCoursePage" resultType="java.lang.Integer">
+        SELECT COUNT(id_) FROM (
+            SELECT cg.type_,s.address_,mg.name_ music_group_name_,
+            cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_ music_group_id_,cg.create_time_,cg.id_
+            FROM student_registration sr
+            LEFT JOIN class_group cg ON cg.id_ = sr.class_group_id_
+            LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
+            LEFT JOIN school s ON mg.school_id_ = s.id_
+            WHERE sr.user_id_ = #{search} AND cg.type_ != 'VIP'
+            UNION ALL
+            SELECT cg.type_,ts.address_,vg.name_ music_group_name_,
+            cg.total_class_times_,cg.current_class_times_,vg.single_class_minutes_,vg.id_ music_group_id_,cg.create_time_,cg.id_
+            FROM class_group_student_mapper cgsm
+            LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
+            LEFT JOIN vip_group_class_group_mapper vgcgm ON vgcgm.class_group_id_ = cgsm.class_group_id_
+            LEFT JOIN vip_group vg ON vg.id_ = vgcgm.vip_group_id_
+            LEFT JOIN teacher_school ts ON vg.teacher_school_id_ = ts.id_
+            WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
+    </select>
 </mapper>

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

@@ -33,6 +33,21 @@
         <result column="seal_class_id_" property="sealClassId"/>
     </resultMap>
 
+    <resultMap type="com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto" id="studentCourseScheduleRecord">
+        <result column="id_" property="id"/>
+        <result column="course_schedule_id_" property="courseScheduleId"/>
+        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="name_" property="courseName"/>
+        <result column="class_date_" property="classDate"/>
+        <result column="start_class_time_" property="startClassTime"/>
+        <result column="end_class_time_" property="endClassTime"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="teacher_name_" property="teacherName"/>
+        <result column="teach_mode_" property="teachMode" />
+        <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="rest_of_class_" property="restOfClass"/>
+    </resultMap>
+
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="CourseSchedule">
 		SELECT * FROM course_schedule WHERE id_ = #{id} 
@@ -340,7 +355,8 @@
             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' )
+          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>
 
@@ -379,6 +395,9 @@
             <if test="month!=null">
                 AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
             </if>
+            <if test="isAttend!=null">
+                AND cs.status_='NOT_START'
+            </if>
         GROUP BY
             cs.class_date_
     </select>
@@ -412,4 +431,68 @@
         </foreach>
         GROUP BY cg.id_
     </select>
+
+    <sql id="queryStudentCourseScheduleRecordCondition">
+        <where>
+            sa.user_id_=#{userId}
+            <if test="teachMode!=null and teachMode!=''">
+                AND cs.teach_mode_=#{teachMode}
+            </if>
+            <if test="type!=null and type!=''">
+                AND cs.type_=#{type}
+            </if>
+            <if test="status!=null and status!=''">
+                AND sa.status_=#{status}
+            </if>
+        </where>
+    </sql>
+
+    <select id="findStudentCourseScheduleRecords" resultMap="studentCourseScheduleRecord">
+        SELECT
+            sa.id_,
+            sa.status_,
+            sa.teacher_id_,
+            su.username_,
+            cs.id_ course_schedule_id_,
+            cs.name_,
+            cs.class_date_,
+            cs.start_class_time_,
+            cs.end_class_time_,
+            cs.teacher_id_,
+            cs.teach_mode_
+        FROM
+            student_attendance sa
+            LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
+            LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
+        <include refid="queryStudentCourseScheduleRecordCondition"/>
+        ORDER BY sa.id_
+        <include refid="global.limit"/>
+    </select>
+    <select id="countStudentCourseScheduleRecords" resultType="int">
+        SELECT
+        count(*)
+        FROM
+        student_attendance sa
+        LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
+        LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
+        <include refid="queryStudentCourseScheduleRecordCondition"/>
+    </select>
+    <select id="findStudentCourseScheduleNotStartRecords" resultMap="studentCourseScheduleRecord">
+        SELECT
+            cs.teacher_id_,
+            su.username_ teacher_name_,
+            cs.id_ course_schedule_id_,
+            cs.name_,
+            cs.class_date_,
+            cs.start_class_time_,
+            cs.end_class_time_,
+            cs.teach_mode_,
+	        (cg.total_class_times_-cg.current_class_times_) rest_of_class_
+        FROM
+            class_group_student_mapper cgsm
+            LEFT JOIN course_schedule cs ON cs.class_group_id_=cgsm.class_group_id_
+            LEFT JOIN sys_user su ON cs.teacher_id_ = su.id_
+            LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
+        WHERE cs.status_='NOT_START' AND cgsm.user_id_=#{userId} AND cs.class_date_=DATE_FORMAT(#{date},'%Y%m%d')
+    </select>
 </mapper>

+ 29 - 20
mec-biz/src/main/resources/config/mybatis/DemoGroupCoursesPlanMapper.xml

@@ -9,9 +9,11 @@
 	<resultMap type="com.ym.mec.biz.dal.entity.DemoGroupCoursesPlan" id="DemoGroupCoursesPlan">
 		<result column="id_" property="id" />
 		<result column="demo_group_id_" property="demoGroupId" />
-		<result column="courses_start_time_" property="coursesStartTime" />
 		<result column="create_time_" property="createTime" />
 		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result column="course_date_" property="courseDate"/>
+		<result column="start_time_" property="startTime"/>
+		<result column="end_time_" property="endTime"/>
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -31,10 +33,10 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
 		</selectKey>
 		-->
-		INSERT INTO demo_group_courses_plan (demo_group_id_,courses_start_time_,create_time_,status_)
+		INSERT INTO demo_group_courses_plan (demo_group_id_,create_time_,status_,course_date_,start_time_,end_time_)
 		VALUE
 		<foreach collection="dates" item="date" separator=",">
-			(#{demoGroupId},#{date},now(),#{status})
+			(#{demoGroupId},now(),#{status},#{date},#{date},DATE_ADD(#{date},INTERVAL #{classMinutes} MINUTE))
 		</foreach>
 	</insert>
 
@@ -45,28 +47,35 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
 		</selectKey>
 		-->
-		INSERT INTO demo_group_courses_plan (id_,demo_group_id_,courses_start_time_,create_time_,status_) VALUES(#{id},#{demoGroupId},#{coursesStartTime},now(),#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+		INSERT INTO demo_group_courses_plan (id_,demo_group_id_,course_date_,create_time_,status_,start_time_,end_time_)
+		VALUES(#{id},#{demoGroupId},#{courseDate},now(),#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{startTime},#{endTime})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.DemoGroupCoursesPlan">
 		UPDATE demo_group_courses_plan <set>
-<if test="id != null">
-id_ = #{id},
-</if>
-<if test="demoGroupId != null">
-demo_group_id_ = #{demoGroupId},
-</if>
-<if test="coursesStartTime != null">
-courses_start_time_ = #{coursesStartTime},
-</if>
-<if test="createTime != null">
-create_time_ = #{createTime},
-</if>
-<if test="status!=null">
-	status_=#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-</if>
-</set> WHERE id_ = #{id} 
+		<if test="id != null">
+		id_ = #{id},
+		</if>
+		<if test="demoGroupId != null">
+		demo_group_id_ = #{demoGroupId},
+		</if>
+		<if test="courseDate != null">
+			course_date_ = #{courseDate},
+		</if>
+		<if test="createTime != null">
+		create_time_ = #{createTime},
+		</if>
+		<if test="status!=null">
+			status_=#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+		</if>
+		<if test="startTime!=null">
+			start_time_=#{startTime},
+		</if>
+		<if test="endTime!=null">
+			end_time_=#{endTime},
+		</if>
+		</set> WHERE id_ = #{id}
 	</update>
 	
 	<!-- 根据主键删除一条记录 -->

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

@@ -109,7 +109,7 @@ create_time_ = #{createTime},
 	<select id="getOrganIdByUserId" resultType="java.lang.Integer">
 		select organ_id_ from sys_user where id_=#{userId}
 	</select>
-	<select id="createCourseScheduleByDemoGroup" parameterType="com.ym.mec.biz.dal.entity.DemoGroup" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule">
+	<select id="createCourseSchedulesByDemoGroup" parameterType="com.ym.mec.biz.dal.entity.DemoGroup" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule">
 		SELECT
 			#{classGroupId} class_group_id_,
 			'NOT_START' status_,
@@ -123,6 +123,20 @@ create_time_ = #{createTime},
 			demo_group_courses_plan dgcp
 			WHERE dgcp.demo_group_id_=#{demoGroup.id} AND dgcp.courses_start_time_ = #{startTime}
 	</select>
+	<select id="createCourseScheduleByDemoGroupPlan" parameterType="com.ym.mec.biz.dal.entity.DemoGroup" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule">
+		SELECT
+			#{classGroupId} class_group_id_,
+			'NOT_START' status_,
+			dgcp.course_date_ class_date_,
+			CONCAT(dgcp.course_date_,' ',dgcp.start_time_) start_class_time_,
+			DATE_ADD( CONCAT(dgcp.course_date_,' ',dgcp.start_time_),INTERVAL #{demoGroup.singleClassMinutes} MINUTE) end_class_time_,
+			#{demoGroup.userId} teacher_id_,
+			'ONLINE' teach_mode_,
+			'demo' type_
+		FROM
+			demo_group_courses_plan dgcp
+			WHERE dgcp.id_=#{coursePlanId}
+	</select>
 	<select id="countDemoGroupStudents" resultType="java.lang.Integer">
 		SELECT
 			count(cgsm.user_id_)
@@ -200,7 +214,7 @@ create_time_ = #{createTime},
 	<select id="findTeacherDemoGroups" resultType="com.ym.mec.biz.dal.dto.TeacherManageDemoGroupListDto">
 		SELECT
 			cs.class_date_ classDate,
-			GROUP_CONCAT(DISTINCT CONCAT(cs.start_class_time_,cs.end_class_time_)) startTimes,
+			GROUP_CONCAT(DISTINCT CONCAT(cs.start_class_time_,' ',cs.end_class_time_)) startTimes,
 			GROUP_CONCAT(s.name_) subjectNames
 		FROM
 			demo_group dg

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

@@ -135,8 +135,9 @@
 	</select>
 
     <select id="findGoodsBySubId" resultMap="Goods">
-        SELECT g.* FROM subject_goods_mapper sgm LEFT JOIN goods g ON sgm.goods_id_ = g.id_
-        WHERE sgm.subject_id_ =  #{subjectId} AND g.goods_category_id_ = #{goodsCategoryId}
+        SELECT g.* FROM subject_goods_mapper sgm
+        LEFT JOIN goods g ON sgm.goods_category_id_ = g.goods_category_id_
+        WHERE sgm.subject_id_ = #{subjectId} AND sgm.type_ = #{type}
     </select>
 
     <!-- 根据 -->

+ 56 - 59
mec-biz/src/main/resources/config/mybatis/MusicGroupBuildLogMapper.xml

@@ -5,72 +5,69 @@
 不要修改此文件。所有改动将在下次重新自动生成时丢失。
 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao">
-	
-	<resultMap type="com.ym.mec.biz.dal.entity.MusicGroupBuildLog" id="MusicGroupBuildLog">
-		<result column="id_" property="id" />
-		<result column="music_group_id_" property="musicGroupId" />
-		<result column="event_" property="event" />
-		<result column="operator_" property="operator" />
-		<result column="memo_" property="memo" />
-		<result column="create_time_" property="createTime" />
-	</resultMap>
-	
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="MusicGroupBuildLog" >
+
+    <resultMap type="com.ym.mec.biz.dal.entity.MusicGroupBuildLog" id="MusicGroupBuildLog">
+        <result column="id_" property="id"/>
+        <result column="music_group_id_" property="musicGroupId"/>
+        <result column="event_" property="event"/>
+        <result column="operator_" property="operator"/>
+        <result column="memo_" property="memo"/>
+        <result column="create_time_" property="createTime"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="MusicGroupBuildLog">
 		SELECT * FROM music_group_build_log WHERE id_ = #{id} 
 	</select>
-	
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="MusicGroupBuildLog">
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="MusicGroupBuildLog">
 		SELECT * FROM music_group_build_log ORDER BY id_
 	</select>
-	
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupBuildLog" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
-		INSERT INTO music_group_build_log (id_,music_group_id_,event_,operator_,memo_,create_time_) VALUES(#{id},#{musicGroupId},#{event},#{operator},#{memo},#{createTime})
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupBuildLog" useGeneratedKeys="true"
+            keyColumn="id" keyProperty="id">
+		INSERT INTO music_group_build_log (music_group_id_,event_,operator_,memo_,create_time_)
+		VALUES(#{musicGroupId},#{event},#{operator},#{memo},now())
 	</insert>
-	
-	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupBuildLog">
-		UPDATE music_group_build_log <set>
-<if test="operator != null">
-operator_ = #{operator},
-</if>
-<if test="event != null">
-event_ = #{event},
-</if>
-<if test="id != null">
-id_ = #{id},
-</if>
-<if test="memo != null">
-memo_ = #{memo},
-</if>
-<if test="musicGroupId != null">
-music_group_id_ = #{musicGroupId},
-</if>
-<if test="createTime != null">
-create_time_ = #{createTime},
-</if>
-</set> WHERE id_ = #{id} 
-	</update>
-	
-	<!-- 根据主键删除一条记录 -->
-	<delete id="delete" >
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupBuildLog">
+        UPDATE music_group_build_log
+        <set>
+            <if test="operator != null">
+                operator_ = #{operator},
+            </if>
+            <if test="event != null">
+                event_ = #{event},
+            </if>
+            <if test="memo != null">
+                memo_ = #{memo},
+            </if>
+            <if test="musicGroupId != null">
+                music_group_id_ = #{musicGroupId},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
 		DELETE FROM music_group_build_log WHERE id_ = #{id} 
 	</delete>
-	
-	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="MusicGroupBuildLog" parameterType="map">
-		SELECT * FROM music_group_build_log ORDER BY id_ <include refid="global.limit"/>
-	</select>
-	
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="MusicGroupBuildLog" parameterType="map">
+        SELECT * FROM music_group_build_log ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM music_group_build_log
 	</select>
+    <select id="findById" resultMap="MusicGroupBuildLog">
+		SELECT * FROM music_group_build_log WHERE music_group_id_ = #{musicGroupId}
+	</select>
 </mapper>

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

@@ -25,6 +25,7 @@
 		<result column="enlightenment_course_time_" property="enlightenmentCourseTime" />
 		<result column="parent_meeting_time_" property="parentMeetingTime" />
 		<result column="img_" property="img" />
+		<result column="director_user_id_" property="directorUserId" />
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -44,10 +45,10 @@
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO music_group
 		(id_,name_,organ_id_,school_id_,apply_expire_date_,team_teacher_id_,educational_teacher_id_,charge_type_id_,course_form_,create_time_,update_time_,status_,
-		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,cooperation_organ_id_,enlightenment_course_time_,parent_meeting_time_,img_)
+		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,cooperation_organ_id_,enlightenment_course_time_,parent_meeting_time_,img_,director_user_id_)
 		VALUES(#{id},#{name},#{organId},#{schoolId},#{applyExpireDate},#{teamTeacherId},#{educationalTeacherId},#{chargeTypeId},#{courseForm},now(),now(),
 		#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{billStartDate},#{improventClassesNum},#{enrollClasses},#{paymentExpireDate},
-		#{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime},#{img})
+		#{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime},#{img},#{directorUserId})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -111,6 +112,9 @@
 			<if test="img != null">
 				img_ = #{img},
 			</if>
+			<if test="directorUserId != null">
+				director_user_id_ = #{directorUserId},
+			</if>
 		</set>
 		WHERE id_ = #{id}
 	</update>

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

@@ -145,16 +145,19 @@
     <sql id="queryStudentDetailPageSql">
         <where>
             <if test="musicGroupId != null">
-                sr.music_group_id_ = #{musicGroupId}
+                AND sr.music_group_id_ = #{musicGroupId}
             </if>
             <if test="subjectId != null">
-                sr.subject_id_ = #{subjectId}
+                AND sr.subject_id_ = #{subjectId}
             </if>
             <if test="isAllowAdjust != null">
-                sr.is_allow_adjust_ = #{isAllowAdjust}
+                AND sr.is_allow_adjust_ = #{isAllowAdjust}
             </if>
             <if test="actualSubjectId != null">
-                sr.actual_subject_id_ = #{actualSubjectId}
+                AND sr.actual_subject_id_ = #{actualSubjectId}
+            </if>
+            <if test="name != null">
+                AND (sr.name_ LIKE CONCAT('%',#{name},'%') OR sr.parents_phone_ LIKE CONCAT('%',#{name},'%'))
             </if>
         </where>
     </sql>
@@ -169,15 +172,16 @@
         <result column="subject_name_" property="subjectName"/>
         <result column="username_" property="studentName"/>
         <result column="actual_subject_name_" property="actualSubjectName"/>
+        <result column="payment_status_" property="paymentStatus"/>
         <result column="gender_" property="gender" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
     <select id="queryStudentDetailPage" resultMap="studentApplyDetail">
-        SELECT su.username_,sr.parents_name_,sr.current_class_,sr.current_grade_,
-        su.gender_,sr.is_allow_adjust_, s.name_ subject_name_,ss.name_ actual_subject_name_,sr.parents_phone_
+        SELECT sr.name_ username_,sr.parents_name_,sr.current_class_,sr.current_grade_,
+        su.gender_,sr.is_allow_adjust_, s.name_ subject_name_,ss.name_ actual_subject_name_,sr.parents_phone_,sr.payment_status_
         FROM student_registration sr
         LEFT JOIN sys_user su ON sr.subject_id_ = su.id_
         LEFT JOIN `subject` s ON sr.subject_id_ = s.id_
-        LEFT JOIN `subject` ss ON sr.actual_subject_id_ = s.id_
+        LEFT JOIN `subject` ss ON sr.actual_subject_id_ = ss.id_
         <include refid="queryStudentDetailPageSql"/>
         <include refid="global.limit"/>
     </select>

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

@@ -25,6 +25,9 @@
         <result column="id_card_no_" property="idCardNo"/>
         <result column="real_name_" property="realName"/>
     </resultMap>
+    <delete id="del">
+        UPDATE sys_user_bank_card SET status_ = 0 WHERE id_ = #{id} AND user_id_ = #{userId}
+    </delete>
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="SysUserBankCard">

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

@@ -40,9 +40,8 @@
         </selectKey>
         -->
         INSERT INTO sys_user_cash_account_detail
-        (id_,user_id_,trans_no_,type_,trans_type_,amount_,balance_,description_,comment_,create_time_,update_time_)
-        VALUES(#{id},#{userId},#{transNo},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        ,#{transType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{amount},#{balance},#{description},#{comment},now(),now())
+        (user_id_,trans_no_,type_,amount_,balance_,description_,comment_,create_time_,update_time_)
+        VALUES(#{userId},#{transNo},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{amount},#{balance},#{description},#{comment},now(),now())
     </insert>
 
     <!-- 根据主键查询一条记录 -->

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

@@ -8,7 +8,7 @@
 		<result column="id_" property="id" />
 		<result column="user_id_" property="userId" />
 		<result column="days_" property="days" />
-		<result column="type_" property="type" />
+		<result column="leave_category_id_" property="leaveCategoryId" />
 		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler" />
 		<result column="remark_" property="remark" />
 		<result column="create_time_" property="createTime" />
@@ -38,8 +38,8 @@
 		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
 			AS ID FROM DUAL </selectKey> -->
 		INSERT INTO teacher_leave_record
-		(id_,user_id_,days_,type_,status_,remark_,create_time_,update_time_,start_time_,end_time_,courses_schedule_json_,wf_process_id_,wf_order_id_)
-		VALUES(#{id},#{userId},#{days},#{type},#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{remark},#{createTime},#{updateTime},#{startTime},#{endTime},#{coursesScheduleJson},#{wfProcessId},#{wfOrderId})
+		(id_,user_id_,days_,leave_category_id_,status_,remark_,create_time_,update_time_,start_time_,end_time_,courses_schedule_json_,wf_process_id_,wf_order_id_)
+		VALUES(#{id},#{userId},#{days},#{leaveCategoryId},#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{remark},#{createTime},#{updateTime},#{startTime},#{endTime},#{coursesScheduleJson},#{wfProcessId},#{wfOrderId})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -82,8 +82,8 @@
 			<if test="updateTime != null">
 				update_time_ = #{updateTime},
 			</if>
-			<if test="type != null">
-				type_ = #{type},
+			<if test="leaveCategoryId != null">
+				leave_category_id_ = #{leaveCategoryId},
 			</if>
 		</set>
 		WHERE id_ = #{id}

+ 6 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupMember.java

@@ -8,6 +8,12 @@ public class ImGroupMember {
     public ImGroupMember() {
     }
 
+    public ImGroupMember(String id) {
+        this.id = id;
+    }
+
+
+
     public ImGroupMember(String id, String groupId, Integer munite) {
         this.id = id;
         this.groupId = groupId;

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

@@ -1,8 +1,11 @@
 package com.ym.mec.common.entity;
 
 public class ImGroupModel {
+    //群组编号
     private String id;
+    //用户列表
     private ImGroupMember[] members;
+    //群名称
     private String name;
     private String img;
     private Integer minute;
@@ -12,6 +15,17 @@ public class ImGroupModel {
     public ImGroupModel() {
     }
 
+    public ImGroupModel(String id, String name) {
+        this.id = id;
+        this.name = name;
+    }
+
+    public ImGroupModel(String id, ImGroupMember[] members, String name) {
+        this.id = id;
+        this.members = members;
+        this.name = name;
+    }
+
     public Integer getCount() {
         return count;
     }

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/validcode/impl/SmsCodeServiceImpl.java

@@ -39,7 +39,7 @@ public class SmsCodeServiceImpl implements SmsCodeService {
 	public boolean sendValidCode(String mobile) throws Exception {
 		String code = RandomStringUtils.randomNumeric(6);
 		// 发送验证码
-		messageSenderPluginContext.send(MessageSenderPluginContext.MessageSender.YIMEI,"","",mobile,"");
+//		messageSenderPluginContext.send(MessageSenderPluginContext.MessageSender.YIMEI,"","",mobile,"");
 		redisTemplate.opsForValue().set(loginVerifyCodeKey + mobile, code, expireTime);
 		return true;
 	}

+ 33 - 0
mec-education/src/main/java/com/ym/mec/education/controller/TeacherAttendanceController.java

@@ -0,0 +1,33 @@
+package com.ym.mec.education.controller;
+
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.req.TeacherLeaveRecordReq;
+import com.ym.mec.education.service.ITeacherAttendanceService;
+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;
+
+/**
+ * @program: mec
+ * @description: 老师考勤 上课
+ * @author: xw
+ * @create: 2019-09-30 13:54
+ */
+@RestController
+@RequestMapping("api/teacherAttendance")
+@Api(tags = "老师考勤/上课")
+public class TeacherAttendanceController {
+
+    @Autowired
+    private ITeacherAttendanceService teacherAttendanceService;
+
+    @PostMapping("/list")
+    @ApiOperation("老师上课记录列表")
+    public PageResponse list(@RequestBody TeacherLeaveRecordReq teacherLeaveRecordReq) {
+        return teacherAttendanceService.getPage(teacherLeaveRecordReq);
+    }
+}

+ 33 - 0
mec-education/src/main/java/com/ym/mec/education/controller/TeacherLeaveRecordController.java

@@ -0,0 +1,33 @@
+package com.ym.mec.education.controller;
+
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.req.TeacherLeaveRecordReq;
+import com.ym.mec.education.service.ITeacherLeaveRecordService;
+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;
+
+/**
+ * @program: mec
+ * @description: 老师考勤
+ * @author: xw
+ * @create: 2019-09-29 17:10
+ */
+@RestController
+@RequestMapping("api/teacherLeaveRecord")
+@Api(tags = "老师请假记录")
+public class TeacherLeaveRecordController {
+
+    @Autowired
+    private ITeacherLeaveRecordService teacherLeaveRecordService;
+
+    @PostMapping("/list")
+    @ApiOperation("老师请假记录列表")
+    public PageResponse list(@RequestBody TeacherLeaveRecordReq teacherLeaveRecordReq) {
+        return teacherLeaveRecordService.getPage(teacherLeaveRecordReq);
+    }
+}

+ 81 - 15
mec-education/src/main/java/com/ym/mec/education/entity/CourseSchedule.java

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.ym.mec.common.enums.BaseEnum;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.sql.Time;
+import java.util.Arrays;
 import java.util.Date;
 
 /**
@@ -23,6 +25,43 @@ public class CourseSchedule extends Model<CourseSchedule> {
 
     private static final long serialVersionUID = 1L;
 
+    public enum CourseScheduleType implements BaseEnum<String, CourseScheduleType> {
+
+        SINGLE("SINGLE", "单技课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"), DEMO("demo", "试听课"), COMPREHENSIVE("comprehensive", "综合课"), PRACTICE(
+                "PRACTICE", "练习课"), ENLIGHTENMENT("ENLIGHTENMENT", "启蒙课"), TRAINING("TRAINING", "集训课");
+
+        private String code;
+
+        private String msg;
+
+        CourseScheduleType(String code, String msg) {
+            this.code = code;
+            this.msg = msg;
+        }
+
+        @Override
+        public String getCode() {
+            return code;
+        }
+
+        public String getMsg() {
+            return msg;
+        }
+
+        /**
+         * 根据枚举值获取枚举信息
+         *
+         * @param code 枚举值
+         * @return 枚举信息
+         */
+        public static String getMsgByCode(String code) {
+            return Arrays.stream(CourseScheduleType.values())
+                    .filter(StudentAttendanceStatusEnum -> StudentAttendanceStatusEnum.getCode().equals(code))
+                    .findFirst()
+                    .map(CourseScheduleType::getMsg).orElse(null);
+        }
+    }
+
     @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
     /**
@@ -79,7 +118,16 @@ public class CourseSchedule extends Model<CourseSchedule> {
      */
     @TableField("complaint_status_")
     private String complaintStatus;
-
+    /**
+     * 课程类型(单技课、小班课、合奏课、综合课、练习课、启蒙课、集训课、VIP课、试听课)
+     */
+    @TableField("type_")
+    private String type;
+    /**
+     * 课程名
+     */
+    @TableField("name_")
+    private String name;
 
     public Long getId() {
         return id;
@@ -198,6 +246,22 @@ public class CourseSchedule extends Model<CourseSchedule> {
         return this;
     }
 
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
     @Override
     protected Serializable pkVal() {
         return this.id;
@@ -206,19 +270,21 @@ public class CourseSchedule extends Model<CourseSchedule> {
     @Override
     public String toString() {
         return "CourseSchedule{" +
-        ", id=" + id +
-        ", classGroupId=" + classGroupId +
-        ", status=" + status +
-        ", subsidy=" + subsidy +
-        ", classDate=" + classDate +
-        ", startClassTime=" + startClassTime +
-        ", endClassTime=" + endClassTime +
-        ", teacherId=" + teacherId +
-        ", actualTeacherId=" + actualTeacherId +
-        ", createTime=" + createTime +
-        ", updateTime=" + updateTime +
-        ", teachMode=" + teachMode +
-        ", complaintStatus=" + complaintStatus +
-        "}";
+                "id=" + id +
+                ", classGroupId=" + classGroupId +
+                ", status='" + status + '\'' +
+                ", subsidy=" + subsidy +
+                ", classDate=" + classDate +
+                ", startClassTime=" + startClassTime +
+                ", endClassTime=" + endClassTime +
+                ", teacherId=" + teacherId +
+                ", actualTeacherId=" + actualTeacherId +
+                ", createTime=" + createTime +
+                ", updateTime=" + updateTime +
+                ", teachMode='" + teachMode + '\'' +
+                ", complaintStatus='" + complaintStatus + '\'' +
+                ", type='" + type + '\'' +
+                ", name='" + name + '\'' +
+                '}';
     }
 }

+ 3 - 3
mec-education/src/main/java/com/ym/mec/education/entity/TeacherAttendance.java

@@ -41,7 +41,7 @@ public class TeacherAttendance extends Model<TeacherAttendance> {
      * 状态(正常签到,异常签到)
      */
     @TableField("status_")
-    private String status;
+    private Integer status;
     /**
      * 备注
      */
@@ -105,11 +105,11 @@ public class TeacherAttendance extends Model<TeacherAttendance> {
         return this;
     }
 
-    public String getStatus() {
+    public Integer getStatus() {
         return status;
     }
 
-    public TeacherAttendance setStatus(String status) {
+    public TeacherAttendance setStatus(Integer status) {
         this.status = status;
         return this;
     }

+ 88 - 19
mec-education/src/main/java/com/ym/mec/education/entity/TeacherLeaveRecord.java

@@ -29,12 +29,12 @@ public class TeacherLeaveRecord extends Model<TeacherLeaveRecord> {
      * 请假天数
      */
     @TableField("days_")
-    private Integer days;
+    private Double days;
     /**
      * 请假类型
      */
-    @TableField("type_")
-    private String type;
+    @TableField("leave_category_id_")
+    private Integer leaveCategoryId;
     /**
      * 请假状态(审批中、拒绝、通过)
      */
@@ -49,7 +49,31 @@ public class TeacherLeaveRecord extends Model<TeacherLeaveRecord> {
     private Date createTime;
     @TableField("update_time_")
     private Date updateTime;
-
+    /**
+     * 请假开始时间
+     */
+    @TableField("start_time_")
+    private Date startTime;
+    /**
+     * 请假结束时间
+     */
+    @TableField("end_time_")
+    private Date endTime;
+    /**
+     * 课程调整
+     */
+    @TableField("courses_schedule_json_")
+    private String coursesScheduleJson;
+    /**
+     * 流程定义
+     */
+    @TableField("wf_process_id_")
+    private String wfProcessId;
+    /**
+     * 流程实例
+     */
+    @TableField("wf_order_id_")
+    private String wfOrderId;
 
     public Long getId() {
         return id;
@@ -69,21 +93,21 @@ public class TeacherLeaveRecord extends Model<TeacherLeaveRecord> {
         return this;
     }
 
-    public Integer getDays() {
+    public Double getDays() {
         return days;
     }
 
-    public TeacherLeaveRecord setDays(Integer days) {
+    public TeacherLeaveRecord setDays(Double days) {
         this.days = days;
         return this;
     }
 
-    public String getType() {
-        return type;
+    public Integer getLeaveCategoryId() {
+        return leaveCategoryId;
     }
 
-    public TeacherLeaveRecord setType(String type) {
-        this.type = type;
+    public TeacherLeaveRecord setLeaveCategoryId(Integer leaveCategoryId) {
+        this.leaveCategoryId = leaveCategoryId;
         return this;
     }
 
@@ -123,6 +147,46 @@ public class TeacherLeaveRecord extends Model<TeacherLeaveRecord> {
         return this;
     }
 
+    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 String getCoursesScheduleJson() {
+        return coursesScheduleJson;
+    }
+
+    public void setCoursesScheduleJson(String coursesScheduleJson) {
+        this.coursesScheduleJson = coursesScheduleJson;
+    }
+
+    public String getWfProcessId() {
+        return wfProcessId;
+    }
+
+    public void setWfProcessId(String wfProcessId) {
+        this.wfProcessId = wfProcessId;
+    }
+
+    public String getWfOrderId() {
+        return wfOrderId;
+    }
+
+    public void setWfOrderId(String wfOrderId) {
+        this.wfOrderId = wfOrderId;
+    }
+
     @Override
     protected Serializable pkVal() {
         return this.id;
@@ -131,14 +195,19 @@ public class TeacherLeaveRecord extends Model<TeacherLeaveRecord> {
     @Override
     public String toString() {
         return "TeacherLeaveRecord{" +
-        ", id=" + id +
-        ", userId=" + userId +
-        ", days=" + days +
-        ", type=" + type +
-        ", status=" + status +
-        ", remark=" + remark +
-        ", createTime=" + createTime +
-        ", updateTime=" + updateTime +
-        "}";
+                "id=" + id +
+                ", userId=" + userId +
+                ", days=" + days +
+                ", leaveCategoryId='" + leaveCategoryId + '\'' +
+                ", status='" + status + '\'' +
+                ", remark='" + remark + '\'' +
+                ", createTime=" + createTime +
+                ", updateTime=" + updateTime +
+                ", startTime=" + startTime +
+                ", endTime=" + endTime +
+                ", coursesScheduleJson='" + coursesScheduleJson + '\'' +
+                ", wfProcessId='" + wfProcessId + '\'' +
+                ", wfOrderId='" + wfOrderId + '\'' +
+                '}';
     }
 }

+ 49 - 0
mec-education/src/main/java/com/ym/mec/education/enums/SignStatusEnum.java

@@ -0,0 +1,49 @@
+package com.ym.mec.education.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+import java.util.Arrays;
+
+//状态(1正常签到,0异常签到,2正常签退)
+public enum SignStatusEnum implements BaseEnum<Integer, SignStatusEnum> {
+    SIGN(1,"正常签到"),
+    EXCEPTION(0,"异常签到"),
+    YES_QUIT(2,"正常签退");
+
+    private Integer code;
+    private String msg;
+
+    SignStatusEnum(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;
+    }
+
+    /**
+     * 根据枚举值获取枚举信息
+     *
+     * @param code 枚举值
+     * @return 枚举信息
+     */
+    public static String getMsgByCode(Integer code) {
+        return Arrays.stream(SignStatusEnum.values())
+                .filter(SignStatusEnum -> SignStatusEnum.getCode().equals(code))
+                .findFirst()
+                .map(SignStatusEnum::getMsg).orElse(null);
+    }
+}

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

@@ -1,6 +1,6 @@
 package com.ym.mec.education.mapper;
 
-import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ym.mec.education.entity.ClassGroupTeacherSalary;
 
 /**

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

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

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

@@ -1,7 +1,10 @@
 package com.ym.mec.education.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.education.entity.TeacherAttendance;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.ym.mec.education.req.TeacherLeaveRecordReq;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.mapper.BaseMapper;
  */
 public interface TeacherAttendanceMapper extends BaseMapper<TeacherAttendance> {
 
+    Page<TeacherAttendance> selectClassRecordPage(Page page, @Param("query")TeacherLeaveRecordReq teacherLeaveRecordReq);
 }

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

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

+ 0 - 23
mec-education/src/main/java/com/ym/mec/education/mapper/xml/TeacherAttendanceMapper.xml

@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ym.mec.education.mapper.TeacherAttendanceMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.ym.mec.education.entity.TeacherAttendance">
-        <id column="id_" property="id" />
-        <result column="teacher_id_" property="teacherId" />
-        <result column="music_group_id_" property="musicGroupId" />
-        <result column="class_group_id_" property="classGroupId" />
-        <result column="course_schedule_id_" property="courseScheduleId" />
-        <result column="sign_in_time_" property="signInTime" />
-        <result column="status_" property="status" />
-        <result column="remark_" property="remark" />
-        <result column="create_time_" property="createTime" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        id_, teacher_id_, music_group_id_, class_group_id_, course_schedule_id_, sign_in_time_, status_, remark_, create_time_
-    </sql>
-
-</mapper>

+ 27 - 0
mec-education/src/main/java/com/ym/mec/education/req/TeacherLeaveRecordReq.java

@@ -0,0 +1,27 @@
+package com.ym.mec.education.req;
+
+import com.ym.mec.education.base.BaseQuery;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * @program: mec
+ * @description: 老师请假记录入参
+ * @author: xw
+ * @create: 2019-09-29 17:04
+ */
+@Data
+@ApiModel(description = "老师请假记录入参")
+public class TeacherLeaveRecordReq extends BaseQuery {
+
+    @ApiModelProperty(value = "老师id", required = true)
+    private Integer teacherId;
+
+    @ApiModelProperty(value = "老师请假时间")
+    private Date leaveTime;
+
+    @ApiModelProperty(value = "课程类型(单技课、小班课、合奏课、综合课、练习课、启蒙课、集训课、VIP课、试听课)")
+    private String courseType;
+}

+ 45 - 0
mec-education/src/main/java/com/ym/mec/education/resp/TeacherAttendanceResp.java

@@ -0,0 +1,45 @@
+package com.ym.mec.education.resp;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @program: mec
+ * @description: 老师考勤出参
+ * @author: xw
+ * @create: 2019-09-30 14:06
+ */
+@Data
+@ApiModel(description = "老师考勤出参")
+@Accessors(chain = true)
+public class TeacherAttendanceResp {
+
+    @ApiModelProperty(value = "上课日期")
+    private String classDate;
+
+    @ApiModelProperty(value = "课程类别")
+    private String courseType;
+
+    @ApiModelProperty(value = "上课星期")
+    private String classWeek;
+
+    @ApiModelProperty(value = "声部名称")
+    private List<String> subjectName;
+
+    @ApiModelProperty(value = "课程进度")
+    private String courseProgress;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "老师考勤状态")
+    private String teacherAttendanceStatus;
+
+    @ApiModelProperty(value = "课酬")
+    private BigDecimal teacherSalary;
+}

+ 45 - 0
mec-education/src/main/java/com/ym/mec/education/resp/TeacherLeaveRecordResp.java

@@ -0,0 +1,45 @@
+package com.ym.mec.education.resp;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @program: mec
+ * @description: 老师请假记录出参
+ * @author: xw
+ * @create: 2019-09-29 16:38
+ */
+@Data
+@ApiModel(description = "老师请假记录出参")
+@Accessors(chain = true)
+public class TeacherLeaveRecordResp implements Serializable {
+
+    @ApiModelProperty(value = "提交日期")
+    private String commitDate;
+
+    @ApiModelProperty(value = "开始时间")
+    private String startDate;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endDate;
+
+    @ApiModelProperty(value = "请假类别")
+    private String leaveCategory;
+
+    @ApiModelProperty(value = "上课时间")
+    private String classDate;
+
+    @ApiModelProperty(value = "调整后上课时间")
+    private String classAdjustDate;
+
+    @ApiModelProperty(value = "课程类型")
+    private String courseType;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+}

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/service/IClassGroupTeacherSalaryService.java

@@ -1,6 +1,6 @@
 package com.ym.mec.education.service;
 
-import com.baomidou.mybatisplus.service.IService;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.education.entity.ClassGroupTeacherSalary;
 
 /**

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/service/ILeaveCategoryService.java

@@ -1,7 +1,7 @@
 package com.ym.mec.education.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.education.entity.LeaveCategory;
-import com.baomidou.mybatisplus.service.IService;
 
 /**
  * <p>

+ 4 - 1
mec-education/src/main/java/com/ym/mec/education/service/ITeacherAttendanceService.java

@@ -1,7 +1,9 @@
 package com.ym.mec.education.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.education.base.PageResponse;
 import com.ym.mec.education.entity.TeacherAttendance;
-import com.baomidou.mybatisplus.service.IService;
+import com.ym.mec.education.req.TeacherLeaveRecordReq;
 
 /**
  * <p>
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.service.IService;
  */
 public interface ITeacherAttendanceService extends IService<TeacherAttendance> {
 
+    PageResponse getPage(TeacherLeaveRecordReq teacherLeaveRecordReq);
 }

+ 4 - 1
mec-education/src/main/java/com/ym/mec/education/service/ITeacherLeaveRecordService.java

@@ -1,7 +1,9 @@
 package com.ym.mec.education.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.education.base.PageResponse;
 import com.ym.mec.education.entity.TeacherLeaveRecord;
-import com.baomidou.mybatisplus.service.IService;
+import com.ym.mec.education.req.TeacherLeaveRecordReq;
 
 /**
  * <p>
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.service.IService;
  */
 public interface ITeacherLeaveRecordService extends IService<TeacherLeaveRecord> {
 
+    PageResponse getPage(TeacherLeaveRecordReq teacherLeaveRecordReq);
 }

+ 4 - 2
mec-education/src/main/java/com/ym/mec/education/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -21,6 +21,7 @@ import com.ym.mec.education.service.ISysUserService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -66,8 +67,9 @@ public class ClassGroupStudentMapperServiceImpl extends ServiceImpl<ClassGroupSt
                 musicGroupStudentFeeQueryWrapper.lambda().eq(true, MusicGroupStudentFee::getMusicGroupId, classGroup.getMusicGroupId())
                         .eq(true, MusicGroupStudentFee::getUserId, item.getUserId());
                 MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeService.getOne(musicGroupStudentFeeQueryWrapper);
-                Optional.of(musicGroupStudentFee).ifPresent(groupStudentFee -> studentRegistrationResp.
-                        setStudentAttendance("连续缺到" + groupStudentFee.getContinuousAbsenteeismTimes() + "次"));
+                if (Objects.nonNull(musicGroupStudentFee) && Objects.nonNull(musicGroupStudentFee.getContinuousAbsenteeismTimes())) {
+                    studentRegistrationResp.setStudentAttendance("连续缺到" + musicGroupStudentFee.getContinuousAbsenteeismTimes() + "次");
+                }
             }
             list.add(studentRegistrationResp);
         });

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/service/impl/ClassGroupTeacherSalaryServiceImpl.java

@@ -1,6 +1,6 @@
 package com.ym.mec.education.service.impl;
 
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.education.entity.ClassGroupTeacherSalary;
 import com.ym.mec.education.mapper.ClassGroupTeacherSalaryMapper;
 import com.ym.mec.education.service.IClassGroupTeacherSalaryService;

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/service/impl/LeaveCategoryServiceImpl.java

@@ -1,9 +1,9 @@
 package com.ym.mec.education.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.education.entity.LeaveCategory;
 import com.ym.mec.education.mapper.LeaveCategoryMapper;
 import com.ym.mec.education.service.ILeaveCategoryService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
 /**

+ 74 - 1
mec-education/src/main/java/com/ym/mec/education/service/impl/TeacherAttendanceServiceImpl.java

@@ -1,10 +1,30 @@
 package com.ym.mec.education.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.entity.ClassGroup;
+import com.ym.mec.education.entity.CourseSchedule;
+import com.ym.mec.education.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.education.entity.TeacherAttendance;
+import com.ym.mec.education.enums.SignStatusEnum;
 import com.ym.mec.education.mapper.TeacherAttendanceMapper;
+import com.ym.mec.education.req.TeacherLeaveRecordReq;
+import com.ym.mec.education.resp.TeacherAttendanceResp;
+import com.ym.mec.education.service.IClassGroupService;
+import com.ym.mec.education.service.ICourseScheduleService;
+import com.ym.mec.education.service.ICourseScheduleTeacherSalaryService;
 import com.ym.mec.education.service.ITeacherAttendanceService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.ym.mec.education.utils.DateUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -17,4 +37,57 @@ import org.springframework.stereotype.Service;
 @Service("ITeacherAttendanceService")
 public class TeacherAttendanceServiceImpl extends ServiceImpl<TeacherAttendanceMapper, TeacherAttendance> implements ITeacherAttendanceService {
 
+    @Autowired
+    private ICourseScheduleService courseScheduleService;
+    @Autowired
+    private IClassGroupService classGroupService;
+    @Autowired
+    private ICourseScheduleTeacherSalaryService teacherSalaryService;
+
+    @Override
+    public PageResponse getPage(TeacherLeaveRecordReq teacherLeaveRecordReq) {
+        if (Objects.isNull(teacherLeaveRecordReq.getTeacherId())) {
+            return PageResponse.errorParam();
+        }
+        Page<TeacherAttendance> teacherAttendancePage = new Page<>(teacherLeaveRecordReq.getPageNo(), teacherLeaveRecordReq.getPageSize());
+        Page<TeacherAttendanceResp> pageResult = new Page();
+        List<TeacherAttendanceResp> list = Lists.newArrayList();
+        Page<TeacherAttendance> page = baseMapper.selectClassRecordPage(teacherAttendancePage, teacherLeaveRecordReq);
+        BeanUtils.copyProperties(page, pageResult);
+        if (!CollectionUtils.isEmpty(page.getRecords())) {
+            page.getRecords().forEach(item -> {
+                TeacherAttendanceResp teacherAttendanceResp = new TeacherAttendanceResp();
+                teacherAttendanceResp.setTeacherAttendanceStatus(SignStatusEnum.getMsgByCode(item.getStatus()));
+                CourseSchedule courseSchedule = courseScheduleService.getById(item.getCourseScheduleId());
+                if (Objects.nonNull(courseSchedule)) {
+                    if (Objects.nonNull(courseSchedule.getClassDate())) {
+                        teacherAttendanceResp.setClassDate(DateUtil.date2String(courseSchedule.getClassDate(), DateUtil.DATE_FORMAT_EXTRA)
+                                + " " + DateUtil.time2String(courseSchedule.getStartClassTime(), DateUtil.TIME_FORMAT_MIN))
+                                .setClassWeek(DateUtil.date2Week(courseSchedule.getClassDate()));
+                    }
+                    if (StringUtils.isNotBlank(courseSchedule.getName())) {
+                        teacherAttendanceResp.setCourseName(courseSchedule.getName());
+                    }
+                    if (StringUtils.isNotBlank(courseSchedule.getType())) {
+                        teacherAttendanceResp.setCourseType(CourseSchedule.CourseScheduleType.getMsgByCode(courseSchedule.getType()));
+                    }
+                    ClassGroup classGroup = classGroupService.getById(courseSchedule.getClassGroupId());
+                    if (Objects.nonNull(classGroup) && Objects.nonNull(classGroup.getCurrentClassTimes()) && Objects.nonNull(classGroup.getCurrentClassTimes())) {
+                        teacherAttendanceResp.setCourseProgress(classGroup.getCurrentClassTimes() + "/" + classGroup.getTotalClassTimes());
+                    }
+                    //课酬
+                    QueryWrapper<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryQueryWrapper = new QueryWrapper();
+                    courseScheduleTeacherSalaryQueryWrapper.lambda().eq(CourseScheduleTeacherSalary::getCourseScheduleId, item.getCourseScheduleId())
+                            .eq(CourseScheduleTeacherSalary::getUserId, item.getTeacherId());
+                    CourseScheduleTeacherSalary teacherSalary = teacherSalaryService.getOne(courseScheduleTeacherSalaryQueryWrapper);
+                    if (Objects.nonNull(teacherSalary) && Objects.nonNull(teacherSalary.getSalary())) {
+                        teacherAttendanceResp.setTeacherSalary(teacherSalary.getSalary());
+                    }
+                }
+                list.add(teacherAttendanceResp);
+            });
+            pageResult.setRecords(list);
+        }
+        return PageResponse.success(pageResult);
+    }
 }

+ 77 - 1
mec-education/src/main/java/com/ym/mec/education/service/impl/TeacherLeaveRecordServiceImpl.java

@@ -1,10 +1,31 @@
 package com.ym.mec.education.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.entity.CourseSchedule;
+import com.ym.mec.education.entity.LeaveCategory;
 import com.ym.mec.education.entity.TeacherLeaveRecord;
 import com.ym.mec.education.mapper.TeacherLeaveRecordMapper;
+import com.ym.mec.education.req.TeacherLeaveRecordReq;
+import com.ym.mec.education.resp.TeacherLeaveRecordResp;
+import com.ym.mec.education.service.ILeaveCategoryService;
 import com.ym.mec.education.service.ITeacherLeaveRecordService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.ym.mec.education.utils.DateUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
 
 /**
  * <p>
@@ -15,6 +36,61 @@ import org.springframework.stereotype.Service;
  * @since 2019-09-25
  */
 @Service("ITeacherLeaveRecordService")
+@Slf4j
 public class TeacherLeaveRecordServiceImpl extends ServiceImpl<TeacherLeaveRecordMapper, TeacherLeaveRecord> implements ITeacherLeaveRecordService {
 
+    @Autowired
+    private ILeaveCategoryService leaveCategoryService;
+
+    @Override
+    public PageResponse getPage(TeacherLeaveRecordReq teacherLeaveRecordReq) {
+        if (Objects.isNull(teacherLeaveRecordReq.getTeacherId()) || Objects.isNull(teacherLeaveRecordReq.getLeaveTime())) {
+            return PageResponse.errorParam();
+        }
+        Page<TeacherLeaveRecord> teacherLeaveRecordPage = new Page(teacherLeaveRecordReq.getPageNo(), teacherLeaveRecordReq.getPageSize());
+        QueryWrapper<TeacherLeaveRecord> recordQueryWrapper = new QueryWrapper();
+        recordQueryWrapper.lambda().eq(TeacherLeaveRecord::getUserId, teacherLeaveRecordReq.getTeacherId())
+                .ge(TeacherLeaveRecord::getCreateTime, teacherLeaveRecordReq.getLeaveTime())
+                .lt(TeacherLeaveRecord::getCreateTime, DateUtil.getFirstDayOfNextMonth(teacherLeaveRecordReq.getLeaveTime()));
+        IPage<TeacherLeaveRecord> page = page(teacherLeaveRecordPage, recordQueryWrapper);
+        Page<TeacherLeaveRecordResp> pageResult = new Page();
+        List<TeacherLeaveRecordResp> list = Lists.newArrayList();
+        if (!CollectionUtils.isEmpty(page.getRecords())) {
+            page.getRecords().forEach(item -> {
+                TeacherLeaveRecordResp teacherLeaveRecordResp = new TeacherLeaveRecordResp();
+                Optional.ofNullable(item.getCreateTime()).ifPresent(date ->
+                        teacherLeaveRecordResp.setCommitDate(DateUtil.date2String(date, DateUtil.DATE_FORMAT_MIN)));
+                Optional.ofNullable(item.getStartTime()).ifPresent(date ->
+                        teacherLeaveRecordResp.setStartDate(DateUtil.date2String(date, DateUtil.DATE_FORMAT_MIN)));
+                Optional.ofNullable(item.getEndTime()).ifPresent(date ->
+                        teacherLeaveRecordResp.setEndDate(DateUtil.date2String(date, DateUtil.DATE_FORMAT_MIN)));
+                Optional.ofNullable(item.getLeaveCategoryId()).ifPresent(leaveCategoryId -> {
+                    LeaveCategory leaveCategory = leaveCategoryService.getById(leaveCategoryId);
+                    if (Objects.nonNull(leaveCategory) && Objects.nonNull(leaveCategory.getName())) {
+                        teacherLeaveRecordResp.setLeaveCategory(leaveCategory.getName());
+                    }
+                });
+                //解析课程调整json
+                try {
+                    if (StringUtils.isNotBlank(item.getCoursesScheduleJson())) {
+                        JSONObject coursesSchedule = JSON.parseObject(item.getCoursesScheduleJson());
+                        JSONObject before = coursesSchedule.getJSONObject("before");
+                        teacherLeaveRecordResp.setClassDate(before.getString("classDate").substring(5) + " " +
+                                before.getString("startClassTime").substring(0, before.getString("startClassTime").length() - 3));
+                        JSONObject after = coursesSchedule.getJSONObject("after");
+                        teacherLeaveRecordResp.setClassAdjustDate(after.getString("classDate").substring(5) + " " +
+                                before.getString("startClassTime").substring(0, before.getString("startClassTime").length() - 3));
+                        teacherLeaveRecordResp.setCourseType(CourseSchedule.CourseScheduleType.getMsgByCode(before.getString("type")));
+                        teacherLeaveRecordResp.setCourseName(before.getString("name"));
+                    }
+                } catch (Exception e) {
+                    log.error("老师请假记录中解析课程json出现异常 {}", e.getMessage(), e);
+                }
+                list.add(teacherLeaveRecordResp);
+            });
+        }
+        BeanUtils.copyProperties(page, pageResult);
+        pageResult.setRecords(list);
+        return PageResponse.success(pageResult);
+    }
 }

+ 25 - 0
mec-education/src/main/java/com/ym/mec/education/utils/DateUtil.java

@@ -18,8 +18,11 @@ public class DateUtil {
 
     private static final String DATE_FORMAT_CHINESE = "MM月dd日";
     public static final String TIME_FORMAT = "HH:mm";
+    public static final String TIME_FORMAT_MIN = "HH:mm:ss";
     public static final String DATE_FORMAT = "MM-dd";
     public static final String DATE_FORMAT_HOUR = "MM-dd HH:mm";
+    public static final String DATE_FORMAT_MIN = "yyyy年MM月dd日 HH:mm";
+    public static final String DATE_FORMAT_EXTRA = "yyyy/MM/dd";
     private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>();
 
     public static DateFormat getDateFormat(String dateFormat) {
@@ -47,6 +50,11 @@ public class DateUtil {
         return format;
     }
 
+    public static String time2String(Time time, String dateFormatPattern) {
+        String format = time.toLocalTime().format(DateTimeFormatter.ofPattern(dateFormatPattern));
+        return format;
+    }
+
     public static String date2Week(Date date) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
@@ -70,4 +78,21 @@ public class DateUtil {
                 return "";
         }
     }
+
+    /**
+     * 获取下个月的第一天
+     * @param date
+     * @return
+     */
+    public static Date getFirstDayOfNextMonth(Date date) {
+        try {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(date);
+            calendar.set(Calendar.DAY_OF_MONTH, 1);
+            calendar.add(Calendar.MONTH, 1);
+            return calendar.getTime();
+        } catch (Exception e) {
+        }
+        return null;
+    }
 }

+ 1 - 1
mec-education/src/main/resources/application.yml

@@ -51,7 +51,7 @@ spring:
       min-idle: 0
 
 mybatis-plus:
-  mapper-locations: classpath:com/ym/mec/education/mapper/xml/*.xml
+  mapper-locations: classpath*:mapper/*.xml
   typeAliasesPackage : com.ym.mec.education.entity
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/ChargeTypeMapper.xml → mec-education/src/main/resources/mapper/ChargeTypeMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/ChargeTypeSubjectMapperMapper.xml → mec-education/src/main/resources/mapper/ChargeTypeSubjectMapperMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/ClassGroupMapper.xml → mec-education/src/main/resources/mapper/ClassGroupMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/ClassGroupRelationMapper.xml → mec-education/src/main/resources/mapper/ClassGroupRelationMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/ClassGroupStudentMapperMapper.xml → mec-education/src/main/resources/mapper/ClassGroupStudentMapperMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/ClassGroupTeacherMapperMapper.xml → mec-education/src/main/resources/mapper/ClassGroupTeacherMapperMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/ClassGroupTeacherSalaryMapper.xml → mec-education/src/main/resources/mapper/ClassGroupTeacherSalaryMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/CooperationOrganMapper.xml → mec-education/src/main/resources/mapper/CooperationOrganMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/CourseHomeworkMapper.xml → mec-education/src/main/resources/mapper/CourseHomeworkMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/CourseHomeworkTemplateMapper.xml → mec-education/src/main/resources/mapper/CourseHomeworkTemplateMapper.xml


+ 5 - 1
mec-education/src/main/java/com/ym/mec/education/mapper/xml/CourseScheduleMapper.xml → mec-education/src/main/resources/mapper/CourseScheduleMapper.xml

@@ -17,11 +17,15 @@
         <result column="update_time_" property="updateTime" />
         <result column="teach_mode_" property="teachMode" />
         <result column="complaint_status_" property="complaintStatus" />
+        <result column="complaint_status_" property="complaintStatus" />
+        <result column="type_" property="type" />
+        <result column="name_" property="name" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id_, class_group_id_, status_, subsidy_, class_date_, start_class_time_, end_class_time_, teacher_id_, actual_teacher_id_, create_time_, update_time_, teach_mode_, complaint_status_
+        id_, class_group_id_, status_, subsidy_, class_date_, start_class_time_, end_class_time_, teacher_id_,
+        actual_teacher_id_, create_time_, update_time_, teach_mode_, complaint_status_,type_, name_
     </sql>
 
 </mapper>

+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/CourseScheduleTeacherSalaryMapper.xml → mec-education/src/main/resources/mapper/CourseScheduleTeacherSalaryMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/DemoGroupClassGroupMapperMapper.xml → mec-education/src/main/resources/mapper/DemoGroupClassGroupMapperMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/DemoGroupCoursesPlanMapper.xml → mec-education/src/main/resources/mapper/DemoGroupCoursesPlanMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/DemoGroupMapper.xml → mec-education/src/main/resources/mapper/DemoGroupMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/EmployeeMapper.xml → mec-education/src/main/resources/mapper/EmployeeMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/GoodsCategoryMapper.xml → mec-education/src/main/resources/mapper/GoodsCategoryMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/GoodsMapper.xml → mec-education/src/main/resources/mapper/GoodsMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/GoodsOrderItemMapper.xml → mec-education/src/main/resources/mapper/GoodsOrderItemMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/GoodsOrderMapper.xml → mec-education/src/main/resources/mapper/GoodsOrderMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/GoodsOrderPaymentMapper.xml → mec-education/src/main/resources/mapper/GoodsOrderPaymentMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/HotWordsLabelMapper.xml → mec-education/src/main/resources/mapper/HotWordsLabelMapper.xml


+ 0 - 0
mec-education/src/main/java/com/ym/mec/education/mapper/xml/LeaveCategoryMapper.xml → mec-education/src/main/resources/mapper/LeaveCategoryMapper.xml


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor