Browse Source

Merge remote-tracking branch 'origin/master'

zouxuan 4 years ago
parent
commit
f9dee2dbf1
38 changed files with 667 additions and 149 deletions
  1. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  2. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java
  3. 35 19
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseHomeworkDao.java
  4. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserContractsDao.java
  5. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java
  6. 130 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVisitCourseHomeWorkDto.java
  7. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserContracts.java
  8. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ArrearageStudentsQueryInfo.java
  9. 65 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentCourseHomeWorkQueryInfo.java
  10. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ContractService.java
  11. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderDetailService.java
  12. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentCourseHomeworkService.java
  13. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  14. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  15. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java
  16. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  17. 96 43
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  18. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserContractsServiceImpl.java
  19. 23 23
      mec-biz/src/main/resources/config/contracts/product.ftl
  20. 1 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  21. 1 1
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml
  22. 1 1
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  23. 10 4
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  24. 36 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml
  25. 1 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml
  26. 62 6
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  27. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml
  28. 2 4
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  29. 4 3
      mec-biz/src/main/resources/config/mybatis/SysUserContractsMapper.xml
  30. 30 9
      mec-biz/src/main/resources/config/mybatis/TeacherCourseStatisticsMapper.xml
  31. 7 0
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  32. 1 1
      mec-student/src/main/java/com/ym/mec/student/config/WebMvcConfig.java
  33. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/config/WebMvcConfig.java
  34. 6 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  35. 4 25
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  36. 25 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderDetailController.java
  37. 24 0
      mec-web/src/main/java/com/ym/mec/web/controller/WebCourseHomeworkController.java
  38. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduPracticeGroupController.java

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

@@ -363,8 +363,16 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取用户的合作单位
+     *
      * @param userId
      * @return
      */
     CooperationOrgan findUserMusicGroupCooperationOrgan(@Param("userId") Integer userId);
+
+    /**
+     * 根据ids获取乐团信息
+     * @param ids
+     * @return
+     */
+    List<MusicGroup> getMusicGroupByIds(@Param("ids") List<String> ids);
 }

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java

@@ -6,6 +6,7 @@ import java.util.Map;
 import java.util.Set;
 
 import com.ym.mec.biz.dal.dto.MusicArrearageStudentDto;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
@@ -245,6 +246,22 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
 	 */
 	List<Integer> queryNoPaymentUserIds(@Param("musicGroupId") String musicGroupId, @Param("userIds") List<Integer> userIds);
 
+	/**
+	 * @describe 未缴费学员列表
+	 * @author Joburgess
+	 * @date 2021/2/3 0003
+	 * @param params:
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.MusicArrearageStudentDto>
+	 */
 	List<MusicArrearageStudentDto> queryArrearageStudents(Map<String, Object> params);
 	int countArrearageStudents(Map<String, Object> params);
+
+	/**
+	 * @describe 获取未缴费学员所在乐团列表
+	 * @author Joburgess
+	 * @date 2021/2/3 0003
+	 * @param organIds:
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroup>
+	 */
+	List<MusicGroup> getNoPaymentStudentMusicGroups(@Param("organIds") Set<Integer> organIds);
 }

+ 35 - 19
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseHomeworkDao.java

@@ -1,9 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
-import com.ym.mec.biz.dal.dto.StudentCourseHomeworkDto;
-import com.ym.mec.biz.dal.dto.StudentHomeworkRecordDto;
-import com.ym.mec.biz.dal.dto.StudentServeCourseHomeworkDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.common.dal.BaseDAO;
@@ -53,46 +50,48 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
      * 构建初始学生作业提交记录
      */
     List<StudentCourseHomework> constructInitialStudentHomeworkRecordsWithPayment(@Param("courseScheduleID") Long courseScheduleID,
-                                                                       @Param("courseHomeworkID") Long courseHomeworkID);
+                                                                                  @Param("courseHomeworkID") Long courseHomeworkID);
 
     /**
+     * @param courseScheduleId: 作业编号
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentCourseHomework>
      * @describe 根据作业编号获取需要提交作业的学生
      * @author Joburgess
      * @date 2019/10/20
-     * @param courseScheduleId: 作业编号
-     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentCourseHomework>
      */
     List<StudentCourseHomework> findByCourseSchedule(@Param("courseScheduleId") Long courseScheduleId,
                                                      @Param("userName") String userName);
 
     /**
+     * @param courseHomeworkId: 作业编号
+     * @param userId:           用户编号
+     * @return com.ym.mec.biz.dal.entity.StudentCourseHomework
      * @describe 根据作业编号和学生编号查询对应学生作业记录
      * @author Joburgess
      * @date 2019/10/20
-     * @param courseHomeworkId: 作业编号
-     * @param userId: 用户编号
-     * @return com.ym.mec.biz.dal.entity.StudentCourseHomework
      */
     StudentCourseHomework findByStudentAndCourseHomewok(@Param("courseHomeworkId") Long courseHomeworkId,
                                                         @Param("userId") Integer userId);
-	
+
     /**
      * 查询未完成的课程作业
+     *
      * @return
      */
     List<StudentCourseHomework> queryNotDoneHomeworkList();
 
     /**
+     * @param courseIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentCourseHomework>
      * @describe 根据课程查询学生作业记录
      * @author Joburgess
      * @date 2020/3/20
-     * @param courseIds:
-     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentCourseHomework>
      */
     List<StudentCourseHomework> findByCourses(@Param("courseIds") List<Long> courseIds);
 
     /**
      * count课程学员作业列表
+     *
      * @param params
      * @return
      */
@@ -100,37 +99,39 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
 
     /**
      * 获取课程学员作业列表
+     *
      * @param params
      * @return
      */
     List<StudentCourseHomeworkDto> findStudentCourseHomeworks(Map<String, Object> params);
 
     int delByCourseScheduleId(Long courseScheduleId);
-    
+
     int batchDelByCourseScheduleId(@Param("courseScheduleIdList") List<Long> courseScheduleIdList);
 
     int countStudentHomeworkRecord(Map<String, Object> params);
+
     List<StudentHomeworkRecordDto> findStudentHomeworkRecord(Map<String, Object> params);
 
     /**
-     * @describe 根据上课时间区间获取学员课堂作业
-     * @author Joburgess
-     * @date 2020.05.27
      * @param startDate:
      * @param endDate:
      * @return java.util.List<com.ym.mec.biz.dal.dto.StudentServeCourseHomeworkDto>
+     * @describe 根据上课时间区间获取学员课堂作业
+     * @author Joburgess
+     * @date 2020.05.27
      */
     List<StudentServeCourseHomeworkDto> findStudentHomeworkWithCourseDateRange(@Param("startDate") String startDate,
                                                                                @Param("endDate") String endDate,
                                                                                @Param("studentIds") List<Integer> studentIds);
 
     /**
-     * @describe
-     * @date 2020.06.15
      * @param startDate:
      * @param endDate:
      * @param studentIds:
      * @return java.util.Set<java.lang.Integer>
+     * @describe
+     * @date 2020.06.15
      */
     Set<Integer> checkStudentHaveHomeworkInDateRange(@Param("startDate") String startDate,
                                                      @Param("endDate") String endDate,
@@ -142,8 +143,23 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
 
     /**
      * 获取作业的已回复数
+     *
      * @param homeWorkIds
      * @return
      */
     List<Map<Long, Long>> queryReplied(@Param("homeWorkIds") List<Long> homeWorkIds);
+
+    /**
+     * 获取学生课程作业列表
+     * @param params
+     * @return
+     */
+    List<StudentVisitCourseHomeWorkDto> getStudentCourseHomeWorks(Map<String, Object> params);
+
+    /**
+     * 获取学生课程作业总数
+     * @param params
+     * @return
+     */
+    int getStudentCourseHomeWorksCount(Map<String, Object> params);
 }

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

@@ -18,7 +18,8 @@ public interface SysUserContractsDao extends BaseDAO<Long, SysUserContracts> {
      * @return java.util.List<com.ym.mec.biz.dal.entity.SysUserContracts>
      */
     List<SysUserContracts> getUserContractWithType(@Param("userId") Integer userId,
-                                                   @Param("contractType") SysUserContracts.ContractType contractType);
+                                                   @Param("contractType") SysUserContracts.ContractType contractType,
+                                                   @Param("version") Integer version);
 	
     /**
      * 获取最近一次的协议

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

@@ -351,4 +351,11 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
     List<VipCourseStudentInfoDto> queryVipCourseStudentInfo();
 
     List<VipBuyResultDto> getGroupTeachers(@Param("groupIds") List<Long> groupIds);
+
+    /**
+     * 根据ids获取课程组信息
+     *
+     * @return
+     */
+    List<VipGroup> getVipGroupByIds(@Param("ids") List<Long> ids);
 }

+ 130 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVisitCourseHomeWorkDto.java

@@ -0,0 +1,130 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class StudentVisitCourseHomeWorkDto {
+    @ApiModelProperty(value = "课程id",required = false)
+    private Long courseScheduleId;
+
+    @ApiModelProperty(value = "课程类型",required = false)
+    private GroupType groupType;
+
+    @ApiModelProperty(value = "课程组id",required = false)
+    private String groupId;
+
+    @ApiModelProperty(value = "课程名称",required = false)
+    private String courseName;
+
+    @ApiModelProperty(value = "课程组名称",required = false)
+    private String groupName;
+
+    @ApiModelProperty(value = "布置老师",required = false)
+    private String teacherName;
+
+    @ApiModelProperty(value = "作业内容",required = false)
+    private String content;
+
+    @ApiModelProperty(value = "提交状态",required = false)
+    private YesOrNoEnum status;
+
+    @ApiModelProperty(value = "是否已经回复",required = false)
+    private YesOrNoEnum isReplied;
+
+    @ApiModelProperty(value = "是否已查看")
+    private YesOrNoEnum isView;
+
+    @ApiModelProperty(value = "布置时间")
+    private Date createTime;
+
+    public GroupType getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(GroupType groupType) {
+        this.groupType = groupType;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public Long getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    public void setCourseScheduleId(Long courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public YesOrNoEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(YesOrNoEnum status) {
+        this.status = status;
+    }
+
+    public YesOrNoEnum getIsReplied() {
+        return isReplied;
+    }
+
+    public void setIsReplied(YesOrNoEnum isReplied) {
+        this.isReplied = isReplied;
+    }
+
+    public YesOrNoEnum getIsView() {
+        return isView;
+    }
+
+    public void setIsView(YesOrNoEnum isView) {
+        this.isView = isView;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserContracts.java

@@ -52,9 +52,19 @@ public class SysUserContracts {
 	/** 备注 */
 	private String memo;
 
+	private Integer version;
+
 	/** 创建时间 */
 	private java.util.Date createTime;
 
+	public Integer getVersion() {
+		return version;
+	}
+
+	public void setVersion(Integer version) {
+		this.version = version;
+	}
+
 	public void setId(Long id) {
 		this.id = id;
 	}

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ArrearageStudentsQueryInfo.java

@@ -10,6 +10,12 @@ public class ArrearageStudentsQueryInfo extends QueryInfo {
 
     private String organIds;
 
+    private String musicGroupId;
+
+    private Integer cooperationOrganId;
+
+    private Integer eduTeacherId;
+
     public String getOrganIds() {
         return organIds;
     }

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

@@ -0,0 +1,65 @@
+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;
+
+public class StudentCourseHomeWorkQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "学生id")
+    private Long userId;
+
+    @ApiModelProperty(value = "开始时间")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "是否提交")
+    private YesOrNoEnum status;
+
+    @ApiModelProperty(value = "是否回复")
+    private YesOrNoEnum isReplied;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    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;
+    }
+
+    public void setStatus(YesOrNoEnum status) {
+        this.status = status;
+    }
+
+    public YesOrNoEnum getIsReplied() {
+        return isReplied;
+    }
+
+    public void setIsReplied(YesOrNoEnum isReplied) {
+        this.isReplied = isReplied;
+    }
+}

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ContractService.java

@@ -9,6 +9,9 @@ import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 
 public interface ContractService {
 
+	//协议版本
+	Integer CONTRACT_VERSION=2;
+
 	/**
 	 * 用户注册
 	 * @param userId

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderDetailService.java

@@ -7,6 +7,7 @@ import java.util.Set;
 import com.ym.mec.biz.dal.dto.FeeStudentDto;
 import com.ym.mec.biz.dal.dto.MusicArrearageStudentDto;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail;
@@ -14,6 +15,7 @@ import com.ym.mec.biz.dal.page.ArrearageStudentsQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
 
 public interface MusicGroupPaymentCalenderDetailService extends BaseService<Long, MusicGroupPaymentCalenderDetail> {
 
@@ -85,5 +87,21 @@ public interface MusicGroupPaymentCalenderDetailService extends BaseService<Long
      */
     void batchDel(String musicGroupPaymentCalenderDetailIds);
 
+    /**
+     * @describe 未缴费学员列表
+     * @author Joburgess
+     * @date 2021/2/3 0003
+     * @param queryInfo:
+     * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.dto.MusicArrearageStudentDto>
+     */
     PageInfo<MusicArrearageStudentDto> queryArrearageStudents(ArrearageStudentsQueryInfo queryInfo);
+
+    /**
+     * @describe 获取未缴费学员关联乐团列表
+     * @author Joburgess
+     * @date 2021/2/3 0003
+     * @param organIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroup>
+     */
+    List<MusicGroup> getNoPaymentStudentMusicGroups(String organIds);
 }

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

@@ -2,9 +2,11 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
 import com.ym.mec.biz.dal.dto.StudentCourseHomeworkDto;
+import com.ym.mec.biz.dal.dto.StudentVisitCourseHomeWorkDto;
 import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
+import com.ym.mec.biz.dal.page.StudentCourseHomeWorkQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
@@ -87,4 +89,11 @@ public interface StudentCourseHomeworkService extends BaseService<Long, StudentC
      * @return java.util.Map<java.lang.String,java.lang.Object>
      */
     Map<String, Object> getCourseHomeworkDetail(CourseHomeworkQueryInfo queryInfo);
+
+    /**
+     * 获取学生作业列表
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<StudentVisitCourseHomeWorkDto> getStudentHomeWorks(StudentCourseHomeWorkQueryInfo queryInfo);
 }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java

@@ -1062,6 +1062,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		sysUserContracts.setType(ContractType.PRODUCT);
 		sysUserContracts.setUrl(pdfFilePath);
 		sysUserContracts.setUserId(userId);
+		sysUserContracts.setVersion(CONTRACT_VERSION);
 
 		sysUserContractsService.insert(sysUserContracts);
 

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1439,6 +1439,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		List<CourseScheduleModifyLog> modifyLogs = getModifyLogs(courseIds,existCourses,sysUser.getId(),now);
 
 		for (CourseSchedule existCours : existCourses) {
+			if(now.compareTo(existCours.getStartClassTime())>0){
+				throw new BizException("进行中或已结束课程不可调整");
+			}
 			CourseSchedule ac = idCourseMap.get(existCours.getId());
 
 			if(now.compareTo(ac.getStartClassTime())>0){
@@ -1447,6 +1450,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 			int singleClassMinutes = DateUtil.minutesBetween(existCours.getStartClassTime(), existCours.getEndClassTime());
 
+			existCours.setStatus(CourseStatusEnum.NOT_START);
 			existCours.setClassDate(ac.getClassDate());
 			existCours.setUpdateTime(now);
 			existCours.setStartClassTime(ac.getStartClassTime());
@@ -3125,7 +3129,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					if (DateUtil.minutesBetween(newCourseSchedule.getStartClassTime(), practiceGroup.getCoursesStartDate()) > 0) {
 						throw new BizException("调整失败: 调整时间不得早于开课时间");
 					}
-					if (DateUtil.minutesBetween(practiceGroup.getCoursesExpireDate(), newCourseSchedule.getEndClassTime()) > 0) {
+					if (DateUtil.isSameDay(practiceGroup.getCoursesExpireDate(), newCourseSchedule.getEndClassTime())&&DateUtil.minutesBetween(practiceGroup.getCoursesExpireDate(), newCourseSchedule.getEndClassTime()) > 0) {
 						throw new BizException("调整失败: 截止时间超过课程有效期");
 					}
 				}

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

@@ -397,8 +397,8 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			int noAttendance = indexBaseMonthDataDao.getNoAttendance(organIdsStr,startTime);
 			threeChild.add(new IndexErrInfoDto(IndexErrorType.TEACHER_NOT_A_CLASS, IndexErrorType.TEACHER_NOT_A_CLASS.getMsg(), noAttendance, null));
 
-			int teacherLeave = indexBaseMonthDataDao.queryTeacherLeave(organIdsStr,startTime);
-			threeChild.add(new IndexErrInfoDto(IndexErrorType.TEACHER_LEAVE, IndexErrorType.TEACHER_LEAVE.getMsg(),teacherLeave, null));
+//			int teacherLeave = indexBaseMonthDataDao.queryTeacherLeave(organIdsStr,startTime);
+//			threeChild.add(new IndexErrInfoDto(IndexErrorType.TEACHER_LEAVE, IndexErrorType.TEACHER_LEAVE.getMsg(),teacherLeave, null));
 
 			String monthStr = DateUtil.format(date, DateUtil.ISO_YEAR_MONTH_FORMAT);
 			//全职未离职老师

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

@@ -581,4 +581,13 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		pageInfo.setRows(dataList);
 		return pageInfo;
 	}
+
+	@Override
+	public List<MusicGroup> getNoPaymentStudentMusicGroups(String organIdsStr) {
+		Set<Integer> organIds = null;
+		if(StringUtils.isNotBlank(organIdsStr)){
+			organIds = Arrays.stream(organIdsStr.split(",")).map(Integer::new).collect(Collectors.toSet());
+		}
+		return musicGroupPaymentCalenderDetailDao.getNoPaymentStudentMusicGroups(organIds);
+	}
 }

+ 96 - 43
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -5,9 +5,11 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
+import com.ym.mec.biz.dal.page.StudentCourseHomeWorkQueryInfo;
 import com.ym.mec.biz.service.CourseHomeworkService;
 import com.ym.mec.biz.service.StudentCourseHomeworkService;
 import com.ym.mec.biz.service.StudentServeService;
@@ -34,6 +36,7 @@ import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
+
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 
 @Service
@@ -65,6 +68,12 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
     private SubjectDao subjectDao;
     @Autowired
     private StudentServeService studentServeService;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private VipGroupDao vipGroupDao;
+    @Autowired
+    private PracticeGroupDao practiceGroupDao;
 
     @Override
     public BaseDAO<Long, StudentCourseHomework> getDAO() {
@@ -93,15 +102,15 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void submitHomework(StudentCourseHomework bean) {
-        if(Objects.isNull(bean.getAttachments())||StringUtils.isBlank(bean.getAttachments())){
+        if (Objects.isNull(bean.getAttachments()) || StringUtils.isBlank(bean.getAttachments())) {
             throw new BizException("请选择作业");
         }
         StudentCourseHomework existHomework = studentCourseHomeworkDao.get(bean.getId());
         if (Objects.isNull(bean) || Objects.isNull(bean.getId()) || Objects.isNull(existHomework)) {
             throw new BizException("作业不存在");
         }
-        Date now=new Date();
-        if (DateUtil.daysBetween(existHomework.getCreateTime(), now)>=14){
+        Date now = new Date();
+        if (DateUtil.daysBetween(existHomework.getCreateTime(), now) >= 14) {
             throw new BizException("该作业已超出可提交时间范围,无法提交作业。");
         }
 
@@ -122,21 +131,21 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         LocalDate createDateTime = LocalDateTime.ofInstant(courseSchedule.getClassDate().toInstant(), DateUtil.zoneId).toLocalDate();
         LocalDate createMonday = createDateTime.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
         LocalDate homeworkCreateDateTime = LocalDateTime.ofInstant(existHomework.getCreateTime().toInstant(), DateUtil.zoneId).toLocalDate();
-        boolean isOk=false;
-        switch (createDateTime.getDayOfWeek()){
+        boolean isOk = false;
+        switch (createDateTime.getDayOfWeek()) {
             case SATURDAY:
-                if(createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS)<4){
-                    isOk=true;
+                if (createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS) < 4) {
+                    isOk = true;
                 }
                 break;
             case SUNDAY:
-                if(createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS)<3){
-                    isOk=true;
+                if (createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS) < 3) {
+                    isOk = true;
                 }
                 break;
             default:
-                if(createDateTime.get(DateUtil.weekFields.weekOfYear())==homeworkCreateDateTime.get(DateUtil.weekFields.weekOfYear())){
-                    isOk=true;
+                if (createDateTime.get(DateUtil.weekFields.weekOfYear()) == homeworkCreateDateTime.get(DateUtil.weekFields.weekOfYear())) {
+                    isOk = true;
                 }
                 break;
         }
@@ -146,7 +155,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 //        CourseHomework temp = courseHomeworkService.get(courseHomework.getId());
 //        if (temp.getExpectNum().equals(courseHomework.getCompletedNum())) {
         Integer userId = bean.getUserId();
-        if(courseSchedule.getType().equals(CourseScheduleType.VIP)){
+        if (courseSchedule.getType().equals(CourseScheduleType.VIP)) {
             userId = null;
         }
 
@@ -157,25 +166,25 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         }
 //        }
 
-        if(push){
+        if (push) {
             Map<Integer, String> userMap = new HashMap<>();
             userMap.put(courseSchedule.getActualTeacherId(), courseSchedule.getActualTeacherId().toString());
             SysUser user = teacherDao.getUser(bean.getUserId());
             String notifyUrl = "9?courseScheduleID=" + bean.getId() + "&userId=" + bean.getUserId() + "&studentCourseHomeworkId=" + bean.getId() + "&extra=0";
             String extra = "dayaedu?courseScheduleID=" + courseSchedule.getId() + "&userId=" + bean.getUserId() + "&studentCourseHomeworkId=" + bean.getId() + "&extra=0";
             String courseDate = DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy年MM月dd日");
-            sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH,bean.getUserId().toString(),extra,
+            sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH, bean.getUserId().toString(), extra,
                     new String[]{courseSchedule.getActualTeacherId().toString()},
-                    null,courseDate,courseSchedule.getName());
+                    null, courseDate, courseSchedule.getName());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.HOMEWORK_SUBMIT_PUSH,
                     userMap, null, 0, notifyUrl, "TEACHER", courseSchedule.getName(), courseDate, user.getUsername());
 
             Date date = new Date();
-            if(date.before(courseHomework.getExpiryDate())){
+            if (date.before(courseHomework.getExpiryDate())) {
                 ClassGroup classGroup = classGroupDao.findByCourseSchedule(existHomework.getCourseScheduleId().intValue(), 0);
-                if(classGroup != null){
+                if (classGroup != null) {
                     SysUser sysUser = sysUserFeignService.queryUserById(existHomework.getUserId());
-                    sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP,existHomework.getUserId().toString(),null,
+                    sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP, existHomework.getUserId().toString(), null,
                             new String[]{classGroup.getId().toString()},
                             null, sysUser.getUsername());
                 }
@@ -189,12 +198,12 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             throw new BizException("作业不存在");
         }
         CourseHomeworkStudentDetailDto courseHomeworkStudentDetail = studentCourseHomeworkDao.findCourseHomeworkStudentDetail(courseScheduleID, userId);
-        if(Objects.nonNull(courseHomeworkStudentDetail)){
+        if (Objects.nonNull(courseHomeworkStudentDetail)) {
             SysUser student = teacherDao.getUser(userId.intValue());
             courseHomeworkStudentDetail.setStudentId(userId.intValue());
             courseHomeworkStudentDetail.setStudentName(student.getUsername());
             CourseSchedule courseSchedule = courseScheduleDao.get(courseHomeworkStudentDetail.getCourseScheduleId());
-            if(Objects.nonNull(courseSchedule)){
+            if (Objects.nonNull(courseSchedule)) {
                 SysUser teacher = teacherDao.getUser(courseSchedule.getActualTeacherId());
                 courseHomeworkStudentDetail.setTeacherId(courseSchedule.getActualTeacherId());
                 courseHomeworkStudentDetail.setTeacherName(teacher.getRealName());
@@ -212,13 +221,13 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         }
 
         int hours = -1;
-        if(Objects.nonNull(byStudentAndCourseHomewok.getSubmitTime())){
+        if (Objects.nonNull(byStudentAndCourseHomewok.getSubmitTime())) {
             hours = DateUtil.hoursBetween(byStudentAndCourseHomewok.getSubmitTime(), new Date());
         }
         if (byStudentAndCourseHomewok.getIsReplied() == YesOrNoEnum.YES && Integer.valueOf(1).equals(byStudentAndCourseHomewok.getIsRepliedTimely())) {
             return true;
         }
-        if(hours>=0&&hours<=12){
+        if (hours >= 0 && hours <= 12) {
             byStudentAndCourseHomewok.setIsRepliedTimely(1);
         }
         CourseHomework byTeacherAndCourseHomewok = courseHomeworkDao.findByTeacherAndCourseHomewok(courseHomeworkId, teacherId);
@@ -234,25 +243,25 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             LocalDate createMonday = createDateTime.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
 
             LocalDate homeworkCreateDateTime = LocalDateTime.ofInstant(byStudentAndCourseHomewok.getCreateTime().toInstant(), DateUtil.zoneId).toLocalDate();
-            boolean isOk=false;
-            switch (createDateTime.getDayOfWeek()){
+            boolean isOk = false;
+            switch (createDateTime.getDayOfWeek()) {
                 case SATURDAY:
-                    if(createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS)<4){
-                        isOk=true;
+                    if (createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS) < 4) {
+                        isOk = true;
                     }
                     break;
                 case SUNDAY:
-                    if(createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS)<3){
-                        isOk=true;
+                    if (createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS) < 3) {
+                        isOk = true;
                     }
                     break;
                 default:
-                    if(createDateTime.get(DateUtil.weekFields.weekOfYear())==homeworkCreateDateTime.get(DateUtil.weekFields.weekOfYear())){
-                        isOk=true;
+                    if (createDateTime.get(DateUtil.weekFields.weekOfYear()) == homeworkCreateDateTime.get(DateUtil.weekFields.weekOfYear())) {
+                        isOk = true;
                     }
                     break;
             }
-            if(createDateTime.isBefore(monDayDate)&&isOk){
+            if (createDateTime.isBefore(monDayDate) && isOk) {
                 studentServeService.updateExercisesSituation(new Date(), new ArrayList<>(Arrays.asList(byStudentAndCourseHomewok.getUserId())), teacherId);
             }
         }
@@ -320,7 +329,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
             dataList = studentCourseHomeworkDao.findStudentHomeworkRecord(params);
-            if(!CollectionUtils.isEmpty(dataList)){
+            if (!CollectionUtils.isEmpty(dataList)) {
                 List<Integer> teacherIds = dataList.stream().map(StudentHomeworkRecordDto::getTeacherId).collect(Collectors.toList());
                 List<SimpleUserDto> teachers = teacherDao.findSimpleTeachers(teacherIds);
                 Map<Integer, String> idNameMap = teachers.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, u -> u.getUserName()));
@@ -342,11 +351,11 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         studentCourseHomeworkDao.insert(studentCourseHomework);
         CourseHomework courseHomework = courseHomeworkDao.get(studentCourseHomework.getCourseHomeworkId());
         Date date = new Date();
-        if(date.before(courseHomework.getExpiryDate())){
+        if (date.before(courseHomework.getExpiryDate())) {
             ClassGroup classGroup = classGroupDao.findByCourseSchedule(studentCourseHomework.getCourseScheduleId().intValue(), 0);
-            if(classGroup != null){
+            if (classGroup != null) {
                 SysUser sysUser = sysUserFeignService.queryUserById(studentCourseHomework.getUserId());
-                sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP,studentCourseHomework.getUserId().toString(),null,
+                sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP, studentCourseHomework.getUserId().toString(), null,
                         new String[]{classGroup.getId().toString()},
                         null, sysUser.getUsername());
             }
@@ -358,7 +367,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         Map<String, Object> result = new HashMap<>();
         CourseHomework courseHomework = courseHomeworkDao.findByCourseSchedule(queryInfo.getCourseScheduleId());
 
-        if(Objects.isNull(courseHomework)){
+        if (Objects.isNull(courseHomework)) {
             result.put("countInfo", null);
             return result;
         }
@@ -379,14 +388,14 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             List<Student> students = studentDao.findByStudentIds(new ArrayList<>(studentIds));
             Set<Integer> subjectIds = new HashSet<>();
             for (Student student : students) {
-                if(StringUtils.isBlank(student.getSubjectIdList())){
+                if (StringUtils.isBlank(student.getSubjectIdList())) {
                     continue;
                 }
                 Set<Integer> studentSubjectIds = Arrays.stream(student.getSubjectIdList().split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toSet());
                 subjectIds.addAll(studentSubjectIds);
             }
             List<Subject> subjects = new ArrayList<>();
-            if(!CollectionUtils.isEmpty(subjectIds)){
+            if (!CollectionUtils.isEmpty(subjectIds)) {
                 subjects = subjectDao.findBySubjectIds(new ArrayList<>(subjectIds));
             }
             Map<Integer, SimpleUserDto> studentInfoMap = usersSimpleInfo.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, s -> s, (s1, s2) -> s1));
@@ -394,10 +403,10 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             for (StudentCourseHomework studentCourseHomework : dataList) {
                 StudentCourseHomeworkDto s = new StudentCourseHomeworkDto();
                 s.setStudentId(studentCourseHomework.getUserId());
-                s.setStudentName(studentInfoMap.containsKey(s.getStudentId())?studentInfoMap.get(s.getStudentId()).getNickName():"");
-                s.setPhone(studentInfoMap.containsKey(s.getStudentId())?studentInfoMap.get(s.getStudentId()).getPhone():"");
-                s.setSubjectIds(studentMap.containsKey(s.getStudentId())?studentMap.get(s.getStudentId()).getSubjectIdList():"");
-                if(StringUtils.isNotBlank(s.getSubjectIds())){
+                s.setStudentName(studentInfoMap.containsKey(s.getStudentId()) ? studentInfoMap.get(s.getStudentId()).getNickName() : "");
+                s.setPhone(studentInfoMap.containsKey(s.getStudentId()) ? studentInfoMap.get(s.getStudentId()).getPhone() : "");
+                s.setSubjectIds(studentMap.containsKey(s.getStudentId()) ? studentMap.get(s.getStudentId()).getSubjectIdList() : "");
+                if (StringUtils.isNotBlank(s.getSubjectIds())) {
                     Set<Integer> studentSubjectIds = Arrays.stream(s.getSubjectIds().split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toSet());
                     List<String> subjectNames = subjects.stream().filter(sj -> studentSubjectIds.contains(sj.getId())).map(Subject::getName).collect(Collectors.toList());
                     s.setSubjectNames(StringUtils.join(subjectNames, ","));
@@ -411,7 +420,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         }
         pageInfo.setRows(studentCourseHomeworkDtos);
 
-        if(queryInfo.getPage()==1){
+        if (queryInfo.getPage() == 1) {
             params.put("isReplied", 1);
             int repliedNum = studentCourseHomeworkDao.countAll(params);
             CourseHomeworkDto courseHomeworkDto = new CourseHomeworkDto();
@@ -426,4 +435,48 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 
         return result;
     }
+
+    @Override
+    public PageInfo<StudentVisitCourseHomeWorkDto> getStudentHomeWorks(StudentCourseHomeWorkQueryInfo queryInfo) {
+        PageInfo<StudentVisitCourseHomeWorkDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<StudentVisitCourseHomeWorkDto> dataList = new ArrayList<>();
+        int count = studentCourseHomeworkDao.getStudentCourseHomeWorksCount(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentCourseHomeworkDao.getStudentCourseHomeWorks(params);
+
+            List<String> musicGroupIds = dataList.stream().filter(e -> e.getGroupType()!=null).filter(e -> e.getGroupType().equals(GroupType.MUSIC)).map(StudentVisitCourseHomeWorkDto::getGroupId).distinct().collect(Collectors.toList());
+            List<Long> vipGroupIds = dataList.stream().filter(e -> e.getGroupType()!=null).filter(e -> e.getGroupType().equals(GroupType.VIP)).map(e -> Long.parseLong(e.getGroupId())).distinct().collect(Collectors.toList());
+            List<Long> practiceGroupIds = dataList.stream().filter(e -> e.getGroupType()!=null).filter(e -> e.getGroupType().equals(GroupType.PRACTICE)).map(e -> Long.parseLong(e.getGroupId())).distinct().collect(Collectors.toList());
+
+            Map<String, List<MusicGroup>> musicGroupMap = new HashMap<>();
+            Map<Long, List<VipGroup>> vipGroupMap = new HashMap<>();
+            Map<Long, List<PracticeGroup>> practiceGroupMap = new HashMap<>();
+            if (musicGroupIds.size() > 0) {
+                musicGroupMap = musicGroupDao.getMusicGroupByIds(musicGroupIds).stream().collect(Collectors.groupingBy(MusicGroup::getId));
+            }
+            if (vipGroupIds.size() > 0) {
+                vipGroupMap = vipGroupDao.getVipGroupByIds(vipGroupIds).stream().collect(Collectors.groupingBy(VipGroup::getId));
+            }
+            if (practiceGroupIds.size() > 0) {
+                practiceGroupMap = practiceGroupDao.getWithIds(practiceGroupIds).stream().collect(Collectors.groupingBy(PracticeGroup::getId));
+            }
+            for (StudentVisitCourseHomeWorkDto homeWork : dataList) {
+                if (GroupType.MUSIC.equals(homeWork.getGroupType()) && musicGroupMap.containsKey(homeWork.getGroupId())) {
+                    homeWork.setGroupName(musicGroupMap.get(homeWork.getGroupId()).get(0).getName());
+                }
+                if (GroupType.VIP.equals(homeWork.getGroupType()) && vipGroupMap.containsKey(Long.parseLong(homeWork.getGroupId()))) {
+                    homeWork.setGroupName(vipGroupMap.get(Long.parseLong(homeWork.getGroupId())).get(0).getName());
+                }
+                if (GroupType.PRACTICE.equals(homeWork.getGroupType()) && practiceGroupMap.containsKey(Long.parseLong(homeWork.getGroupId()))) {
+                    homeWork.setGroupName(practiceGroupMap.get(Long.parseLong(homeWork.getGroupId())).get(0).getName());
+                }
+            }
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
 }

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.biz.service.ContractService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -24,7 +25,7 @@ public class SysUserContractsServiceImpl extends BaseServiceImpl<Long, SysUserCo
 
 	@Override
 	public List<SysUserContracts> getUserContractWithType(Integer userId, SysUserContracts.ContractType contractType) {
-		return sysUserContractsDao.getUserContractWithType(userId, contractType);
+		return sysUserContractsDao.getUserContractWithType(userId, contractType, ContractService.CONTRACT_VERSION);
 	}
 
 	@Override

+ 23 - 23
mec-biz/src/main/resources/config/contracts/product.ftl

@@ -109,7 +109,7 @@
                 </div>
                 <#if studentInfo.grade?default("")?trim?length gt 1>
                 <div class="iInfo">
-                    <span>所在班级:${studentInfo.grade!} ${studentInfo.clazz!}</span>
+                    <span>所在学校与班级:${studentInfo.grade!} ${studentInfo.clazz!}</span>
                 </div>
                 </#if>
                 <#if studentInfo.subject.name?default("")?trim?length gt 1>
@@ -119,43 +119,43 @@
                 </#if>
             </div>
         </div>
-        <div class="underline">(本协议中“乙方“指学员及家长;”乙方学员“指购买甲方产品或服务的学员;”乙方家长“仅指乙方学员的法定监护人。)</div>
+        <div>(本协议中“乙方“指学员及家长;”乙方学员“指购买甲方产品或服务的学员;”乙方家长“仅指乙方学员的法定监护人。)</div>
 
         <p class="underline bold">重要须知:在注册或购买使用甲方提供的产品、服务之前,请您务必审慎阅读、充分理解本使用协议各条款内容, 特别是免除或者限制甲方责任的条款、对您权利进行限制的条款、约定争议解决方式和司法管辖的条款等。 限制、免责条款或者其他涉及您重大权益的条款可能以加粗、加下划线等形式提示您重点注意。您注册或购买使用甲方提供的产品和服务,均视为您同意本使用协议,以及同意接受本使用协议的约束。</p>
+        <p class="underline bold">如无特别说明 ,下列术语在本协议中的定义为:管乐迷平台(下称“本平台”),即管乐迷APP;AMR器乐练习系统(下称“本系统”)指由甲方提供和维护的器乐教学全流程辅助系统。乙方通过该系统完成器乐学习。本系统提供包括媒体资料,老师互动点评,课前中后管理等服务。具体功能以该系统实际提供为准,且该系统将根据实际需要进行调整和增减,乙方使用平台时还需遵守本服务协议。</p>
+
         <h2>一、注册及购买</h2>
-        <div class="underline bold">1、无论是否源自甲方建议,乙方选择报名注册加入乐团,或选择购买使用甲方提供的产品和服务,均为乙方自主意愿的表达及独立自主的选择。</div>
+        <div>1、无论是否源自甲方建议,乙方选择报名注册加入乐团,或选择购买使用甲方提供的产品和服务,均为乙方自主意愿的表达及独立自主的选择。</div>
         2、乙方完成所选产品或服务缴费后,甲方向乙方开具加盖公司印章的收款凭据,乙方务必妥善保管。
 
         <h2>二、乐团及上课规范</h2>
         1、乙方学员在应服从甲方的管理,遵守甲方的制度。<br />
-        2、乙方学员应按时到达甲方指定上课地点,好课前准备;如发生迟到、早退或因其他乙方原因未能按时上课的,视为乙方学员放弃该次课程,为避免影响老师后续课程的正常进行,授课老师除完成原定时间安排的授课外,将不再提供额外延长课时,也不会因乙方学员缺席而暂停教学课程。<br />
+        2、乙方学员应按时到达甲方指定上课地点,好课前准备;如发生迟到、早退或因其他乙方原因未能按时上课的,视为乙方学员放弃该次课程,为避免影响老师后续课程的正常进行,授课老师除完成原定时间安排的授课外,将不再提供额外延长课时,也不会因乙方学员缺席而暂停教学课程。<br />
         3、乙方学员不得携带任何食品进入教室,所有进食应在课前完成;进入教室后,不得大声喧哗、追逐嬉戏,应当听从授课老师的安排;乙方学员应爱护公共财产和教学设施,严禁在桌椅上刻、划、涂、写等不文明行为;乙方学员未经授课老师同意,不得擅自使用教室内的乐器、音响、电视、空调等器材、设施,如造成此类器材、设施损坏的,乙方应照价赔偿。<br />
         4、未经授课老师同意,乙方家长不得进入课堂,以免影响老师和学员上课;为保证训练质量及进度,乙方学员应保证按照指导老师或教务老师所提出的要求在家练习,遇到专业问题应及时向指导老师请教,非专业问题可随时向教务老师反映。<br />
-        <span class="bold">5、乙方家长应教育及监督乙方学员务必注意个人安全,妥善保管个人财物,对于非甲方原因造成的人身安全事故或财物损失,由乙方自行承担。</span><br />
+        5、乙方家长应教育及监督乙方学员务必注意个人安全,妥善保管个人财物,对于非甲方原因造成的人身安全事故或财物损失,由乙方自行承担。<br />
         6、对于乐团学员出现以下情形时,甲方有权对乙方学员作出警告,如甲方作出警告后,乙方学员仍然不遵守甲方的管理制度的,甲方有权对其作出退团等处分。<br />
-        6.1上课、排练时不服从管理和指导,不遵守纪律,影响其他团员的正常上课、排练;<br />
-        6.2一个学期内发生两次及以上旷课行为;<br />
-        6.3一个学期内发生两次及以上未按老师要求回传视频作业的情形;<br />
-        6.4无特殊原因连续七天不练习,影响团员和乐团的整体水平的。<br />
+        &#160;&#160;6.1上课、排练时不服从管理和指导,不遵守纪律,影响其他团员的正常上课、排练;<br />
+        &#160;&#160;6.2一个学期内发生两次及以上旷课行为;<br />
+        &#160;&#160;6.3一个学期内发生两次及以上未按老师要求回传视频作业的情形;<br />
+        &#160;&#160;6.4无特殊原因连续七天不练习,影响团员和乐团的整体水平的。<br />
 
         <h2>三、请假</h2>
-        1、基于教学进度和质量保证,甲方对于课程延续性有严格要求,因此乙方学员应尽量参加课程,无特殊情况则应避免请假。<br />
-        <div class="bold">2、VIP课程学员如有特殊情况需要请假的,应提前4小时以上通过管乐迷App完成请假,否则当次课程将视同发生,系统将自动记录结算课时并扣除相应课程费用。</div>
-        3、VIP学员如遇特殊情况需要长期请假时,可向甲方/授课老师申请办理临时休会。学员可在6个月内申请复学,超过6个月未申请复学的,甲方有权按自动退会处理。<span class="bold">VIP课程为一对二课程的,其中一位学员申请临时休会的,还需征得同组另一位学员的同意后方可申请休会。否则将不予受理。</span><br />
-        <span class="bold">4、鉴于团课的特殊性,团课学员个人请假,当次课程仍视同发生,系统将自动记录结算课时并扣除相应课程费用。</span><br />
-        5、每期课程均有相对应的有效期,乙方应在有效期内完成课程,10次课一期的,自交费之日起4个月内有效;20次课一期的,自交费之日起8个月内有效;40次课一期的,自交费之日起16个月内有效。<span class="bold">如果由于指导老师请假等原因造成课程不能如期完成的,课程有效期将顺延;如课程超出有效期限,乙方所缴纳的课程费用将自动扣除逾期未完成的课时后自动清零。</span><br />
+        1、基于教学进度和质量保证,甲方对于课程延续性有严格要求,因此乙方学员应尽量参加课程,无特殊情况则应避免请假。
+        <div>2、VIP课程学员如有特殊情况需要请假的,应提前4小时以上通过管乐迷APP完成请假,否则当次课程将视同发生,系统将自动记录结算课时并扣除相应课程费用。</div>
+        VIP课程为一对二课程的,其中一位学员申请临时休会的,还需征得同组另一位学员的同意后方可申请休会。否则将不予受理。
+        <div>3、鉴于团体课的特殊性,团体课学员个人请假,当次课程仍视同发生。</div>
 
         <h2>四、退费</h2>
-        <span class="bold">1、乐器、教辅、配件等,未经签收,自购买缴款之日起15日内提出申请可全额退还,超过上述期限则不予受理退费申请;非因商品本身存在质量问题,一经签收,无论使用与否,均不予退费;</span><br />
-        <span class="bold">2、乐保服务,在维修老师下校检查前提出申请可全额退还,下校检查日过后则不予退费;</span><br />
-        <span class="bold">3、非个别课程,包括但不限于声部基础课、合奏课、基础技能课、网基课、集训课、VIP课程项下一对二等,自购买缴款之日起15日内提出申请可全额退还,超过上述期限或实际已发生课时消耗的则一律不予受理退费;</span><br />
-        <span class="bold">4、正价购买的个别课程,包括但不限于VIP课程项下一对一、网管课等,课程有效期内可申请退费,可退款金额为:购买金额-课时原价*已消耗课时数量;</span><br />
-        <span class="bold">5、活动期间以优惠价格购买的个别课程,自购买缴款之日起15日内提出申请可全额退还,超过上述期限或实际已发生课时消耗的则一律不予受理退费;</span><br />
-        <span class="bold highlight">从您提出退费申请到您收到退款的时间,会因为您订购时所选择的付款方式而有所不同,通常符合规定的退费会在15个工作日内完成退款操作。</span><br />
+        1、乐器、教辅、配件等,未经签收,自购买缴款之日起15日内提出申请可全额退还,超过上述期限则不予受理退费申请;非因商品本身存在质量问题,一经签收,无论使用与否,均不予退费;<br />
+        2、乐保服务,在维修老师下校检查前提出申请可全额退还,下校检查日过后则不予退费;<br />
+        3、AMR器乐练习系统服务,自购买缴款之日起15日内提出申请可全额退还,超过上述期限或实际已提供相应服务则一律不予受理退费;<br />
+        4、正价购买的个别课程,包括但不限于VIP课程项下一对一、网管课等,课程有效期内可申请退费,可退款金额为:购买金额-课时原价*已消耗课时数量;<br />
+        5、活动期间以优惠价格购买的个别课程,自购买缴款之日起15日内提出申请可全额退还,超过上述期限或实际已发生课时消耗的则一律不予受理退费;<br />
 
         <h2>五、违约责任</h2>
-        1、当事人一方不履行合同义务或者履行合同义务不符合约定的,均构成违约,守约方有权以书面通知的方式要求违约方纠正其违约行为并采取及时、有效的补救措施消除违约后果,并赔偿守约方因违约方之违约行为而遭致的损失。若违约方在收到守约方的上述通知后5日内未纠正其违约行为的,守约方有权在做出书面通知的情况下,单方解除本协议,违约方应赔偿守约方因此遭致的全部损失。<br />
-        2、乙方应始终维护甲方的知识产权以及品牌形象,本协议期间以及本协议因任何原因失效、被撤销、解除或终止后,均不得直接或间接通过任何公众媒体(包括但不限于传统大众媒体,以及微信、微博、博客、直播平台等社交平台)发表损害甲方(包括但不限于其产品、服务及甲方授课老师)声誉的言论或实施任何类似行为,否则乙方应赔偿甲方因此遭受的全部损失。<br />
+        1、当事人一方不履行合同义务或者履行合同义务不符合约定的,均构成违约,守约方有权以书面通知的方式要求违约方纠正其违约行为并采取及时、有效的补救措施消除违约后果,并赔偿守约方因违约方之违约行为而遭致的损失。若违约方在收到守约方的上述通知后5日内未纠正其违约行为的,守约方有权在做出书面通知的情况下,单方解除本协议,违约方应赔偿守约方因此遭致的全部损失,包括但不限于守约方因此支付的律师费,差旅费等。<br />
+        2、乙方应始终维护甲方的知识产权以及品牌形象,本协议期间以及本协议因任何原因失效、被撤销、解除或终止后,均不得直接或间接通过任何公众媒体(包括但不限于传统大众媒体,以及微信、微博、博客、直播平台等社交平台)发表损害甲方(包括但不限于其产品、服务及甲方授课老师)声誉的言论或实施任何类似行为,否则乙方应赔偿甲方因此遭受的全部损失,包括但不限于守约方因此支付的律师费,差旅费等。<br />
 
         <h2>六、保密条款</h2>
         1、双方对本协议的条款、本协议的签订及履行情况以及通过签订和履行本协议而获知的对方及对方关联公司的任何信息均负有保密义务。任何一方不得以任何形式透露给第三方(有关法律法规要求和甲乙双方的法律、会计顾问、授权雇员除外),也不得擅自使用。<br />
@@ -176,7 +176,7 @@
         3、双方确认并同意,本协议的电子版本与纸质版本具有同等法律效力。双方发生争议时,电子合同打印件可作为证据提交。双方通过网络以在线方式签订本协议的 ,则以乙方点击“确认”或“同意”等相关按钮或以电子签名的方式作为对合同内容的同意、确认以及本协议的签署;如双方签订纸质版本协议的,则本协议壹式贰份,甲方盖公章或合同专用章并且乙方签字作为有效签署方式,并且双方各执壹份,每份具有同等法律效力。<br />
         4、本协议自双方按照本协议约定方式签署之日起生效,有效期至双方履行完本协议约定的全部义务时止。<br />
         5、本协议未尽事宜或对本协议的任何修改、补充,有双方另行协商后以签订补充协议的方式解决,补充协议与本协议具有同等法律效力;双方没有约定也没有协商一致的,遵照相关法律法规规定执行。<br />
-        6、双方因履行本协议而相互发出或者提供的所有通知、文件、资料,均以本协议中所列明的电话、App推送消息送达,乙方如果变更电话号码的,应当自变更后1日内通知甲方且获得甲方确认,甲方通过电话、App方式无法联系乙方或者甲方认为必要时,甲方也可以通过特快专递至乙方住址的方式向乙方发出上述任何通知、文件、资料等,并在甲方寄出特快专递后第5日视为送达成功。<br />
+        6、双方因履行本协议而相互发出或者提供的所有通知、文件、资料,均以本协议中所列明的电话、APP推送消息送达,乙方如果变更电话号码的,应当自变更后1日内通知甲方且获得甲方确认,甲方通过电话、APP方式无法联系乙方或者甲方认为必要时,甲方也可以通过特快专递至乙方住址的方式向乙方发出上述任何通知、文件、资料等,并在甲方寄出特快专递后第5日视为送达成功。<br />
 
         <div class="signature">
         	<#if isShowVisualSeal>

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

@@ -640,7 +640,7 @@
         LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
         LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
         WHERE
-        cg.type_ IN ('HIGH_ONLINE')
+        cg.type_ IN ('HIGH', 'HIGH_ONLINE')
         AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
         <if test="organIds!=null and organIds!=''">
             AND FIND_IN_SET(mg.organ_id_, #{organIds})

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

@@ -290,7 +290,7 @@
 	</sql>
 
 	<select id="findExtraExercises" resultMap="ExtraExerciseStudentsDto">
-		SELECT eer.*,u.username_,ee.title_,o.name_ organ_name_,ee.teacher_id_,ee.expire_date_
+		SELECT eer.*,u.username_,ee.title_,ee.content_,o.name_ organ_name_,ee.teacher_id_,ee.expire_date_
 		FROM extracurricular_exercises_reply eer
 		left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
 		left join sys_user u on eer.user_id_ = u.id_

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

@@ -473,7 +473,7 @@
 		LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
 		LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
 		WHERE
-		cg.type_ IN ('HIGH_ONLINE')
+		cg.type_ IN ('HIGH', 'HIGH_ONLINE')
 		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
 		<if test="organIds!=null and organIds.size()>0">
 			AND mg.organ_id_ IN

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

@@ -664,15 +664,21 @@
     </select>
 
     <select id="findUserMusicGroupCooperationOrgan" resultMap="com.ym.mec.biz.dal.dao.CooperationOrganDao.CooperationOrgan">
-        SELECT co.name_,s.name_ linkman_
+        SELECT co.name_
         FROM music_group mg
         LEFT JOIN student_registration sr ON sr.music_group_id_ = mg.id_
         LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
-        LEFT JOIN school s ON s.id_ = mg.school_id_
         WHERE sr.user_id_ = #{userId}
-        AND mg.status_ = 'PROGRESS'
-        AND sr.music_group_status_ = 'NORMAL'
+        AND mg.status_ IN ('PREPARE','PROGRESS','PAUSE','CLOSE')
+        AND sr.payment_status_ = 2
         ORDER BY sr.id_ ASC
         LIMIT 1
     </select>
+
+    <select id="getMusicGroupByIds" resultMap="MusicGroup">
+        SELECT * FROM music_group WHERE id_ IN
+        <foreach collection="ids" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>

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

@@ -433,6 +433,18 @@
 					#{organId}
 				</foreach>
 			</if>
+			<if test="musicGroupId!=null and musicGroupId!=''">
+				AND mgpc.music_group_id_ = #{musicGroupId}
+			</if>
+			<if test="cooperationOrganId!=null">
+				AND mg.school_id_ = #{cooperationOrganId}
+			</if>
+			<if test="eduTeacherId!=null">
+				AND mg.educational_teacher_id_=#{eduTeacherId}
+			</if>
+			<if test="search!=null and search!=''">
+				AND (mgpcd.user_id_=#{search} OR su.username_ LIKE CONCAT('%', #{search}, '%'))
+			</if>
 		</where>
 	</sql>
 
@@ -463,7 +475,8 @@
 			LEFT JOIN cooperation_organ co ON mg.school_id_ = co.id_
 		<include refid="queryArrearageStudentsCondition"/>
 		GROUP BY
-			mgpc.music_group_id_,mgpcd.user_id_;
+			mgpc.music_group_id_,mgpcd.user_id_
+		<include refid="global.limit" />
 	</select>
 
 	<select id="countArrearageStudents" resultType="int">
@@ -473,9 +486,31 @@
 			music_group_payment_calender_detail mgpcd
 			LEFT JOIN music_group_payment_calender mgpc ON mgpcd.music_group_payment_calender_id_ = mgpc.id_
 			LEFT JOIN music_group mg ON mgpc.music_group_id_ = mg.id_
+			<if test="search!=null and search!=''">
+				LEFT JOIN sys_user su ON mgpcd.user_id_ = su.id_
+			</if>
 		<include refid="queryArrearageStudentsCondition"/>
 	</select>
 
+	<select id="getNoPaymentStudentMusicGroups" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.MusicGroup">
+		SELECT
+			DISTINCT mg.id_,mg.name_
+		FROM
+		music_group_payment_calender_detail mgpcd
+		LEFT JOIN music_group_payment_calender mgpc ON mgpcd.music_group_payment_calender_id_ = mgpc.id_
+		LEFT JOIN music_group mg ON mgpc.music_group_id_ = mg.id_
+		WHERE mg.status_ = 'PROGRESS'
+			AND DATE_FORMAT( NOW(), '%Y-%m-%d' ) >= DATE_FORMAT( mgpc.payment_valid_start_date_, '%Y-%m-%d' )
+			AND mgpcd.payment_status_ = 'NON_PAYMENT'
+			AND mgpcd.expect_amount_ > 0
+			<if test="organIds!=null and organIds.size()>0">
+				AND mg.organ_id_ IN
+				<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+					#{organId}
+				</foreach>
+			</if>
+	</select>
+
     <update id="updateNoPaymentAndZeroPaymentStatus">
 		UPDATE music_group_payment_calender_detail SET payment_status_ = 'PAID_COMPLETED',actual_amount_ = 0,update_time_ = NOW()
 		WHERE music_group_payment_calender_id_ = #{calenderId} AND expect_amount_ = 0 AND payment_status_ = 'NON_PAYMENT'

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

@@ -109,7 +109,7 @@
                 </if>
             </if>
             <if test="organId != null and organId != ''">
-                FIND_IN_SET(mg.organ_id_,#{organId})
+                AND FIND_IN_SET(mg.organ_id_,#{organId})
             </if>
         </where>
     </sql>

+ 62 - 6
mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml

@@ -50,7 +50,7 @@
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="StudentCourseHomework">
-		SELECT * FROM student_course_homework WHERE id_ = #{id} 
+		SELECT * FROM student_course_homework WHERE id_ = #{id}
 	</select>
 
     <!-- 全查询 -->
@@ -128,7 +128,7 @@
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
-		DELETE FROM student_course_homework WHERE id_ = #{id} 
+		DELETE FROM student_course_homework WHERE id_ = #{id}
 	</delete>
 
     <resultMap type="com.ym.mec.biz.dal.dto.CourseHomeworkListDto" id="CourseHomeworkDto">
@@ -395,10 +395,10 @@
     <sql id="queryAllCondition">
         <where>
             <if test="courseScheduleId!=null">
-                course_schedule_id_=#{courseScheduleId}
+               AND course_schedule_id_=#{courseScheduleId}
             </if>
             <if test="isReplied!=null">
-                is_replied_=#{isReplied}
+               AND is_replied_=#{isReplied}
             </if>
         </where>
     </sql>
@@ -415,13 +415,69 @@
     </select>
 
     <delete id="delByCourseScheduleId">
-		DELETE FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId} 
+		DELETE FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId}
 	</delete>
-    
+
     <delete id="batchDelByCourseScheduleId">
 		DELETE FROM student_course_homework WHERE course_schedule_id_ IN
 		<foreach collection="courseScheduleIdList" item="courseScheduleId" open="(" close=")" separator=",">
 			#{courseScheduleId}
 		</foreach>
 	</delete>
+
+    <resultMap id="StudentVisitCourseHomeWorkDto" type="com.ym.mec.biz.dal.dto.StudentVisitCourseHomeWorkDto">
+        <result column="groupType" property="groupType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="groupId" property="groupId"/>
+        <result column="courseName" property="courseName"/>
+        <result column="createTime" property="createTime"/>
+        <result column="teacherName" property="teacherName"/>
+        <result column="content" property="content"/>
+        <result column="status" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="isReplied" property="isReplied" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="isView" property="isView" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+    </resultMap>
+    <select id="getStudentCourseHomeWorks" resultMap="StudentVisitCourseHomeWorkDto">
+        SELECT sch.course_schedule_id_ courseScheduleId,
+        cs.group_type_          groupType,
+        cs.music_group_id_      groupId,
+        cs.name_                courseName,
+        sch.create_time_        createTime,
+        t.real_name_            teacherName,
+        ch.content_             content,
+        sch.status_             status,
+        sch.is_replied_         isReplied,
+        sch.is_view_            isView
+        FROM student_course_homework sch
+        LEFT JOIN course_homework ch ON ch.id_ = sch.course_homework_id_
+        LEFT JOIN course_schedule cs ON cs.id_ = sch.course_schedule_id_
+        LEFT JOIN sys_user t ON t.id_ = cs.actual_teacher_id_
+        <include refid="homeWorkCondition"/>
+        ORDER BY sch.create_time_ DESC
+        <include refid="global.limit"/>
+    </select>
+
+    <select id="getStudentCourseHomeWorksCount" resultType="int">
+        SELECT COUNT(*) FROM student_course_homework sch
+        <include refid="homeWorkCondition"/>
+    </select>
+
+    <sql id="homeWorkCondition">
+        <where>
+            <if test="userId!=null">
+                AND sch.user_id_=#{userId}
+            </if>
+            <if test="status!=null">
+                AND sch.status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="isReplied!=null">
+                AND sch.is_replied_=#{isReplied,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="startTime != null">
+                AND sch.create_time_ >=#{startTime}
+            </if>
+            <if test="startTime != null">
+                <![CDATA[   AND sch.create_time_<=#{startTime}
+            ]]></if>
+        </where>
+    </sql>
 </mapper>

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

@@ -359,7 +359,7 @@
 	</select>
 
 	<select id="queryAuditPage" parameterType="map" resultMap="StudentPaymentRouteOrderMap">
-		SELECT spro.*,u.username_,u.phone_,s.name_ school_name_,o.name_ organ_name_,ou.username_ operator_name_ FROM student_payment_route_order spro
+		SELECT spro.*,u.username_,u.phone_,s.name_ school_name_,o.name_ organ_name_,ou.real_name_ operator_name_ FROM student_payment_route_order spro
         left join sys_user u on spro.user_id_ = u.id_
         left join sys_user ou on ou.id_ = spro.create_by_
         left join cooperation_organ s on s.id_ = spro.school_id_

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

@@ -634,14 +634,12 @@
     </update>
 
     <select id="findStudentByMusicGroupIdAndUserId" resultMap="StudentRegistration">
-        SELECT s.name_ school_name_,s2.name_ subject_name_,mgsp.kit_group_purchase_type_ kit_group_purchase_type_,
-        mgsp.deposit_fee_, co.name_ remark_ FROM student_registration sr
+        SELECT s.name_ school_name_,s2.name_ subject_name_,co.name_ remark_ FROM student_registration sr
         LEFT JOIN music_group mg ON mg.id_ =sr.music_group_id_
         LEFT JOIN school s ON mg.school_id_ = s.id_
         LEFT JOIN subject s2 ON sr.actual_subject_id_ = s2.id_
-        LEFT JOIN music_group_subject_plan mgsp ON mgsp.subject_id_ = sr.actual_subject_id_ AND mgsp.music_group_id_ = sr.music_group_id_
         LEFT JOIN cooperation_organ co ON mg.cooperation_organ_id_ = co.id_
-        WHERE sr.music_group_id_ = #{musicGroupId} AND sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT' LIMIT 1
+        WHERE sr.music_group_id_ = #{musicGroupId} AND sr.user_id_ = #{userId} AND sr.payment_status_ =2 ORDER BY sr.id_ DESC LIMIT 1
     </select>
     <select id="queryStudentMusicGroup" resultType="java.lang.String">
         SELECT DISTINCT sr.music_group_id_ FROM student_registration sr

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

@@ -12,6 +12,7 @@
 		<result column="url_" property="url" />
 		<result column="memo_" property="memo" />
 		<result column="create_time_" property="createTime" />
+		<result column="version_" property="version" />
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -32,8 +33,8 @@
 		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
 			AS ID FROM DUAL </selectKey> -->
 		INSERT INTO sys_user_contracts
-		(id_,user_id_,contract_no_,type_,url_,memo_,create_time_)
-		VALUES(#{id},#{userId},#{contractNo},#{type},#{url},#{memo},#{createTime})
+		(id_,user_id_,contract_no_,type_,url_,memo_,create_time_,version_)
+		VALUES(#{id},#{userId},#{contractNo},#{type},#{url},#{memo},#{createTime},#{version})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -85,7 +86,7 @@
 	</select>
 
 	<select id="getUserContractWithType" resultMap="SysUserContracts">
-		SELECT * FROM sys_user_contracts WHERE user_id_=#{userId} AND type_=#{contractType}
+		SELECT * FROM sys_user_contracts WHERE user_id_=#{userId} AND type_=#{contractType} AND version_=#{version}
 	</select>
 
 	<select id="getLatestUserContract" resultMap="SysUserContracts">

+ 30 - 9
mec-biz/src/main/resources/config/mybatis/TeacherCourseStatisticsMapper.xml

@@ -22,10 +22,32 @@
         <result column="phone_" jdbcType="VARCHAR" property="phone"/>
         <result column="organ_name_" jdbcType="VARCHAR" property="organName"/>
         <result column="month_str_" jdbcType="VARCHAR" property="monthStr"/>
-        <collection property="subjectList" ofType="com.ym.mec.biz.dal.entity.Subject">
-            <result column="subject_id" property="id"/>
-            <result column="subject_name" property="name"/>
-        </collection>
+        <association property="subjectList"
+                     select="com.ym.mec.biz.dal.dao.SubjectDao.findBySubjectByIdList"
+                        column="{subjectIdList = tcs.subject_id_list_}"/>
+    </resultMap>
+
+    <resultMap id="TeacherCourseStatistics1" type="com.ym.mec.biz.dal.entity.TeacherCourseStatistics">
+        <result column="id_" jdbcType="BIGINT" property="id"/>
+        <result column="user_id_" jdbcType="INTEGER" property="userId"/>
+        <result column="organ_id_" jdbcType="INTEGER" property="organId"/>
+        <result column="month_" jdbcType="DATE" property="month"/>
+        <result column="subject_id_list_" jdbcType="VARCHAR" property="subjectIdList"/>
+        <result column="vip_course_num_" jdbcType="INTEGER" property="vipCourseNum"/>
+        <result column="music_course_num_" jdbcType="INTEGER" property="musicCourseNum"/>
+        <result column="practice_course_num_" jdbcType="INTEGER" property="practiceCourseNum"/>
+        <result column="expect_music_course_salary_" jdbcType="DECIMAL" property="expectMusicCourseSalary"/>
+        <result column="expect_vip_course_salary_" jdbcType="DECIMAL" property="expectVipCourseSalary"/>
+        <result column="expect_practice_course_salary_" jdbcType="DECIMAL" property="expectPracticeCourseSalary"/>
+        <result column="expect_total_salary_" jdbcType="DECIMAL" property="expectTotalSalary"/>
+        <result column="low_salary" jdbcType="DECIMAL" property="lowSalary"/>
+        <result column="average_class_minutes_" jdbcType="INTEGER" property="averageClassMinutes"/>
+        <result column="statistics_date_time_" jdbcType="DATE" property="statisticsDateTime"/>
+        <result column="group_type_" jdbcType="VARCHAR" property="groupType"/>
+        <result column="real_name_" jdbcType="VARCHAR" property="realName"/>
+        <result column="phone_" jdbcType="VARCHAR" property="phone"/>
+        <result column="organ_name_" jdbcType="VARCHAR" property="organName"/>
+        <result column="month_str_" jdbcType="VARCHAR" property="monthStr"/>
     </resultMap>
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.TeacherCourseStatistics" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
@@ -61,7 +83,7 @@
     </delete>
 
     <!-- 查找下月排课小于基准课酬的老师-->
-    <select id="findUserByWarringSalary" resultMap="TeacherCourseStatistics"><![CDATA[
+    <select id="findUserByWarringSalary" resultMap="TeacherCourseStatistics1"><![CDATA[
         SELECT ctt.expect_total_salary_, t.id_ user_id_,t.organ_id_,t.subject_id_ subject_id_list_,
                ctt.average_class_minutes_
         FROM teacher t
@@ -84,7 +106,7 @@
           AND t.organ_id_ IS NOT NULL
         ]]>
   </select>
-    <select id="findUserCourseSalaryByUserIds" resultMap="TeacherCourseStatistics">
+    <select id="findUserCourseSalaryByUserIds" resultMap="TeacherCourseStatistics1">
         SELECT SUM(csts.expect_salary_) expect_total_salary_, COUNT(csts.id_) music_course_num_, csts.user_id_, csts.group_type_
         FROM course_schedule_teacher_salary csts LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
         WHERE csts.user_id_ IN
@@ -96,12 +118,11 @@
   ]]></select>
 
     <select id="queryPage" resultMap="TeacherCourseStatistics" parameterType="map">
-        SELECT tcs.*,u.real_name_,u.phone_,o.name_ organ_name_,DATE_FORMAT(tcs.month_,'%Y年%m月') month_str_,
-        s.id_ subject_id,s.name_ subject_name FROM teacher_course_statistics tcs
+        SELECT tcs.*,u.real_name_,u.phone_,o.name_ organ_name_,DATE_FORMAT(tcs.month_,'%Y年%m月') month_str_
+        FROM teacher_course_statistics tcs
         LEFT JOIN sys_user u ON tcs.user_id_ = u.id_
         LEFT JOIN teacher t ON t.id_ = tcs.user_id_
         LEFT JOIN organization o ON tcs.organ_id_ = o.id_
-        LEFT JOIN subject s ON FIND_IN_SET(s.id_,tcs.subject_id_list_)
         <include refid="queryParams"/>
         <include refid="global.limit"/>
     </select>

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

@@ -1006,4 +1006,11 @@
             </if>
         </where>
     </select>
+
+    <select id="getVipGroupByIds" resultMap="VipGroup">
+        SELECT * FROM vip_group WHERE id_ IN
+        <foreach collection="ids" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/config/WebMvcConfig.java

@@ -46,7 +46,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 
 		registry.addInterceptor(mdcInterceptor).addPathPatterns(includePathPatterns).excludePathPatterns(excludePathPatterns);
 
-		registry.addInterceptor(operationLogInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
+		registry.addInterceptor(operationLogInterceptor).addPathPatterns(includePathPatterns).excludePathPatterns(excludePathPatterns);
 	}
 
 	@Bean

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/config/WebMvcConfig.java

@@ -61,7 +61,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		excludePathPatterns.add("/login");
 		registry.addInterceptor(mdcInterceptor).addPathPatterns(includePathPatterns).excludePathPatterns(excludePathPatterns);
 
-		registry.addInterceptor(operationLogInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
+		registry.addInterceptor(operationLogInterceptor).addPathPatterns(includePathPatterns).excludePathPatterns(excludePathPatterns);
 	}
 
 	/**

+ 6 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -24,6 +24,7 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -178,6 +179,7 @@ public class TeacherCourseScheduleController extends BaseController {
 
     @ApiOperation(value = "课时调整")
     @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    @AuditLogAnnotation(operateName = "课时调整")
     public Object classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto){
         if(Objects.isNull(classDateAdjustDto.getId())){
             return failed("请指定课程!");
@@ -193,6 +195,9 @@ public class TeacherCourseScheduleController extends BaseController {
         	return failed("客户端只能调整VIP课");
         }
         Date now = new Date();
+        if(now.compareTo(oldCourseSchedule.getStartClassTime())>0){
+            throw new BizException("进行中或已结束课程不可调整");
+        }
         
         //默认开课前4小时内,可调整,如果全员请假,可在当天24小时前调整
         SysConfig advanceLeaveHoursConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_TEACHER_COURSE_ADJUST_DEFAULT_HOURS);
@@ -331,6 +336,7 @@ public class TeacherCourseScheduleController extends BaseController {
 
     @ApiOperation(value = "课程批量调整")
     @PostMapping("/courseAdjustOnlyWithClassDate")
+    @AuditLogAnnotation(operateName = "课程批量调整")
     public HttpResponseResult courseAdjustOnlyWithClassDate(@RequestBody List<CourseSchedule> courseSchedules){
         SysUser user = sysUserFeignService.queryUserInfo();
         if(null==user){

+ 4 - 25
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -1210,10 +1210,6 @@ public class ExportController extends BaseController {
                 if (cooperationOrgan != null) {
                     row.setCooperationOrganName(cooperationOrgan.getName());
                 }
-                if (row.getSchoolName() == null && cooperationOrgan != null) {
-                    //linkman 赋予教学点值
-                    row.setSchoolName(cooperationOrgan.getLinkman());
-                }
             }
             if (row.getMusicGroupId() != null && row.getMusicGroupId().equals("null")) {
                 row.setMusicGroupId("");
@@ -1294,26 +1290,11 @@ public class ExportController extends BaseController {
                 if (row.getNextPaymentDate() != null) {
                     row.setNextPaymentDateStr(DateUtil.format(row.getNextPaymentDate(), DateUtil.DEFAULT_PATTERN));
                 }
-                if (Objects.isNull(row.getCarePackage()) || row.getCarePackage().equals(0)) {
-                    row.setCarePackageStr("不可用");
-                } else if (row.getCarePackage().equals(1)) {
-                    row.setCarePackageStr("可用");
-                } else if (row.getCarePackage().equals(2)) {
-                    row.setCarePackageStr("已使用");
-                }
-                if (Objects.isNull(row.getComeOnPackage()) || row.getComeOnPackage().equals(0)) {
-                    row.setComeOnPackageStr("不可用");
-                } else if (row.getComeOnPackage().equals(1)) {
-                    row.setComeOnPackageStr("可用");
-                } else if (row.getComeOnPackage().equals(2)) {
-                    row.setComeOnPackageStr("已使用");
-                }
             }
             String[] header = {"学员编号", "学员姓名", "性别", "联系电话", "年级", "班级", "专业", "学员状态", "新增学员", "缴费金额",
-                    "下次缴费日期", "是否报名缴费", "是否激活", "是否有剩余VIP", "是否有剩余网管课", "欠费总额", "关心包", "加油包"};
+                        "下次缴费日期", "是否报名缴费", "是否激活", "是否有剩余VIP", "是否有剩余网管课", "欠费总额"};
             String[] body = {"userId", "realName", "gender", "phone", "currentGrade", "currentClass", "subjectName", "studentStatus", "isNewStudentStr",
-                    "courseFee", "nextPaymentDateStr", "paymentStatus.desc", "activeName", "hasVip ? '是' : '否'", "hasPractice ? '是' : '否'", "noPaymentAmount",
-                    "carePackageStr", "comeOnPackageStr"};
+                    "courseFee", "nextPaymentDateStr", "paymentStatus.desc", "activeName", "hasVip ? '是' : '否'", "hasPractice ? '是' : '否'","noPaymentAmount"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, musicGroupStudentsDtoPageInfo.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -2360,10 +2341,8 @@ public class ExportController extends BaseController {
             //如果合作单位不存在取学员的第一个乐团的合作单位和教学点
             if (row.getCooperationOrganName() == null) {
                 CooperationOrgan cooperationOrgan = musicGroupDao.findUserMusicGroupCooperationOrgan(row.getUserId());
-                row.setCooperationOrganName(cooperationOrgan.getName());
-                if (row.getSchoolName() != null) {
-                    //linkman 赋予教学点值
-                    row.setSchoolName(cooperationOrgan.getLinkman());
+                if (cooperationOrgan != null) {
+                    row.setCooperationOrganName(cooperationOrgan.getName());
                 }
             }
             if (row.getMusicGroupId() != null && row.getMusicGroupId().equals("null")) {

+ 25 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderDetailController.java

@@ -5,6 +5,7 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dto.MusicArrearageStudentDto;
 import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.page.ArrearageStudentsQueryInfo;
 import com.ym.mec.biz.service.EmployeeService;
 import com.ym.mec.common.page.PageInfo;
@@ -128,4 +129,28 @@ public class MusicGroupPaymentCalenderDetailController extends BaseController {
         }
         return succeed(musicGroupPaymentCalenderDetailService.queryArrearageStudents(queryInfo));
     }
+
+    @ApiOperation(value = "获取未缴费学员关联乐团列表")
+    @GetMapping("/getNoPaymentStudentMusicGroups")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalenderDetail/getNoPaymentStudentMusicGroups')")
+    public HttpResponseResult<List<MusicGroup>> getNoPaymentStudentMusicGroups(String organIds){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeService.get(sysUser.getId());
+            if (StringUtils.isBlank(organIds)) {
+                organIds = employee.getOrganIdList();
+            }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+                return failed("用户所在分部异常");
+            }else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if(!list.containsAll(Arrays.asList(organIds.split(",")))){
+                    return failed("非法请求");
+                }
+            }
+        }
+        return succeed(musicGroupPaymentCalenderDetailService.getNoPaymentStudentMusicGroups(organIds));
+    }
 }

+ 24 - 0
mec-web/src/main/java/com/ym/mec/web/controller/WebCourseHomeworkController.java

@@ -5,18 +5,26 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.page.CourseHomeWorkTemplateQueryInfo;
+import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
+import com.ym.mec.biz.dal.page.StudentCourseHomeWorkQueryInfo;
 import com.ym.mec.biz.service.CourseHomeworkService;
+import com.ym.mec.biz.service.StudentCourseHomeworkService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @Author zouxuan
@@ -33,6 +41,8 @@ public class WebCourseHomeworkController extends BaseController {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private EmployeeDao employeeDao;
+    @Autowired
+    private StudentCourseHomeworkService studentCourseHomeworkService;
 
     @ApiOperation(value = "分页查询作业列表")
     @GetMapping(value = "/queryHomePage")
@@ -57,4 +67,18 @@ public class WebCourseHomeworkController extends BaseController {
         return succeed(courseHomeworkService.queryHomePage(queryInfo));
     }
 
+
+    @ApiOperation(value = "获取学生作业记录")
+    @GetMapping(value = "/getStudentHomeWorks")
+    @PreAuthorize("@pcs.hasPermissions('webCurseHomework/getStudentHomeWorks')")
+    public HttpResponseResult getStudentHomeWorks(StudentCourseHomeWorkQueryInfo queryInfo){
+        if (queryInfo.getStartTime() != null) {
+            queryInfo.setStartTime(DateUtil.trunc(queryInfo.getStartTime()));
+        }
+        if (queryInfo.getEndTime() != null) {
+            queryInfo.setEndTime(DateUtil.getLastTimeWithDay(queryInfo.getEndTime()));
+        }
+        return succeed(studentCourseHomeworkService.getStudentHomeWorks(queryInfo));
+    }
+
 }

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduPracticeGroupController.java

@@ -18,6 +18,7 @@ import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.util.date.DateUtil;
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
@@ -172,6 +173,7 @@ public class EduPracticeGroupController extends BaseController {
 
     @ApiOperation("陪练课购买")
     @PostMapping(value = "/buyPracticeGroup")
+    @AuditLogAnnotation(operateName = "陪练课购买")
     public HttpResponseResult buyPracticeGroup(@RequestBody PracticeGroupBuyDto practiceGroupBuyParams){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {