浏览代码

Merge branch 'master' into adapay_delay_1231

周箭河 4 年之前
父节点
当前提交
b85a684a9a
共有 57 个文件被更改,包括 855 次插入264 次删除
  1. 2 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentStudentCourseDetailDao.java
  2. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupQuitDao.java
  3. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java
  4. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  5. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMessageDao.java
  6. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MapDto.java
  7. 15 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicCardDto.java
  8. 28 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentMusicGroupDto.java
  9. 45 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentSubTotalCourseTimesDto.java
  10. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SysMessageDto.java
  11. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherCourseSalaryDetail4WebDto.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ApprovalStatus.java
  13. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuit.java
  14. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  15. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageCourseQueryInfo.java
  16. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java
  17. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  18. 1 4
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentManageService.java
  19. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  20. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java
  21. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java
  22. 10 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java
  23. 34 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  24. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  25. 80 22
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  26. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentExtracurricularExercisesSituationServiceImpl.java
  27. 2 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  28. 45 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  29. 95 64
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java
  30. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  31. 16 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  32. 1 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  33. 3 3
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  34. 2 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  35. 7 5
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  36. 2 0
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml
  37. 3 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  38. 3 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml
  39. 15 15
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentStudentCourseDetailMapper.xml
  40. 10 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml
  41. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  42. 6 1
      mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml
  43. 10 10
      mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml
  44. 15 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  45. 24 13
      mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml
  46. 6 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  47. 35 26
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  48. 32 8
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  49. 45 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentAttendanceController.java
  50. 23 12
      mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  51. 4 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  52. 14 0
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Payment.java
  53. 31 10
      mec-web/src/main/java/com/ym/mec/web/controller/AdapayController.java
  54. 8 3
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  55. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java
  56. 2 8
      mec-web/src/main/java/com/ym/mec/web/controller/SysMessageController.java
  57. 6 0
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

+ 2 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentStudentCourseDetailDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.StudentSubTotalCourseTimesDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 
 import java.math.BigDecimal;
@@ -94,19 +95,10 @@ public interface MusicGroupPaymentStudentCourseDetailDao extends BaseDAO<Long, M
     List<MusicGroupPaymentStudentCourseDetail> queryByMusicGroupPaymentStudentCourseDetailId(List<Long> musicGroupPaymentCalenderDetailIdList);
 
     /**
-     * 获取乐团学员剩余可排课时长
-     *
-     * @param studentIds
-     * @return
-     */
-    List<Map<Integer, BigDecimal>> queryStudentSubTotalCourseTime(@Param("studentIds") Set<Integer> studentIds, @Param("musicGroupId") String musicGroupId);
-
-    /**
      * 获取学员关联的每种课程类型的剩余可排课时长
      *
-     * @param userId
      * @param musicGroupId
      * @return
      */
-    List<Map<Integer, Integer>> queryStudentSubTotalCourseTimes(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
+    List<StudentSubTotalCourseTimesDto> queryStudentSubTotalCourseTimes(@Param("musicGroupId") String musicGroupId);
 }

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

@@ -32,4 +32,12 @@ public interface MusicGroupQuitDao extends BaseDAO<Long, MusicGroupQuit> {
      * @return
      */
     List<MusicGroupQuit> getQuits(@Param("musicGroupId") String musicGroupId, @Param("userIds") List<Integer> userIds);
+    
+    /**
+     * 获取学生乐团最后一次退团记录
+     * @param userId
+     * @param musicGroupId
+     * @return
+     */
+    MusicGroupQuit queryByUserIdAndMusicGroupId(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java

@@ -109,4 +109,7 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
                                                                                @Param("teacherId") Integer teacherId,
                                                                                @Param("studentIds") List<Integer> studentIds);
 
+    List<StudentExtracurricularExercisesSituation> findServiceWithCourse(@Param("monday") String monday,
+                                                                         @Param("courseId") Long courseId);
+
 }

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

@@ -6,6 +6,7 @@ import java.util.Set;
 
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.Subject;
+
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.auth.api.entity.SysUser;
@@ -392,4 +393,11 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     Integer getMusicGroupSubjectStudentNum(@Param("musicGroupId") String musicGroupId, @Param("subjectIds") String subjectIds);
+    
+    /**
+     * 查询用户所在乐团信息
+     * @param userId
+     * @return
+     */
+    List<StudentMusicGroupDto> queryStudentMusicGroupInfo(Integer userId);
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMessageDao.java

@@ -1,15 +1,19 @@
 package com.ym.mec.biz.dal.dao;
 
 import java.util.List;
+import java.util.Map;
 
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.dto.Mapper;
+import com.ym.mec.biz.dal.dto.SysMessageDto;
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.common.dal.BaseDAO;
 
 public interface SysMessageDao extends BaseDAO<Long, SysMessage> {
+	
+	public List<SysMessageDto> queryListPage(Map<String, Object> params);
 
 	public List<SysMessage> queryUserInRecentMinList(@Param("mobile") String mobile, @Param("recentMin") int recentMin, @Param("type") MessageSendMode type);
 

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

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.dal.dto;
+
+public class MapDto {
+    private String key;
+
+    private Integer value;
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public Integer getValue() {
+        return value;
+    }
+
+    public void setValue(Integer value) {
+        this.value = value;
+    }
+}

+ 15 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicCardDto.java

@@ -1,9 +1,11 @@
 package com.ym.mec.biz.dal.dto;
 
-import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import io.swagger.annotations.ApiModelProperty;
+
 import org.apache.commons.lang3.StringUtils;
 
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+
 public class MusicCardDto {
     @ApiModelProperty(value = "报名id",required = true)
     private String registerId;
@@ -13,6 +15,9 @@ public class MusicCardDto {
 
     @ApiModelProperty(value = "乐团编号",required = true)
     private String musicGroupId;
+    
+    @ApiModelProperty(value = "乐团状态(报名中、缴费中、筹备中、进行中、取消)",required = false)
+    private MusicGroupStatusEnum musicGroupStatus;
 
     @ApiModelProperty(value = "科目编号",required = true)
     private String subjectId;
@@ -57,7 +62,15 @@ public class MusicCardDto {
         this.musicGroupId = musicGroupId;
     }
 
-    public Integer getMusicGroupNum() {
+    public MusicGroupStatusEnum getMusicGroupStatus() {
+		return musicGroupStatus;
+	}
+
+	public void setMusicGroupStatus(MusicGroupStatusEnum musicGroupStatus) {
+		this.musicGroupStatus = musicGroupStatus;
+	}
+
+	public Integer getMusicGroupNum() {
         return musicGroupNum;
     }
 

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentMusicGroupDto.java

@@ -0,0 +1,28 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupQuit;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+
+public class StudentMusicGroupDto extends StudentRegistration {
+
+	private MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
+	
+	private MusicGroup musicGroup = new MusicGroup();
+
+	public MusicGroupQuit getMusicGroupQuit() {
+		return musicGroupQuit;
+	}
+
+	public void setMusicGroupQuit(MusicGroupQuit musicGroupQuit) {
+		this.musicGroupQuit = musicGroupQuit;
+	}
+
+	public MusicGroup getMusicGroup() {
+		return musicGroup;
+	}
+
+	public void setMusicGroup(MusicGroup musicGroup) {
+		this.musicGroup = musicGroup;
+	}
+}

+ 45 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentSubTotalCourseTimesDto.java

@@ -0,0 +1,45 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.util.List;
+
+public class StudentSubTotalCourseTimesDto{
+    private Integer userId;
+
+    private String username;
+
+    private String phone;
+
+    private List<MapDto> MapDtos;
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public List<MapDto> getMapDtos() {
+        return MapDtos;
+    }
+
+    public void setMapDtos(List<MapDto> mapDtos) {
+        MapDtos = mapDtos;
+    }
+}

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SysMessageDto.java

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.SysMessage;
+
+public class SysMessageDto extends SysMessage {
+
+	private SysUser user = new SysUser();
+
+	public SysUser getUser() {
+		return user;
+	}
+
+	public void setUser(SysUser user) {
+		this.user = user;
+	}
+}

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherCourseSalaryDetail4WebDto.java

@@ -63,6 +63,26 @@ public class TeacherCourseSalaryDetail4WebDto {
 
     private String deductionReason;
 
+    private Integer belongDaya;
+
+    private String salaryType;
+
+    public String getSalaryType() {
+        return salaryType;
+    }
+
+    public void setSalaryType(String salaryType) {
+        this.salaryType = salaryType;
+    }
+
+    public Integer getBelongDaya() {
+        return belongDaya;
+    }
+
+    public void setBelongDaya(Integer belongDaya) {
+        this.belongDaya = belongDaya;
+    }
+
     public String getDeductionReason() {
         return deductionReason;
     }

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

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.entity;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum ApprovalStatus implements BaseEnum<String, ApprovalStatus> {
-	APPROVED, DENIED, PROCESSING;
+	APPROVED, DENIED, PROCESSING, CANCELED;
 
 	@Override
 	public String getCode() {

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

@@ -26,6 +26,8 @@ public class MusicGroupQuit {
 
 	/**  */
 	private java.util.Date createTime;
+	
+	private String userComment;
 
 	/** 原因 */
 	private String reason;
@@ -92,6 +94,14 @@ public class MusicGroupQuit {
 		return this.reason;
 	}
 
+	public String getUserComment() {
+		return userComment;
+	}
+
+	public void setUserComment(String userComment) {
+		this.userComment = userComment;
+	}
+
 	public ApprovalStatus getStatus() {
 		return status;
 	}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -146,6 +146,8 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     BACKSTAGE_STUDENT_OK_QUIT_COURSE("BACKSTAGE_STUDENT_OK_QUIT_COURSE", "学员确认退课"),
     BACKSTAGE_STUDENT_APPEAL("BACKSTAGE_STUDENT_APPEAL", "学员申述"),
     BACKSTAGE_STUDENT_APPLY_QUIT_GROUP("BACKSTAGE_STUDENT_APPLY_QUIT_GROUP", "学员申请退团"),
+    PUSH_STUDENT_COMMIT_QUIT_MUSIC_APPLY("PUSH_STUDENT_COMMIT_QUIT_MUSIC_APPLY", "学员申请退团"),
+    PUSH_STUDENT_REVOKE_QUIT_MUSIC_APPLY("PUSH_STUDENT_REVOKE_QUIT_MUSIC_APPLY", "撤销退团申请"),
     BACKSTAGE_STUDENT_APPLY_QUIT_COURSE("BACKSTAGE_STUDENT_APPLY_QUIT_COURSE", "学员申请退课"),
     BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDENT_APPLY_WITHDRAW", "学员申请提现"),
     PUSH_STUDY_REPORT("PUSH_STUDY_REPORT", "陪练报告"),

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageCourseQueryInfo.java

@@ -13,7 +13,7 @@ import com.ym.mec.common.page.QueryInfo;
 public class StudentManageCourseQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "学生id",required = true)
-    private Long studentId;
+    private Integer studentId;
 
     @ApiModelProperty(value = "vip课程ID",required = false)
     private Long vipGroupId;
@@ -41,11 +41,11 @@ public class StudentManageCourseQueryInfo extends QueryInfo {
         this.vipGroupId = vipGroupId;
     }
 
-    public Long getStudentId() {
+    public Integer getStudentId() {
         return studentId;
     }
 
-    public void setStudentId(Long studentId) {
+    public void setStudentId(Integer studentId) {
         this.studentId = studentId;
     }
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -17,6 +17,8 @@ import java.util.Map;
 
 public interface CourseScheduleTeacherSalaryService extends BaseService<Long, CourseScheduleTeacherSalary> {
 
+    String TASK_KEY = "SETTLEMENT_TYPES";
+
     /**
      * @Author: Joburgess
      * @Date: 2019/10/14

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

@@ -115,9 +115,19 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	/**
 	 * 申请退团
 	 * @param musicGroupId 乐团编号
+	 * @param reason
+	 * @return
+	 */
+	boolean applyQuitMusicGroup(String musicGroupId, String reason);
+	
+	/**
+	 * 取消退团
+	 * @param userId
+	 * @param musicGroupId
+	 * @param reason
 	 * @return
 	 */
-	boolean applyQuitMusicGroup(String musicGroupId);
+	boolean cancelQuitMusicGroup(Integer userId, String musicGroupId, String reason);
 
 	/**
 	 * 审批退团

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

@@ -8,8 +8,6 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.page.QueryInfo;
-
 /**
  * @Author Joburgess
  * @Date 2019/9/19
@@ -205,8 +203,7 @@ public interface StudentManageService {
 
     /**
      * 乐团管理--乐团详情--学员列表--获取学员可排课时长
-     * @param userId
      * @return
      */
-    Map<Integer, Integer> queryStudentSubTotalCourseTimes(Integer userId,String musicGroupId);
+    List<StudentSubTotalCourseTimesDto> queryStudentSubTotalCourseTimes(String musicGroupId);
 }

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

@@ -310,5 +310,12 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @return boolean
      */
     BigDecimal updateUserSurplusCourseFee(Integer userId, String musicGroupId, BigDecimal amount, String memo, Integer operatorId);
+    
+    /**
+     * 查询指定学生的乐团信息
+     * @param userId
+     * @return
+     */
+    List<StudentMusicGroupDto> queryStudentMusicGroupInfo(Integer userId);
 
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java

@@ -43,4 +43,14 @@ public interface StudentServeService {
 
     void updateExercisesSituation(Date date, List<Integer> studentIds, Integer teacherId);
 
+    /**
+     * @describe 获取与课程相关的应被服务的学员
+     * @author Joburgess
+     * @date 2020/12/29 0029
+     * @param date:
+     * @param courseId:
+     * @return java.util.Set<java.lang.Integer>
+     */
+    Set<Integer> getStudentWithCourse(Long courseId);
+
 }

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

@@ -5,13 +5,18 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import com.ym.mec.biz.dal.dto.SysMessageDto;
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 
 public interface SysMessageService extends BaseService<Long, SysMessage> {
+	
+	public PageInfo<SysMessageDto> queryListPage(QueryInfo queryInfo);
 
 	/**
 	 * 修改消息对象

+ 10 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java

@@ -1,12 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import com.ym.mec.biz.dal.dao.*;
@@ -558,6 +552,15 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
         CourseHomework courseHomework = new CourseHomework();
         List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseSchedule(courseSchedule.getId());
 
+        Set<Integer> serveStudentIds = studentServeService.getStudentWithCourse(courseSchedule.getId());
+        Iterator<CourseScheduleStudentPayment> iterator = courseScheduleStudentPayments.iterator();
+        while (iterator.hasNext()){
+            CourseScheduleStudentPayment courseScheduleStudentPayment = iterator.next();
+            if(!serveStudentIds.contains(courseScheduleStudentPayment.getUserId())){
+                iterator.remove();
+            }
+        }
+
         if (Objects.nonNull(existHomework)) {
             courseHomework.setId(existHomework.getId());
             courseHomework.setContent(content);

+ 34 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -3276,6 +3276,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				
 				//删除评论
 				courseScheduleReviewDao.delByCourseScheduleId(courseScheduleId);
+
+				List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseSchedule(courseScheduleId);
+				if(!CollectionUtils.isEmpty(courseScheduleStudentPayments)){
+					List<Integer> studentIds = courseScheduleStudentPayments.stream().map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toList());
+					studentServeService.updateExercisesSituation(oldCourseSchedule.getClassDate(), studentIds, oldCourseSchedule.getActualTeacherId());
+				}
 			}
 
 			// 计算课程时长
@@ -5265,6 +5271,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 			if(Objects.isNull(courseMergeInfo.getClassGroupId())&&courseMergeInfo.getId().equals(courseSchedule.getId())){
 				courseMergeInfo.setClassGroupId(courseSchedule.getClassGroupId());
+				courseMergeInfo.setGroupType(courseSchedule.getGroupType());
+				courseMergeInfo.setMusicGroupId(courseSchedule.getMusicGroupId());
 			}
 			courseSchedule.setNote("课程合并");
 		}
@@ -5273,26 +5281,40 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		Set<Integer> allStudentIds = courseScheduleStudentPayments.stream().map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toSet());
 
 		Map<Integer, CourseScheduleStudentPayment> mainStudentCourseMap = courseScheduleStudentPayments.stream().filter(c -> courseMergeInfo.getId().equals(c.getCourseScheduleId())).collect(Collectors.toMap(CourseScheduleStudentPayment::getUserId, c -> c, (c1, c2) -> c1));
+
+		Map<Integer, List<CourseScheduleStudentPayment>> otherStudentCourseMap = courseScheduleStudentPayments.stream().filter(c -> !courseMergeInfo.getId().equals(c.getCourseScheduleId())).collect(Collectors.groupingBy(CourseScheduleStudentPayment::getUserId));
+
+
 		List<CourseScheduleStudentPayment> newPayments = new ArrayList<>();
 		List<CourseScheduleStudentPayment> updatePayments = new ArrayList<>();
-		for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
-			CourseScheduleStudentPayment updatePayment = mainStudentCourseMap.get(courseScheduleStudentPayment.getUserId());
-			if(Objects.nonNull(updatePayment)&&updatePayment.getCourseScheduleId().equals(courseScheduleStudentPayment.getCourseScheduleId())){
-				continue;
-			}
-			if(updatePayment.getUserId().equals(courseScheduleStudentPayment.getUserId())){
-				updatePayment.setExpectPrice(updatePayment.getExpectPrice().add(courseScheduleStudentPayment.getExpectPrice()));
-				courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
+
+		for (Map.Entry<Integer, List<CourseScheduleStudentPayment>> otherStudentCourseMapEntry : otherStudentCourseMap.entrySet()) {
+			List<CourseScheduleStudentPayment> studentCoursePayments = otherStudentCourseMapEntry.getValue();
+			BigDecimal salary = studentCoursePayments.stream().map(CourseScheduleStudentPayment::getExpectPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+			if(mainStudentCourseMap.containsKey(otherStudentCourseMapEntry.getKey())){
+				CourseScheduleStudentPayment updatePayment = mainStudentCourseMap.get(otherStudentCourseMapEntry.getKey());
+				updatePayment.setExpectPrice(updatePayment.getExpectPrice().add(salary));
 				updatePayments.add(updatePayment);
-				updatePayments.add(courseScheduleStudentPayment);
+
+				for (CourseScheduleStudentPayment studentCoursePayment : studentCoursePayments) {
+					studentCoursePayment.setExpectPrice(BigDecimal.ZERO);
+					updatePayments.add(studentCoursePayment);
+				}
 				continue;
 			}
 			CourseScheduleStudentPayment newPayment = new CourseScheduleStudentPayment();
-			BeanUtils.copyProperties(courseScheduleStudentPayment, newPayment);
+			BeanUtils.copyProperties(studentCoursePayments.get(0), newPayment);
 			newPayment.setCourseScheduleId(courseMergeInfo.getId());
 			newPayment.setClassGroupId(courseMergeInfo.getClassGroupId());
-			courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
-			updatePayments.add(courseScheduleStudentPayment);
+			newPayment.setMusicGroupId(courseMergeInfo.getMusicGroupId());
+			newPayment.setGroupType(courseMergeInfo.getGroupType());
+			newPayment.setExpectPrice(salary);
+			newPayment.setId(null);
+			newPayments.add(newPayment);
+			for (CourseScheduleStudentPayment studentCoursePayment : studentCoursePayments) {
+				studentCoursePayment.setExpectPrice(BigDecimal.ZERO);
+				updatePayments.add(studentCoursePayment);
+			}
 		}
 
 		List<CourseSchedule> courseSchedules=new ArrayList<>();

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

@@ -24,6 +24,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
@@ -83,6 +84,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private SchoolDao schoolDao;
     @Autowired
     private SysConfigService sysConfigService;
+    @Autowired
+    private RedisTemplate redisTemplate;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -208,6 +211,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         String endDate = DateUtil.format(DateUtil.getLastDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
         List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findTeacherCourseSalaryNoSettlement(startDate,endDate);
 
+        if(CollectionUtils.isEmpty(someDayAgoTeacherCourseSalaryNoSettlement)){
+            return;
+        }
+
         Set<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toSet());
 
         Set<Integer> teacherIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet());
@@ -1361,10 +1368,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
         String endDate = DateUtil.format(DateUtil.getLastDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
 
-        int isSalaryGroupTypes = courseScheduleDao.countIsSalaryGroupTypes(startDate, endDate);
+        int isSalaryGroupTypes = redisTemplate.opsForSet().size(CourseScheduleTeacherSalaryService.TASK_KEY).intValue();
         if(isSalaryGroupTypes<3){
             return;
         }
+        redisTemplate.delete(CourseScheduleTeacherSalaryService.TASK_KEY);
         List<CourseScheduleTeacherSalary> salaries = courseScheduleTeacherSalaryDao.getIsSalaryWithDate(startDate, endDate);
         if(CollectionUtils.isEmpty(salaries)){
             return;

+ 80 - 22
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -6,10 +6,18 @@ import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 
-import com.ym.mec.biz.dal.dao.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -22,6 +30,38 @@ import com.alibaba.fastjson.TypeReference;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
+import com.ym.mec.biz.dal.dao.ChargeTypeDao;
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.CooperationOrganDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderCourseSettingsDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
+import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
+import com.ym.mec.biz.dal.dao.OrganizationDao;
+import com.ym.mec.biz.dal.dao.SchoolDao;
+import com.ym.mec.biz.dal.dao.SporadicChargeInfoDao;
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dao.StudentVisitDao;
+import com.ym.mec.biz.dal.dao.SubjectChangeDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.CourseFormDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
@@ -1512,7 +1552,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public boolean applyQuitMusicGroup(String musicGroupId) {
+    public boolean applyQuitMusicGroup(String musicGroupId, String reason) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
@@ -1527,6 +1567,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupQuit.setJoinDate(sysUser.getCreateTime());
         musicGroupQuit.setMusicGroupId(musicGroupId);
         musicGroupQuit.setUserId(sysUser.getId());
+        musicGroupQuit.setUserComment(reason);
         musicGroupQuit.setStatus(ApprovalStatus.PROCESSING);
 
         musicGroupQuitDao.insert(musicGroupQuit);
@@ -1536,11 +1577,42 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         memo.put("Id", musicGroupQuit.getId());
         memo.put("type", "MUSICGROUP");
 
-        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId()), MessageTypeEnum.BACKSTAGE_STUDENT_APPLY_QUIT_GROUP, JSONObject.toJSONString(memo), sysUser.getUsername());
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId()),
+                MessageTypeEnum.BACKSTAGE_STUDENT_APPLY_QUIT_GROUP, JSONObject.toJSONString(memo), sysUser.getUsername());
+        Map<Integer, String> receivers = new HashMap<>(1);
+        receivers.put(musicGroup.getEducationalTeacherId(),musicGroup.getEducationalTeacherId().toString());
+        sysMessageService.batchSendMessage(MessageSender.JIGUANG,MessageTypeEnum.PUSH_STUDENT_COMMIT_QUIT_MUSIC_APPLY,
+                receivers,null,0,null,"SYSTEM",musicGroup.getName(),sysUser.getUsername());
         return true;
     }
 
     @Override
+	public boolean cancelQuitMusicGroup(Integer userId, String musicGroupId, String reason) {
+    	MusicGroupQuit musicGroupQuit = musicGroupQuitDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+    	if(musicGroupQuit == null){
+    		throw new BizException("操作失败,没有查询到退团记录");
+    	}
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if (musicGroup == null) {
+            throw new BizException("乐团不存在");
+        }
+    	musicGroupQuit.setStatus(ApprovalStatus.CANCELED);
+        musicGroupQuit.setReason(reason);
+        musicGroupQuit.setQuitDate(new Date());
+        musicGroupQuitDao.update(musicGroupQuit);
+
+        Map<Integer, String> receivers = new HashMap<>(1);
+        receivers.put(musicGroup.getEducationalTeacherId(),musicGroup.getEducationalTeacherId().toString());
+        sysMessageService.batchSendMessage(MessageSender.JIGUANG,MessageTypeEnum.PUSH_STUDENT_REVOKE_QUIT_MUSIC_APPLY,
+                receivers,null,0,null,"SYSTEM",musicGroup.getName(),sysUser.getUsername());
+    	return true;
+	}
+
+	@Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason, boolean isRefundCourseFee, boolean isRefundInstrumentFee,
                                          boolean isRefundTeachingAssistantsFee) {
@@ -1639,10 +1711,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
             List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.findApplyOrderGoods(studentPaymentOrder.getId());
 
-            Set<String> courseTypeSet = new HashSet<>();
             if (isRefundCourseFee) {
-                List<MusicGroupPaymentCalenderCourseSettings> courseSettings = musicGroupPaymentCalenderCourseSettingsDao.getMusicGroupRegCalenderCourseSettings(studentRegistration.getMusicGroupId());
-                courseTypeSet = courseSettings.stream().map(e -> e.getCourseType().getCode()).collect(Collectors.toSet());
+                // 退课程费用
+            	amount = amount.add(studentRegistration.getSurplusCourseFee());
             }
 
             SubjectChange studentLastChange = null;
@@ -1660,12 +1731,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                     remitFee = BigDecimal.ZERO;
                 }
 
-                if (isRefundCourseFee) {
-                    // 退课程费用
-                    if (courseTypeSet.contains(detail.getType().getCode())) {
-                        amount = amount.add(detail.getPrice());
-                    }
-                }
                 if (isRefundInstrumentFee && studentLastChange == null) {
                     // 退乐器费用
                     if (detail.getType() == OrderDetailTypeEnum.MUSICAL) {
@@ -1794,10 +1859,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.findApplyOrderGoods(studentPaymentOrder.getId());
 
-        Set<String> courseTypeSet = new HashSet<>();
         if (isRefundCourseFee) {
-            List<MusicGroupPaymentCalenderCourseSettings> courseSettings = musicGroupPaymentCalenderCourseSettingsDao.getMusicGroupRegCalenderCourseSettings(studentRegistration.getMusicGroupId());
-            courseTypeSet = courseSettings.stream().map(e -> e.getCourseType().getCode()).collect(Collectors.toSet());
+            // 退课程费用
+        	amount = amount.add(studentRegistration.getSurplusCourseFee());
         }
 
         SubjectChange studentLastChange = null;
@@ -1815,12 +1879,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 detail.setPrice(detail.getPrice().subtract(remitFee));
                 remitFee = BigDecimal.ZERO;
             }
-            if (isRefundCourseFee) {
-                // 退课程费用
-                if (courseTypeSet.contains(detail.getType().getCode())) {
-                    amount = amount.add(detail.getPrice());
-                }
-            }
             if (isRefundInstrumentFee && studentLastChange == null) {
                 // 退乐器费用
                 if (detail.getType() == OrderDetailTypeEnum.MUSICAL) {

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

@@ -171,6 +171,9 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 			dataList = extracurricularExercisesReplyDao.findStudentHomeworkDetailsInTimeZone(params);
 			Map<String, List<StudentServiceDetailDto>> weekHomeworks=new HashMap<>();
 			for (StudentServiceDetailDto studentServiceDetailDto : dataList) {
+				if(Objects.isNull(studentServiceDetailDto.getCourseStartTime())){
+					continue;
+				}
 				LocalDate homeworkCreateTime = LocalDateTime.ofInstant(studentServiceDetailDto.getCourseStartTime().toInstant(), DateUtil.zoneId).toLocalDate();
 				String mondayStr = homeworkCreateTime.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue()).toString();
 				if(!weekHomeworks.containsKey(mondayStr)){

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

@@ -416,7 +416,6 @@ public class StudentManageServiceImpl implements StudentManageService {
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
         List<MusicGroupStudentsDto> dataList = null;
-        String musicGroupId = queryInfo.getMusicGroupId();
         int count = studentManageDao.countMusicGroupStudent(params);
         if (queryInfo.getIsExport() && count > 50000) {
             throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
@@ -427,11 +426,6 @@ public class StudentManageServiceImpl implements StudentManageService {
             dataList = studentManageDao.queryMusicGroupStudent(params);
             //退团的学生
             List<Integer> quitUserIds = dataList.stream().filter(e -> e.getStudentStatus().equals("QUIT")).map(MusicGroupStudentsDto::getUserId).collect(Collectors.toList());
-            Set<Integer> studentIds = dataList.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
-            Map<Integer, BigDecimal> subTotalCourseTimeMap = MapUtil.convertIntegerMap(musicGroupPaymentStudentCourseDetailDao.queryStudentSubTotalCourseTime(studentIds,musicGroupId));
-            for (MusicGroupStudentsDto musicGroupStudentsDto : dataList) {
-                musicGroupStudentsDto.setSubTotalCourseTime(subTotalCourseTimeMap.get(musicGroupStudentsDto.getUserId()));
-            }
             if (quitUserIds.size() > 0) {
                 List<MusicGroupQuit> quits = musicGroupQuitDao.getQuits(queryInfo.getMusicGroupId(), quitUserIds);
                 for (MusicGroupStudentsDto musicGroupStudentsDto : dataList) {
@@ -726,7 +720,7 @@ public class StudentManageServiceImpl implements StudentManageService {
     }
 
     @Override
-    public Map<Integer, Integer> queryStudentSubTotalCourseTimes(Integer userId,String musicGroupId) {
-        return MapUtil.convertIntegerMap(musicGroupPaymentStudentCourseDetailDao.queryStudentSubTotalCourseTimes(userId,musicGroupId));
+    public List<StudentSubTotalCourseTimesDto> queryStudentSubTotalCourseTimes(String musicGroupId) {
+        return musicGroupPaymentStudentCourseDetailDao.queryStudentSubTotalCourseTimes(musicGroupId);
     }
 }

+ 45 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -16,10 +16,6 @@ import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.enums.*;
-import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -27,11 +23,37 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.GoodsDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderCourseSettingsDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
+import com.ym.mec.biz.dal.dao.StudentCourseFeeDetailDao;
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dao.SubjectChangeDao;
+import com.ym.mec.biz.dal.dao.SubjectDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.CourseFormDto;
+import com.ym.mec.biz.dal.dto.StudentAddDto;
+import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
+import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
+import com.ym.mec.biz.dal.dto.StudentInfo;
+import com.ym.mec.biz.dal.dto.StudentMusicDetailDto;
+import com.ym.mec.biz.dal.dto.StudentMusicGroupDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
@@ -55,6 +77,19 @@ import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.entity.SubjectChange;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.ClassGroupStudentMapperService;
@@ -83,8 +118,8 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
-import org.springframework.util.CollectionUtils;
 
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
@@ -1470,4 +1505,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         studentRegistrationDao.update(studentRegistration);
         return amount;
     }
+
+	@Override
+	public List<StudentMusicGroupDto> queryStudentMusicGroupInfo(Integer userId) {
+		return studentRegistrationDao.queryStudentMusicGroupInfo(userId);
+	}
 }

+ 95 - 64
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -302,12 +302,15 @@ public class StudentServeServiceImpl implements StudentServeService {
         LocalDate sunDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue());
         Date nextMonday = Date.from(sunDayDate.plusDays(1).atStartOfDay(DateUtil.zoneId).toInstant());
 
-        int weekServiceNum = studentExtracurricularExercisesSituationDao.countWeekServiceNum(monDayDate.toString());
-        if(weekServiceNum>0&&CollectionUtils.isEmpty(studentIds)){
-            return;
-        }
+//        int weekServiceNum = studentExtracurricularExercisesSituationDao.countWeekServiceNum(monDayDate.toString());
+//        if(weekServiceNum>0&&CollectionUtils.isEmpty(studentIds)){
+//            return;
+//        }
 
         List<StudentServeCourseDto> studentFutureCourseInfo = studentDao.getStudentFutureCourseInfo(monDayDate.toString(), studentIds);
+        if(CollectionUtils.isEmpty(studentFutureCourseInfo)){
+            return;
+        }
         Map<Integer, List<StudentServeCourseDto>> studentCourseMap = studentFutureCourseInfo.stream().collect(Collectors.groupingBy(StudentServeCourseDto::getStudentId));
 
         List<StudentExtracurricularExercisesSituation> results=new ArrayList<>();
@@ -319,11 +322,15 @@ public class StudentServeServiceImpl implements StudentServeService {
                 List<StudentServeCourseDto> futureCourseInfo = typeCourseMap.get(CourseSchedule.CourseScheduleType.SINGLE);
                 List<StudentServeCourseDto> weekCourseInfo = typeCourseMap.get(CourseSchedule.CourseScheduleType.SINGLE).stream().filter(c -> c.getCourseStartTime().compareTo(nextMonday) < 0).collect(Collectors.toList());
                 if(CollectionUtils.isEmpty(weekCourseInfo)){
-                    StudentExtracurricularExercisesSituation studentExtracurricularExercisesSituation=new StudentExtracurricularExercisesSituation(studentCourseMapEntry.getKey(),
-                            futureCourseInfo.get(0).getActualTeacherId(),nowDate.get(DateUtil.weekFields.weekOfYear()),
-                            DateUtil.stringToDate(monDayDate.toString(), "yyyy-MM-dd"), DateUtil.stringToDate(sunDayDate.toString(), "yyyy-MM-dd"),
-                            "EXERCISE", null);
-                    results.add(studentExtracurricularExercisesSituation);
+                    Map<String, List<StudentServeCourseDto>> groupCourseInfo = futureCourseInfo.stream().collect(Collectors.groupingBy(StudentServeCourseDto::getMusicGroupId));
+                    for (Map.Entry<String, List<StudentServeCourseDto>> groupCourseInfoEntry : groupCourseInfo.entrySet()) {
+                        StudentServeCourseDto courseInfo = groupCourseInfoEntry.getValue().stream().min(Comparator.comparing(StudentServeCourseDto::getCourseStartTime)).get();
+                        StudentExtracurricularExercisesSituation studentExtracurricularExercisesSituation=new StudentExtracurricularExercisesSituation(studentCourseMapEntry.getKey(),
+                                courseInfo.getActualTeacherId(),nowDate.get(DateUtil.weekFields.weekOfYear()),
+                                DateUtil.stringToDate(monDayDate.toString(), "yyyy-MM-dd"), DateUtil.stringToDate(sunDayDate.toString(), "yyyy-MM-dd"),
+                                "EXERCISE", null);
+                        results.add(studentExtracurricularExercisesSituation);
+                    }
                 }else{
                     Map<String, List<StudentServeCourseDto>> groupCourseInfo = weekCourseInfo.stream().collect(Collectors.groupingBy(StudentServeCourseDto::getMusicGroupId));
                     Map<Integer, Set<Long>> teacherServiceCourseIdMap = new HashMap<>();
@@ -347,11 +354,14 @@ public class StudentServeServiceImpl implements StudentServeService {
                 List<StudentServeCourseDto> futureCourseInfo = typeCourseMap.get(CourseSchedule.CourseScheduleType.VIP);
                 List<StudentServeCourseDto> weekCourseInfo = typeCourseMap.get(CourseSchedule.CourseScheduleType.VIP).stream().filter(c -> c.getCourseStartTime().compareTo(nextMonday) < 0).collect(Collectors.toList());
                 if(CollectionUtils.isEmpty(weekCourseInfo)){
-                    StudentExtracurricularExercisesSituation studentExtracurricularExercisesSituation=new StudentExtracurricularExercisesSituation(studentCourseMapEntry.getKey(),
-                            futureCourseInfo.get(0).getActualTeacherId(),nowDate.get(DateUtil.weekFields.weekOfYear()),
-                            DateUtil.stringToDate(monDayDate.toString(), "yyyy-MM-dd"), DateUtil.stringToDate(sunDayDate.toString(), "yyyy-MM-dd"),
-                            "EXERCISE", null);
-                    results.add(studentExtracurricularExercisesSituation);
+                    Map<Integer, List<StudentServeCourseDto>> teacherCourseMap = futureCourseInfo.stream().collect(Collectors.groupingBy(StudentServeCourseDto::getActualTeacherId));
+                    for (Integer teacherId : teacherCourseMap.keySet()) {
+                        StudentExtracurricularExercisesSituation studentExtracurricularExercisesSituation=new StudentExtracurricularExercisesSituation(studentCourseMapEntry.getKey(),
+                                teacherId,nowDate.get(DateUtil.weekFields.weekOfYear()),
+                                DateUtil.stringToDate(monDayDate.toString(), "yyyy-MM-dd"), DateUtil.stringToDate(sunDayDate.toString(), "yyyy-MM-dd"),
+                                "EXERCISE", null);
+                        results.add(studentExtracurricularExercisesSituation);
+                    }
                 }else{
                     Map<Integer, List<StudentServeCourseDto>> teacherCourseMap = weekCourseInfo.stream().collect(Collectors.groupingBy(StudentServeCourseDto::getActualTeacherId));
                     for (Map.Entry<Integer, List<StudentServeCourseDto>> teacherCourseMapEntry : teacherCourseMap.entrySet()) {
@@ -386,11 +396,14 @@ public class StudentServeServiceImpl implements StudentServeService {
                 List<StudentServeCourseDto> futureCourseInfo = typeCourseMap.get(CourseSchedule.CourseScheduleType.PRACTICE);
                 List<StudentServeCourseDto> weekCourseInfo = typeCourseMap.get(CourseSchedule.CourseScheduleType.PRACTICE).stream().filter(c -> c.getCourseStartTime().compareTo(nextMonday) < 0).collect(Collectors.toList());
                 if(CollectionUtils.isEmpty(weekCourseInfo)){
-                    StudentExtracurricularExercisesSituation studentExtracurricularExercisesSituation=new StudentExtracurricularExercisesSituation(studentCourseMapEntry.getKey(),
-                            futureCourseInfo.get(0).getActualTeacherId(),nowDate.get(DateUtil.weekFields.weekOfYear()),
-                            DateUtil.stringToDate(monDayDate.toString(), "yyyy-MM-dd"), DateUtil.stringToDate(sunDayDate.toString(), "yyyy-MM-dd"),
-                            "EXERCISE", null);
-                    results.add(studentExtracurricularExercisesSituation);
+                    Set<Integer> teacherIds = futureCourseInfo.stream().map(StudentServeCourseDto::getActualTeacherId).collect(Collectors.toSet());
+                    for (Integer teacherId : teacherIds) {
+                        StudentExtracurricularExercisesSituation studentExtracurricularExercisesSituation=new StudentExtracurricularExercisesSituation(studentCourseMapEntry.getKey(),
+                                teacherId,nowDate.get(DateUtil.weekFields.weekOfYear()),
+                                DateUtil.stringToDate(monDayDate.toString(), "yyyy-MM-dd"), DateUtil.stringToDate(sunDayDate.toString(), "yyyy-MM-dd"),
+                                "EXERCISE", null);
+                        results.add(studentExtracurricularExercisesSituation);
+                    }
                 }else{
                     Map<Integer, List<StudentServeCourseDto>> teacherCourseMap = weekCourseInfo.stream().collect(Collectors.groupingBy(StudentServeCourseDto::getActualTeacherId));
                     Map<Integer, Set<Long>> teacherServiceCourseIdMap = new HashMap<>();
@@ -413,8 +426,8 @@ public class StudentServeServiceImpl implements StudentServeService {
             }
         }
 
-        if(CollectionUtils.isEmpty(studentIds)){
-            studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString());
+        if(!CollectionUtils.isEmpty(results)){
+//            studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString());
             BigDecimal currentPage1=BigDecimal.ONE,
                     pageSize1=new BigDecimal(10000),
                     total1=new BigDecimal(results.size()),
@@ -422,55 +435,56 @@ public class StudentServeServiceImpl implements StudentServeService {
 
             while (currentPage1.compareTo(totalPage1)<=0){
                 List<StudentExtracurricularExercisesSituation> rows=results.stream().skip(pageSize1.multiply(currentPage1.subtract(BigDecimal.ONE)).longValue()).limit(pageSize1.longValue()).collect(Collectors.toList());
-                studentExtracurricularExercisesSituationDao.batchInsert(rows);
-                currentPage1=currentPage1.add(BigDecimal.ONE);
-            }
-            return;
-        }
-
-        List<StudentExtracurricularExercisesSituation> weekServiceWithStudents = studentExtracurricularExercisesSituationDao.findWeekServiceWithStudents(monDayDate.toString(), null, studentIds);
-        Map<String, StudentExtracurricularExercisesSituation> codeServeMap = weekServiceWithStudents.stream().collect(Collectors.toMap(StudentExtracurricularExercisesSituation::getStuAndTeaCode, s -> s, (s1, s2) -> s1));
+                List<Integer> updateStudentIds = rows.stream().map(StudentExtracurricularExercisesSituation::getStudentId).collect(Collectors.toList());
 
-        Set<String> newCodes = results.stream().map(StudentExtracurricularExercisesSituation::getStuAndTeaCode).collect(Collectors.toSet());
-        for (StudentExtracurricularExercisesSituation weekServiceWithStudent : weekServiceWithStudents) {
-            if(weekServiceWithStudent.getActualExercisesNum()>0||newCodes.contains(weekServiceWithStudent.getStuAndTeaCode())){
-                continue;
-            }
-            studentExtracurricularExercisesSituationDao.delete(weekServiceWithStudent.getId());
-        }
+                List<StudentExtracurricularExercisesSituation> weekServiceWithStudents = studentExtracurricularExercisesSituationDao.findWeekServiceWithStudents(monDayDate.toString(), null, updateStudentIds);
+                Map<String, StudentExtracurricularExercisesSituation> codeServeMap = weekServiceWithStudents.stream().collect(Collectors.toMap(StudentExtracurricularExercisesSituation::getStuAndTeaCode, s -> s, (s1, s2) -> s1));
 
-        List<StudentExtracurricularExercisesSituation> newService = new ArrayList<>();
-        List<StudentExtracurricularExercisesSituation> updateService = new ArrayList<>();
-        for (StudentExtracurricularExercisesSituation result : results) {
-            if(codeServeMap.containsKey(result.getStuAndTeaCode())){
-                StudentExtracurricularExercisesSituation s = codeServeMap.get(result.getStuAndTeaCode());
-                Set<Long> courseIds = new HashSet<>();
-                if(StringUtils.isNotBlank(s.getCourseIds())&&s.getActualExercisesNum()>0){
-                    courseIds = Arrays.stream(s.getCourseIds().split(",")).map(id->Long.valueOf(id)).collect(Collectors.toSet());
-                }
-                if(StringUtils.isNotBlank(result.getCourseIds())){
-                    courseIds.addAll(Arrays.stream(result.getCourseIds().split(",")).map(id->Long.valueOf(id)).collect(Collectors.toSet()));
-                }
-                s.setServeType(result.getServeType());
-                if(s.getServeType().equals("HOMEWORK")){
-                    s.setCourseIds(StringUtils.join(courseIds, ","));
-                }else{
-                    s.setCourseIds("");
+                Set<String> newCodes = rows.stream().map(StudentExtracurricularExercisesSituation::getStuAndTeaCode).collect(Collectors.toSet());
+                for (StudentExtracurricularExercisesSituation weekServiceWithStudent : weekServiceWithStudents) {
+                    if(weekServiceWithStudent.getActualExercisesNum()>0||newCodes.contains(weekServiceWithStudent.getStuAndTeaCode())){
+                        continue;
+                    }
+                    studentExtracurricularExercisesSituationDao.delete(weekServiceWithStudent.getId());
                 }
-                if(StringUtils.isBlank(s.getCourseIds())){
-                    s.setExpectExercisesNum(1);
-                }else{
-                    s.setExpectExercisesNum(courseIds.size());
+
+                List<StudentExtracurricularExercisesSituation> newService = new ArrayList<>();
+                List<StudentExtracurricularExercisesSituation> updateService = new ArrayList<>();
+                for (StudentExtracurricularExercisesSituation result : rows) {
+                    if(codeServeMap.containsKey(result.getStuAndTeaCode())){
+                        StudentExtracurricularExercisesSituation s = codeServeMap.get(result.getStuAndTeaCode());
+                        Set<Long> courseIds = new HashSet<>();
+                        if(StringUtils.isNotBlank(s.getCourseIds())&&s.getActualExercisesNum()>0){
+                            courseIds = Arrays.stream(s.getCourseIds().split(",")).map(id->Long.valueOf(id)).collect(Collectors.toSet());
+                        }
+                        if(StringUtils.isNotBlank(result.getCourseIds())){
+                            courseIds.addAll(Arrays.stream(result.getCourseIds().split(",")).map(id->Long.valueOf(id)).collect(Collectors.toSet()));
+                        }
+                        s.setServeType(result.getServeType());
+                        if(s.getServeType().equals("HOMEWORK")){
+                            s.setCourseIds(StringUtils.join(courseIds, ","));
+                        }else{
+                            s.setCourseIds("");
+                        }
+                        if(StringUtils.isBlank(s.getCourseIds())){
+                            s.setExpectExercisesNum(1);
+                        }else{
+                            s.setExpectExercisesNum(courseIds.size());
+                        }
+                        updateService.add(s);
+                    }else{
+                        newService.add(result);
+                    }
                 }
-                updateService.add(s);
-            }else{
-                newService.add(result);
+                if(!CollectionUtils.isEmpty(updateService))
+                    studentExtracurricularExercisesSituationDao.batchUpdate(updateService);
+                if(!CollectionUtils.isEmpty(newService))
+                    studentExtracurricularExercisesSituationDao.batchInsert(newService);
+
+                currentPage1=currentPage1.add(BigDecimal.ONE);
             }
+            return;
         }
-        if(!CollectionUtils.isEmpty(updateService))
-            studentExtracurricularExercisesSituationDao.batchUpdate(updateService);
-        if(!CollectionUtils.isEmpty(newService))
-            studentExtracurricularExercisesSituationDao.batchInsert(newService);
     }
 
     @Override
@@ -527,6 +541,7 @@ public class StudentServeServiceImpl implements StudentServeService {
 
         for (StudentExtracurricularExercisesSituation weekServiceWithStudent : weekServiceWithStudents) {
             List<StudentServeCourseHomeworkDto> studentHomeworks = studentHomeworkMap.get(weekServiceWithStudent.getStudentId());
+            weekServiceWithStudent.setActualExercisesNum(0);
             if(!CollectionUtils.isEmpty(studentHomeworks)&&weekServiceWithStudent.getServeType().equals("HOMEWORK")){
                 weekServiceWithStudent.setActualExercisesNum(1);
                 long replyNum = studentHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())).count();
@@ -655,4 +670,20 @@ public class StudentServeServiceImpl implements StudentServeService {
         }
         return courseIds;
     }
+
+    @Override
+    public Set<Integer> getStudentWithCourse(Long courseId) {
+        CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
+        if(Objects.isNull(courseSchedule)){
+            return new HashSet<>();
+        }
+        LocalDate nowDate = LocalDateTime.ofInstant(courseSchedule.getClassDate().toInstant(), DateUtil.zoneId).toLocalDate();
+
+        LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+        List<StudentExtracurricularExercisesSituation> serviceWithCourse = studentExtracurricularExercisesSituationDao.findServiceWithCourse(monDayDate.toString(), courseId);
+        if(CollectionUtils.isEmpty(serviceWithCourse)){
+            return new HashSet<>();
+        }
+        return serviceWithCourse.stream().map(StudentExtracurricularExercisesSituation::getStudentId).collect(Collectors.toSet());
+    }
 }

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.SysMessageDao;
 import com.ym.mec.biz.dal.dao.WaitSendMessageDao;
 import com.ym.mec.biz.dal.dto.Mapper;
+import com.ym.mec.biz.dal.dto.SysMessageDto;
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.entity.SysMessageConfig;
 import com.ym.mec.biz.dal.entity.WaitSendMessage;
@@ -21,13 +22,17 @@ import com.ym.mec.common.entity.ImPlayMidiMessage;
 import com.ym.mec.common.entity.ImPrivateMessage;
 import com.ym.mec.common.entity.ImTxtMessage;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.redis.service.RedisCache;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
+import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.string.MessageFormatter;
+
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -87,6 +92,26 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		return sysMessageDao;
 	}
 
+	@Override
+	public PageInfo<SysMessageDto> queryListPage(QueryInfo queryInfo) {
+		PageInfo<SysMessageDto> pageInfo = new PageInfo<SysMessageDto>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+		
+		List<SysMessageDto> dataList = null;
+		int count = this.findCount(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = sysMessageDao.queryListPage(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<SysMessageDto>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
 	/**
 	 * 添加消息
 	 * @param subject 消息主题

+ 16 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -277,14 +277,26 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					courseHomework.setGroupType(teacherAttendance.getGroupType());
 					courseHomework.setClassGroupId(currentCourseDetail.getClassId().intValue());
 					courseHomework.setExpiryDate(DateUtil.addDays(date,7));
-					courseHomework.setExpectNum(courseScheduleDao.countCourseStudentNum(teacherAttendance.getCourseScheduleId()));
+
 					courseHomeworkService.insert(courseHomework);
+
 					List<StudentCourseHomework> studentCourseHomeworks = studentCourseHomeworkDao
 							.constructInitialStudentHomeworkRecordsWithPayment(teacherAttendance.getCourseScheduleId(),
 									courseHomework.getId());
 					if(CollectionUtils.isEmpty(studentCourseHomeworks)){
 						throw new BizException("此课程没有学生");
 					}
+					Set<Integer> serveStudentIds = studentServeService.getStudentWithCourse(teacherAttendance.getCourseScheduleId());
+					Iterator<StudentCourseHomework> iterator = studentCourseHomeworks.iterator();
+					while (iterator.hasNext()){
+						StudentCourseHomework next = iterator.next();
+						if(!serveStudentIds.contains(next.getUserId())){
+							iterator.remove();
+						}
+					}
+					courseHomework.setExpectNum(studentCourseHomeworks.size());
+					courseHomeworkService.update(courseHomework);
+
 					studentCourseHomeworkDao.batchInsertStudentCourseHomeworkRecord(studentCourseHomeworks);
 					List<Integer> studentIds = studentCourseHomeworks.stream().map(StudentCourseHomework::getUserId).collect(Collectors.toList());
 					studentServeService.updateExercisesSituation(courseSchedule.getClassDate(), studentIds, teacherAttendance.getTeacherId());
@@ -412,6 +424,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 							null,0,"6?sealClassId=" + courseScheduleId + "&subjectName=" + name ,"STUDENT",courseSchedule.getName());
 				}
 			}
+		}else if(StringUtils.isNotEmpty(teacherAttendance.getSignInDeviceNo())){
+			teacherAttendance.setSignInDeviceNo(deviceNum);
+			teacherAttendanceDao.update(teacherAttendance);
 		}
 	}
 

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

@@ -597,7 +597,7 @@
             practice_group pg
             LEFT JOIN class_group cg ON pg.id_=cg.music_group_id_ AND cg.group_type_='PRACTICE'
         WHERE
-            pg.user_id_ = #{teacherId} AND cg.del_flag_ = 0 AND pg.group_status_!='CANCEL' AND pg.group_status_!='LOCK'
+            pg.user_id_ = #{teacherId} AND cg.del_flag_ = 0
             <if test="status == null or status == ''">
                 AND pg.group_status_!='CANCEL' AND pg.group_status_!='LOCK'
             </if>

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

@@ -1825,7 +1825,9 @@
                cs.leave_student_num_,
                cs.schoole_id_
         FROM course_schedule cs
-        WHERE cs.class_date_ BETWEEN #{startDate} AND #{endDate}
+        WHERE
+            (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+            AND cs.class_date_ BETWEEN #{startDate} AND #{endDate}
           AND cs.group_type_ = 'MUSIC'
           AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0)
     </select>
@@ -1840,8 +1842,6 @@
             cs.class_date_ BETWEEN #{startDate} AND #{endDate}
           AND ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
           AND csts.settlement_time_ IS NOT NULL
-        GROUP BY
-            csts.group_type_
     </select>
 
     <select id="findByClassGroup" resultMap="CourseSchedule">

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

@@ -681,6 +681,7 @@
 		WHERE cssp.user_id_=#{studentId}
 		  AND cs.class_date_&lt;#{monday}
 		  AND cs.type_=#{courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-		ORDER BY CONCAT(cs.class_date_, ' ', cs.start_class_time_) LIMIT 1
+		  AND (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+		ORDER BY CONCAT(cs.class_date_, ' ', cs.start_class_time_) DESC LIMIT 1
 	</select>
 </mapper>

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

@@ -31,7 +31,7 @@
 		<result column="reduce_salary" property="reduceSalary" />
 		<result column="confirm_status_" property="confirmStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result column="memo_" property="memo" />
-		<result column="is_belong_to_daya_" property="belongToDaya" />
+		<result column="belong_to_daya_" property="belongToDaya" />
 	</resultMap>
 	
 	<resultMap type="com.ym.mec.biz.dal.dto.TeacherVipSalaryDto" id="teacherVipSalaryDto" extends="CourseScheduleTeacherSalary">
@@ -122,7 +122,7 @@
 				deduction_reason_ = #{deductionReason},
 			</if>
 			<if test="belongToDaya != null">
-				is_belong_to_daya_ = #{belongToDaya},
+				belong_to_daya_ = #{belongToDaya},
 			</if>
 		</set> WHERE id_ = #{id} 
 	</update>
@@ -147,7 +147,7 @@
                     user_id_ = #{courseScheduleTeacherSalary.userId},
                 </if>
 				<if test="courseScheduleTeacherSalary.belongToDaya!=null">
-					is_belong_to_daya_ = #{courseScheduleTeacherSalary.belongToDaya},
+					belong_to_daya_ = #{courseScheduleTeacherSalary.belongToDaya},
 				</if>
                 update_time_ = NOW()
             </set>
@@ -803,6 +803,7 @@
 		<result property="confirmStatus" column="confirm_status_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result property="memo" column="memo_" />
 		<result property="deductionReason" column="deduction_reason_" />
+		<result property="belongDaya" column="belong_to_daya_" />
 	</resultMap>
 
 	<sql id="queryCourseSalaryCondition">
@@ -847,7 +848,7 @@
 				AND (csts.course_schedule_id_=#{search} OR cs.name_ LIKE CONCAT('%', #{search}, '%'))
 			</if>
 			<if test="belongDaya!=null">
-				AND csts.is_belong_to_daya_ = #{belongDaya}
+				AND csts.belong_to_daya_ = #{belongDaya}
 			</if>
 		</where>
 	</sql>
@@ -873,7 +874,8 @@
 			csts.reduce_salary,
 			csts.confirm_status_,
 			csts.memo_,
-			csts.deduction_reason_
+			csts.deduction_reason_,
+		    csts.belong_to_daya_
 		FROM
 			course_schedule_teacher_salary csts
 			LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_

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

@@ -408,6 +408,7 @@
 			ee.id_ homework_id_,
 			eer.id_ student_homework_id_,
 			ee.title_,
+		 	NULL course_schedule_id_,
 			ee.teacher_id_,
 			tea.real_name_ teacher_name_,
 			NULL group_id_,
@@ -433,6 +434,7 @@
 			ch.id_ homework_id_,
 			sch.id_ student_homework_id_,
 			NULL title_,
+		    cs.id_ course_schedule_id_,
 			cs.actual_teacher_id_,
 			tea.real_name_ teacher_name_,
 			cs.music_group_id_ group_id_,

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

@@ -230,7 +230,7 @@
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="vip_class_num_" property="vipClassNum"/>
         <result column="music_group_num_" property="musicGroupNum"/>
-        <!--<result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>-->
+        <result column="music_group_status_" property="musicGroupStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <select id="queryUserMusicGroups" resultMap="queryUserMusicGroupsMap">
@@ -241,7 +241,8 @@
              , mg.name_     music_group_name_
              , s.name_      subject_name_
              , s.id_        subject_id_
-             , mg.id_       music_group_id_
+             , mg.id_       music_group_id_,
+    		 mg.status_ music_group_status_
         FROM student_registration sr
                  LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
                  LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_

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

@@ -173,6 +173,9 @@
 	            <if test="item.memo != null">
 	                memo_ = #{item.memo},
 	            </if>
+	            <if test="item.auditMemo != null">
+	                audit_memo_ = #{item.auditMemo},
+	            </if>
 	            <if test="item.startPaymentDate != null">
 	                start_payment_date_ = #{item.startPaymentDate},
 	            </if>

+ 15 - 15
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentStudentCourseDetailMapper.xml

@@ -226,22 +226,22 @@
         )
     </delete>
 
-    <select id="queryStudentSubTotalCourseTime" resultType="java.util.Map">
-        SELECT mgpscd.user_id_ 'key',SUM(CASE WHEN mgpscd.used_course_minutes_ = 0 THEN mgpscd.total_course_minutes_ ELSE 0 END) 'value'
-        FROM music_group_payment_student_course_detail mgpscd
-        LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpscd.music_group_payment_calender_id_
-        WHERE mgpc.music_group_id_ = #{musicGroupId} AND mgpscd.user_id_ IN
-        <foreach collection="studentIds" open="(" close=")" item="item" separator=",">
-            #{item}
-        </foreach>
-        GROUP BY mgpscd.user_id_
-    </select>
-
-    <select id="queryStudentSubTotalCourseTimes" resultType="java.util.Map">
-        SELECT mgpscd.course_type_ 'key',SUM(CASE WHEN mgpscd.used_course_minutes_ = 0 THEN mgpscd.total_course_minutes_ ELSE 0 END) 'value'
+    <resultMap id="StudentSubTotalCourseTimesDto" type="com.ym.mec.biz.dal.dto.StudentSubTotalCourseTimesDto">
+        <result property="userId" column="user_id_"/>
+        <result property="username" column="username_"/>
+        <result property="phone" column="phone_"/>
+        <collection property="mapDtos" ofType="com.ym.mec.biz.dal.dto.MapDto">
+            <result property="key" column="key"/>
+            <result property="value" column="value"/>
+        </collection>
+    </resultMap>
+    <select id="queryStudentSubTotalCourseTimes" resultMap="StudentSubTotalCourseTimesDto">
+        SELECT mgpscd.user_id_,su.username_,su.phone_,mgpscd.course_type_ 'key',
+               SUM(CASE WHEN mgpscd.used_course_minutes_ = 0 THEN mgpscd.total_course_minutes_ ELSE 0 END) 'value'
         FROM music_group_payment_student_course_detail mgpscd
         LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpscd.music_group_payment_calender_id_
-        WHERE mgpc.music_group_id_ = #{musicGroupId} AND mgpscd.user_id_ = #{userId}
-        GROUP BY mgpscd.course_type_
+        LEFT JOIN sys_user su ON su.id_ = mgpscd.user_id_
+        WHERE mgpc.music_group_id_ = #{musicGroupId}
+        GROUP BY mgpscd.user_id_,mgpscd.course_type_
     </select>
 </mapper>

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

@@ -12,6 +12,7 @@
         <result column="quit_date_" property="quitDate"/>
         <result column="create_time_" property="createTime"/>
         <result column="reason_" property="reason"/>
+        <result column="user_comment_" property="userComment"/>
         <result column="status_" property="status"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
@@ -36,8 +37,8 @@
         <!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval
             AS ID FROM DUAL </selectKey> -->
         INSERT INTO music_group_quit
-        (id_,user_id_,music_group_id_,join_date_,quit_date_,create_time_,reason_,status_)
-        VALUES(#{id},#{userId},#{musicGroupId},#{joinDate},#{quitDate},#{createTime},#{reason},
+        (id_,user_id_,music_group_id_,join_date_,quit_date_,create_time_,reason_,user_comment_,status_)
+        VALUES(#{id},#{userId},#{musicGroupId},#{joinDate},#{quitDate},#{createTime},#{reason},#{userComment},
         #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
     </insert>
 
@@ -57,6 +58,9 @@
             <if test="reason != null">
                 reason_ = #{reason},
             </if>
+            <if test="userComment != null">
+                user_comment_ = #{userComment},
+            </if>
             <if test="quitDate != null">
                 quit_date_ = #{quitDate},
             </if>
@@ -116,4 +120,8 @@
         GROUP BY user_id_
         )
     </select>
+
+    <select id="queryByUserIdAndMusicGroupId" resultMap="MusicGroupQuit">
+        select * from music_group_quit where id_ in (select max(id_) from music_group_quit where music_group_id_ = #{musicGroupId} AND user_id_ = #{userId})
+    </select>
 </mapper>

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

@@ -37,6 +37,7 @@
         <result column="class_date_" property="courseSchedule.classDate"/>
         <result column="start_class_time_" property="courseSchedule.startClassTime"/>
         <result column="end_class_time_" property="courseSchedule.endClassTime"/>
+        <result column="new_course_id_" property="courseSchedule.newCourseId"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -486,7 +487,7 @@
     <select id="findStudentAttendance" resultMap="StudentAttendance">
         SELECT cssp.course_schedule_id_,cssp.user_id_,cssp.group_type_,cssp.music_group_id_,sa.sign_in_time_,sa.sign_out_time_,sa.status_,
         su.username_,su.phone_,su.avatar_,cs.teach_mode_,cs.type_ course_type_,o.name_ organ_name_,tu.real_name_ teacher_name_,cs.name_ course_schedule_name_,cs.status_ course_status_,
-        cs.actual_teacher_id_ teacher_id_,cs.class_date_ ,cs.start_class_time_,cs.end_class_time_ 
+        cs.actual_teacher_id_ teacher_id_,cs.class_date_ ,cs.start_class_time_,cs.end_class_time_ ,cs.new_course_id_
         FROM course_schedule_student_payment cssp left join course_schedule cs on cs.id_ = cssp.course_schedule_id_
         left join student_attendance sa on cssp.course_schedule_id_ = sa.course_schedule_id_ and cssp.user_id_ = sa.user_id_
         LEFT JOIN sys_user su ON cssp.user_id_ = su.id_

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

@@ -163,7 +163,7 @@
 				<if test="situation.serveType!=null">
 					serve_type_=#{situation.serveType},
 				</if>
-				<if test="situation.courseIds!=null and situation.courseIds!=''">
+				<if test="situation.courseIds!=null">
 					course_ids_=#{situation.courseIds},
 				</if>
 				update_time_ = NOW()
@@ -456,4 +456,9 @@
     <select id="findTeacherNoStartServices" resultMap="StudentExtracurricularExercisesSituation">
 		SELECT * FROM student_extracurricular_exercises_situation_ WHERE teacher_id_=#{teacherId} AND actual_exercises_num_&lt;=0 AND serve_type_='HOMEWORK';
 	</select>
+
+	<select id="findServiceWithCourse"
+			resultMap="StudentExtracurricularExercisesSituation">
+		SELECT * FROM student_extracurricular_exercises_situation_ WHERE monday_=#{monday} AND FIND_IN_SET(#{courseId}, course_ids_)
+	</select>
 </mapper>

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

@@ -157,8 +157,8 @@
     </insert>
 
     <select id="queryPageOrder" parameterType="map" resultMap="StudentPaymentRouteOrderDto">
-        SELECT spo.*,spro.*,u.username_,u.phone_ FROM student_payment_route_order spro
-        LEFT JOIN student_payment_order spo ON spo.order_no_ = spro.order_no_
+        SELECT spo.*,spro.*,u.username_,u.phone_ FROM student_payment_order spo
+        LEFT JOIN student_payment_route_order spro ON spo.order_no_ = spro.order_no_
         left join sys_user u on spo.user_id_ = u.id_
         <include refid="queryPaymentOrder"/>
         ORDER BY spo.id_ DESC
@@ -166,22 +166,22 @@
     </select>
     <select id="getOrderMoneyAmount" parameterType="map" resultMap="StudentPaymentRouteOrderDto">
         SELECT SUM(spro.route_amount_) actual_amount_,SUM(spro.route_balance_amount_)
-        balance_payment_amount_ FROM student_payment_route_order spro
-        LEFT JOIN student_payment_order spo on spo.order_no_ = spro.order_no_
+        balance_payment_amount_ FROM student_payment_order spo
+        LEFT JOIN student_payment_route_order spro on spo.order_no_ = spro.order_no_
         <include refid="queryPaymentOrder"/>
     </select>
 
     <select id="getChargeAmount" parameterType="map" resultType="java.math.BigDecimal">
-        SELECT SUM(spro.route_amount_) FROM student_payment_route_order spro
-        LEFT JOIN student_payment_order spo ON spo.order_no_=spro.order_no_
+        SELECT SUM(spro.route_amount_) FROM student_payment_order spo
+        LEFT JOIN student_payment_route_order spro ON spo.order_no_=spro.order_no_
         LEFT JOIN sporadic_charge_info sci ON spo.music_group_id_ = sci.id_
         <include refid="queryPaymentOrder"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int" parameterType="map">
-        SELECT COUNT(spo.id_) FROM student_payment_route_order spro
-        LEFT JOIN student_payment_order spo ON spo.order_no_ = spro.order_no_
+        SELECT COUNT(spo.id_) FROM student_payment_order spo
+        LEFT JOIN student_payment_route_order spro ON spo.order_no_ = spro.order_no_
         LEFT JOIN sys_user u on spo.user_id_ = u.id_
         <include refid="queryPaymentOrder"/>
     </select>
@@ -347,7 +347,7 @@
                 </if>
             </if>
             <if test="noneTqType != null">
-                and spro.mer_no_ != '淘微信'
+                and spro.mer_no_ != '淘微信'
             </if>
         </where>
 		order by spro.id_ desc
@@ -378,7 +378,7 @@
         		</if>
         	</if>
             <if test="noneTqType != null">
-                and spro.mer_no_ != '淘微信'
+                and spro.mer_no_ != '淘微信'
             </if>
         </where>
 		order by spro.id_ desc

+ 15 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -42,6 +42,12 @@
         <result column="deposit_fee_" property="depositFee" />
         <result column="surplus_course_fee_" property="surplusCourseFee"/>
     </resultMap>
+    
+    <resultMap type="com.ym.mec.biz.dal.dto.StudentMusicGroupDto" id="StudentMusicGroupDto" extends="StudentRegistration">
+    	<result column="music_group_quit_status_" property="musicGroupQuit.status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="music_group_status_" property="musicGroup.status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="music_group_name_" property="musicGroup.name"/>
+    </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.StudentInfo" id="StudentInfo">
         <result column="id_" property="id"/>
@@ -708,4 +714,13 @@
         SELECT COUNT(*) FROM student_registration WHERE music_group_id_=#{musicGroupId}
         AND INTE_ARRAY(actual_subject_id_,#{subjectIds}) AND music_group_status_ = 'NORMAL'
     </select>
+    
+    <select id="queryStudentMusicGroupInfo" resultMap="StudentMusicGroupDto">
+    	select sr.*,s.name_ subject_name_,mg.status_ music_group_status_,mg.name_ music_group_name_,mgq.status_ music_group_quit_status_ 
+    	from student_registration sr left join subject s on s.id_ = sr.actual_subject_id_
+    	left join music_group mg on sr.music_group_id_ = mg.id_
+    	left join (select * from music_group_quit where id_ in (select max(id_) from music_group_quit group by music_group_id_)) mgq  on mgq.music_group_id_ = mg.id_
+    	where sr.user_id_ = #{userId}
+    	order by sr.id_ 
+    </select>
 </mapper>

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

@@ -24,6 +24,10 @@
         <result column="jpush_type_" property="jpushType"/>
     </resultMap>
     
+    <resultMap type="com.ym.mec.biz.dal.dto.SysMessageDto" id="messageDto" extends="message">
+        <result column="username_" property="user.username"/>
+    </resultMap>
+    
     <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
     	<result column="key_" property="key"/>
         <result column="value_" property="value"/>
@@ -32,31 +36,31 @@
 	<sql id="queryCondition">
 		<where>
 			<if test="jpushType != null and jpushType != ''">
-				and (jpush_type_ = #{jpushType} OR jpush_type_ IS NULL)
+				and (m.jpush_type_ = #{jpushType} OR m.jpush_type_ IS NULL)
 			</if>
 			<if test="userId != null">
-				and user_id_ = #{userId}
+				and m.user_id_ = #{userId}
 			</if>
 			<if test="receiver != null">
-				and receiver_ like '%' #{receiver} '%'
+				and m.receiver_ like '%' #{receiver} '%'
 			</if>
 			<if test="status != null">
-				and status_ = #{status,jdbcType=TINYINT}
+				and m.status_ = #{status,jdbcType=TINYINT}
 			</if>
 			<if test="readStatus != null">
-				and read_status_ = #{readStatus,jdbcType=TINYINT}
+				and m.read_status_ = #{readStatus,jdbcType=TINYINT}
 			</if>
 			<if test="title != null">
-				and title_ like '%' #{title} '%'
+				and m.title_ like '%' #{title} '%'
 			</if>
 			<if test="type != null">
-				and type_ = #{type}
+				and m.type_ = #{type}
 			</if>
 			<if test="group != null">
-				and group_ = #{group}
+				and m.group_ = #{group}
 			</if>
 			<if test="readStatus != null">
-				and read_status_ = #{readStatus}
+				and m.read_status_ = #{readStatus}
 			</if>
 		</where>
 	</sql>
@@ -158,15 +162,22 @@
     </update>
 
     <select id="queryCount" parameterType="map" resultType="int">
-		select count(*) from sys_message
+		select count(m.id_) from sys_message m
 		<include refid="queryCondition" />
-		order by create_on_ desc
+		order by m.create_on_ desc
 	</select>
 
 	<select id="queryPage" parameterType="map" resultMap="message">
-		select * from sys_message
+		select m.* from sys_message m
+		<include refid="queryCondition" />
+		order by m.create_on_ desc
+		<include refid="global.limit" />
+	</select>
+
+	<select id="queryListPage" parameterType="map" resultMap="messageDto">
+		select m.*,u.username_ from sys_message m left join sys_user u on m.user_id_ = u.id_
 		<include refid="queryCondition" />
-		order by create_on_ desc
+		order by m.create_on_ desc
 		<include refid="global.limit" />
 	</select>
 

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

@@ -93,6 +93,12 @@
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.TeacherAttendance">
         UPDATE teacher_attendance
         <set>
+            <if test="signInDeviceNo != null and signInDeviceNo != ''">
+                sign_in_device_no_ = #{signInDeviceNo},
+            </if>
+            <if test="signOutDeviceNo != null and signOutDeviceNo != ''">
+                sign_out_device_no_ = #{signOutDeviceNo},
+            </if>
             <if test="url != null and url != ''">
                 url_ = #{url},
             </if>

+ 35 - 26
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -276,18 +276,22 @@ public class RoomServiceImpl implements RoomService {
         if(roomMember == null){
             return ;
         }
-//        String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
-//        if(redisTemplate.hasKey(joinSuccessKey)){
-//            //兼容旧版本,防止重复调用
-//            redisTemplate.delete(joinSuccessKey);
-//            return;
-//        }
-//        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
-//        if(redisTemplate.hasKey(leaveSuccessKey)){
-//            redisTemplate.delete(leaveSuccessKey);
-//        }
-//        redisTemplate.opsForValue().setIfAbsent(joinSuccessKey,roomId,2l,TimeUnit.SECONDS);
-//        log.info("joinRoomSuccess : roomId={}, userId={}", roomId, userId);
+        String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
+        if(redisTemplate.hasKey(joinSuccessKey)){
+            //兼容旧版本,防止重复调用
+            redisTemplate.delete(joinSuccessKey);
+            RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
+            if(roleEnum == RoleTeacher && StringUtils.isNotEmpty(deviceNum)){
+                signInSuccess(roomMember,deviceNum);
+            }
+            return;
+        }
+        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
+        if(redisTemplate.hasKey(leaveSuccessKey)){
+            redisTemplate.delete(leaveSuccessKey);
+        }
+        redisTemplate.opsForValue().setIfAbsent(joinSuccessKey,roomId,2l,TimeUnit.SECONDS);
+        log.info("joinRoomSuccess : roomId={}, userId={}", roomId, userId);
 
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
         CourseSchedule schedule = courseScheduleDao.getLock(Long.parseLong(roomId.substring(1)));
@@ -410,21 +414,26 @@ public class RoomServiceImpl implements RoomService {
         if(roomMember == null){
             return ;
         }
-//        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
-//        if(redisTemplate.hasKey(leaveSuccessKey)){
-//            redisTemplate.delete(leaveSuccessKey);
-//            //如果设备号不为空,更新设备号
-//            return;
-//        }
-//        String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
-//        if(redisTemplate.hasKey(joinSuccessKey)){
-//            redisTemplate.delete(joinSuccessKey);
-//        }
-//        redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey,roomId,2,TimeUnit.SECONDS);
-//        //记录
-//        log.info("leaveRoomSuccess: roomId={}, userId={}", roomId,userId);
-        RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
+        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
         Integer firstCourseId = Integer.parseInt(roomId.substring(1));
+        if(redisTemplate.hasKey(leaveSuccessKey)){
+            redisTemplate.delete(leaveSuccessKey);
+            //如果设备号不为空,更新设备号
+            RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
+            if(roleEnum == RoleTeacher && StringUtils.isNotEmpty(deviceNum)){
+                signInSuccess(roomMember,deviceNum);
+                teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),Integer.parseInt(userId),deviceNum);
+            }
+            return;
+        }
+        String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
+        if(redisTemplate.hasKey(joinSuccessKey)){
+            redisTemplate.delete(joinSuccessKey);
+        }
+        redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey,roomId,2,TimeUnit.SECONDS);
+        //记录
+        log.info("leaveRoomSuccess: roomId={}, userId={}", roomId,userId);
+        RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
 
         if(roleEnum == RoleTeacher){
             courseScheduleStudentPaymentDao.adjustPlayMidi(firstCourseId,null,null);

+ 32 - 8
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -1,12 +1,10 @@
 package com.ym.mec.student.controller;
 
-import com.ym.mec.biz.dal.entity.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 
-import java.math.BigDecimal;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -18,7 +16,6 @@ import javax.annotation.Resource;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -29,10 +26,15 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
 import com.ym.mec.biz.dal.dto.RegisterPayDto;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
@@ -79,6 +81,16 @@ public class MusicGroupController extends BaseController {
         }
         return succeed(musicGroupService.queryUserMusicGroups(sysUser.getId()));
     }
+    
+    @ApiOperation("获取学生所在乐团列表")
+    @GetMapping(value = "/queryStudentMusicGroupInfo")
+    public Object queryStudentMusicGroupInfo() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(studentRegistrationService.queryStudentMusicGroupInfo(sysUser.getId()));
+    }
 
     @ApiOperation("获取学生个人中心乐团信息")
     @GetMapping(value = "/queryPersonalMusicGroups")
@@ -210,11 +222,23 @@ public class MusicGroupController extends BaseController {
         return succeed(renew);
     }
 
-    @ApiOperation(value = "退团")
+    @ApiOperation(value = "申请退团")
     @PostMapping("/quitMusicGroup")
-    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
-    public HttpResponseResult quitMusicGroup(String musicGroupId) throws Exception {
-        return succeed(musicGroupService.applyQuitMusicGroup(musicGroupId));
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String"),
+    	@ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String")})
+    public HttpResponseResult quitMusicGroup(String musicGroupId, String reason) throws Exception {
+        return succeed(musicGroupService.applyQuitMusicGroup(musicGroupId, reason));
+    }
+
+    @ApiOperation(value = "取消退团申请")
+    @PostMapping("/cancelQuitMusicGroup")
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String"),
+    	@ApiImplicitParam(name = "reason", value = "取消原因", required = true, dataType = "String")})
+    public HttpResponseResult cancelQuitMusicGroup(String musicGroupId, String reason) throws Exception {
+    	SysUser sysUser = sysUserFeignService.queryUserInfo();
+        Integer userId = sysUser.getId();
+        
+        return succeed(musicGroupService.cancelQuitMusicGroup(userId, musicGroupId, reason));
     }
 
     @ApiOperation(value = "查询是否有待支付的报名订单")

+ 45 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentAttendanceController.java

@@ -0,0 +1,45 @@
+package com.ym.mec.student.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.common.controller.BaseController;
+
+@RequestMapping("studentAttendance")
+@Api(tags = "学生考勤服务")
+@RestController
+public class StudentAttendanceController extends BaseController {
+
+    @Autowired
+    private StudentAttendanceService studentAttendanceService;
+    @Autowired
+    private ClassGroupService classGroupService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
+
+
+    @ApiOperation(value = "获取某节课学生签到列表")
+    @GetMapping("/findStudentAttendance")
+    public Object findStudentAttendance(StudentAttendanceQueryInfo queryInfo){
+    	SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        queryInfo.setStudentID(sysUser.getId());
+        return succeed(studentAttendanceService.findStudentAttendance(queryInfo));
+    }
+
+}

+ 23 - 12
mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -1,19 +1,11 @@
 package com.ym.mec.student.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dto.CashAccountDetail;
-import com.ym.mec.biz.dal.entity.SysSuggestion;
-import com.ym.mec.biz.dal.entity.SysUserBankCard;
-import com.ym.mec.biz.service.*;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.UploadReturnBean;
-import com.ym.mec.common.filters.TenantIdThreadLocal;
-import com.ym.mec.common.page.QueryInfo;
-import com.ym.mec.util.upload.UploadUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+
+import java.util.Date;
+
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -25,7 +17,25 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.util.Date;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.CashAccountDetail;
+import com.ym.mec.biz.dal.entity.SysSuggestion;
+import com.ym.mec.biz.dal.entity.SysUserBankCard;
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.ImGroupNoticeService;
+import com.ym.mec.biz.service.StudentManageService;
+import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.biz.service.SysSuggestionService;
+import com.ym.mec.biz.service.SysUserBankCardService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.biz.service.UploadFileService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.UploadReturnBean;
+import com.ym.mec.common.filters.TenantIdThreadLocal;
+import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.util.upload.UploadUtil;
 
 @Api(tags = "学生管理")
 @RestController
@@ -199,4 +209,5 @@ public class StudentManageController extends BaseController {
         }
         return succeed(subjectService.findSubSubjects(tenantId));
     }
+
 }

+ 4 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -40,6 +40,7 @@ import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @RequestMapping("studentOrder")
 @Api(tags = "订单回调")
@@ -130,7 +131,10 @@ public class StudentOrderController extends BaseController {
             MusicGroup musicGroup = musicGroupService.get(orderByOrderNo.getMusicGroupId());
             List<Goods> goodsList = studentPaymentOrderDetailService.findApplyOrderGoods(orderByOrderNo.getId());
             List<String> orderDetailType = studentPaymentOrderDetailService.getOrderDetailType(orderByOrderNo.getId());
+            List<StudentPaymentOrderDetail> orderDetail1 = studentPaymentOrderDetailService.getOrderDetail(orderByOrderNo.getId());
+            String kitGroupPurchaseType = orderDetail1.stream().filter(e -> e.getGoodsList() != null).filter(e -> e.getKitGroupPurchaseType() != null).map(e -> e.getKitGroupPurchaseType().getCode()).collect(Collectors.joining(","));
             orderDetail.put("goods", goodsList);
+            orderDetail.put("kitGroupPurchaseType",kitGroupPurchaseType);
             orderDetail.put("course", musicGroup.getCourseForm());
             orderDetail.put("ownershipType", musicGroup.getOwnershipType());
             orderDetail.put("detailType", orderDetailType);

+ 14 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Payment.java

@@ -121,6 +121,20 @@ public class Payment {
         return payment;
     }
 
+    public static Map<String, Object> queryConfirmList(String paymentId) throws Exception {
+        Map<String, Object> paymentParams = new HashMap<>();
+        paymentParams.put("app_id", ConfigInit.appId);
+        paymentParams.put("payment_id", paymentId);
+
+        Map<String, Object> payment = com.huifu.adapay.model.Payment.queryConfirmList(paymentParams);
+        String error_code = (String) payment.get("error_code");
+        if (null != error_code) {
+            String errorMsg = (String) payment.get("error_msg");
+            throw new ThirdpartyException(errorMsg);
+        }
+        return payment;
+    }
+
 
     public static Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String sellerNo, List<Map<String, Object>> tempRoutingList) throws Exception {
         Map<String, Object> paymentParams = new LinkedHashMap<>();

+ 31 - 10
mec-web/src/main/java/com/ym/mec/web/controller/AdapayController.java

@@ -28,6 +28,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
+import java.math.BigDecimal;
 import java.util.*;
 
 @RequestMapping("adapay")
@@ -137,7 +138,7 @@ public class AdapayController extends BaseController {
         long createdLte = DateUtil.getLastSecondWithDay(endTime).getTime();
         int pageIndex = 1;
         List<Map<String, Object>> data = new ArrayList<>();
-        while (profiles.equals("prod")) {
+        while (profiles.equals("dev")) {
             Map<String, Object> paymentList = Payment.queryList(pageIndex, createdGte, createdLte);
             JSONArray payments = (JSONArray) paymentList.get("payments");
             if (!paymentList.get("status").equals("succeeded")) {
@@ -163,17 +164,37 @@ public class AdapayController extends BaseController {
                     } else {
                         paymentMap.put("status", "交易失败");
                     }
-                    JSONArray divMembers = (JSONArray) paymentMap.get("div_members");
-                    for (Object divMember : divMembers) {
-                        Map<String, Object> divMemberMap = (Map<String, Object>) divMember;
-                        divMemberMap.putAll(paymentMap);
-                        if (divMemberMap.get("member_id").equals("0")) {
-                            divMemberMap.put("member_id", ConfigInit.merNo);
+                    if (paymentMap.get("pay_mode").equals("delay")) {
+                        Map<String, Object> confirmMap = Payment.queryConfirmList(paymentMap.get("id").toString());
+                        JSONArray confirms = (JSONArray) confirmMap.get("payment_confirms");
+                        for (Object confirm : confirms) {
+                            Map<String, Object> divMemberMap = (Map<String, Object>) confirm;
+                            divMemberMap.putAll(paymentMap);
+
+                            JSONArray divMembers = (JSONArray) divMemberMap.get("div_members");
+                            Map<String, Object> divMember = (Map<String, Object>) divMembers.get(0);
+                            divMemberMap.putAll(divMember);
+                            if (divMemberMap.get("member_id").equals("0")) {
+                                divMemberMap.put("member_id", ConfigInit.merNo);
+                            }
+                            BigDecimal feeAmt = (new BigDecimal(divMemberMap.get("amount").toString())).multiply(new BigDecimal("0.28")).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
+                            divMemberMap.put("fee_amt", feeAmt);
+                            data.add(divMemberMap);
                         }
-                        if (divMemberMap.get("fee_flag").equals("N")) {
-                            divMemberMap.put("fee_amt", "0.00");
+
+                    } else {
+                        JSONArray divMembers = (JSONArray) paymentMap.get("div_members");
+                        for (Object divMember : divMembers) {
+                            Map<String, Object> divMemberMap = (Map<String, Object>) divMember;
+                            divMemberMap.putAll(paymentMap);
+                            if (divMemberMap.get("member_id").equals("0")) {
+                                divMemberMap.put("member_id", ConfigInit.merNo);
+                            }
+                            if (divMemberMap.get("fee_flag").equals("N")) {
+                                divMemberMap.put("fee_amt", "0.00");
+                            }
+                            data.add(divMemberMap);
                         }
-                        data.add(divMemberMap);
                     }
                 }
             }

+ 8 - 3
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -1686,15 +1686,20 @@ public class ExportController extends BaseController {
                     row.setSignOutStatusStr(signOutTimeStr + "(异常签退)");
                 }
             }
+            if(row.getBelongDaya()==1){
+                row.setSalaryType("基本课酬");
+            }else{
+                row.setSalaryType("其它课酬");
+            }
         }
         OutputStream ouputStream = null;
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(
                     new String[]{"分部", "课程组类型", "课程编号", "时间", "课程名称", "老师编号", "老师姓名", "签到时间", "签退时间",
-                            "学员缴费", "应发课酬", "课酬扣款", "结算课酬", "状态", "备注", "扣款原因"},
+                            "学员缴费", "课酬类型", "应发课酬", "课酬扣款", "结算课酬", "状态", "备注", "扣款原因"},
                     new String[]{"organName", "groupType.desc", "courseScheduleId", "startClassTime", "courseName", "teacherId", "teacherName",
-                            "signInStatusStr", "signOutStatusStr", "actualReceipts", "actualSalary", "reduceSalary", "finalSalary", "confirmStatus.desc",
-                            "memo", "deductionReason"}, rows);
+                            "signInStatusStr", "signOutStatusStr", "actualReceipts", "salaryType", "actualSalary", "reduceSalary", "finalSalary",
+                            "confirmStatus.desc", "memo", "deductionReason"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             ouputStream = response.getOutputStream();

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -124,8 +124,8 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "乐团管理--乐团详情--学员列表--获取学员可排课时长")
     @GetMapping("/queryStudentSubTotalCourseTimes")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentSubTotalCourseTimes')")
-    public Object queryStudentSubTotalCourseTimes(Integer userId,String musicGroupId){
-        return succeed(studentManageService.queryStudentSubTotalCourseTimes(userId,musicGroupId));
+    public Object queryStudentSubTotalCourseTimes(String musicGroupId){
+        return succeed(studentManageService.queryStudentSubTotalCourseTimes(musicGroupId));
     }
 
     @ApiOperation(value = "乐团修改--学员缴费记录--可新增学员列表")

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

@@ -3,9 +3,6 @@ package com.ym.mec.web.controller;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
-import java.io.IOException;
-
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -15,15 +12,12 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.SysMessage;
+import com.ym.mec.biz.dal.dto.SysMessageDto;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
-import com.ym.mec.util.validator.CommonValidator;
 
 @RestController
 @Api(tags = "消息服务")
@@ -47,7 +41,7 @@ public class SysMessageController extends BaseController {
 			queryInfo.setUserId(sysUser.getId());
 		}
 		queryInfo.setType(MessageSendMode.SEO.getCode());
-		PageInfo<SysMessage> pageInfo = sysMessageService.queryPage(queryInfo);
+		PageInfo<SysMessageDto> pageInfo = sysMessageService.queryListPage(queryInfo);
 		return succeed(pageInfo);
 	}
 

+ 6 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -3,6 +3,7 @@ package com.ym.mec.web.controller;
 import com.ym.mec.biz.event.source.CourseEventSource;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.redis.service.RedisCache;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -85,6 +86,8 @@ public class TaskController extends BaseController {
 
 	@Autowired
 	private CourseEventSource courseEventSource;
+	@Autowired
+	private RedisCache<String, Object> redisCache;
 
 	@GetMapping(value = "/autoAffirmReceiveTask")
 	// 自动确认收货
@@ -126,6 +129,7 @@ public class TaskController extends BaseController {
 	// vip课课酬结算
 	public void vipGroupTeacherSalarySettlement() {
 		courseScheduleTeacherSalaryService.teacherSalarySettlement();
+		redisCache.getRedisTemplate().opsForSet().add(CourseScheduleTeacherSalaryService.TASK_KEY, "VIP");
 		courseScheduleTeacherSalaryService.salaryMark();
 	}
 
@@ -133,6 +137,7 @@ public class TaskController extends BaseController {
 	// 陪练课课酬结算
 	public void practiceTeacherSalarySettlement() {
 		courseScheduleTeacherSalaryService.practiceTeacherSalarySettlement();
+		redisCache.getRedisTemplate().opsForSet().add(CourseScheduleTeacherSalaryService.TASK_KEY, "PRACTICE");
 		courseScheduleTeacherSalaryService.salaryMark();
 	}
 
@@ -140,6 +145,7 @@ public class TaskController extends BaseController {
 	@GetMapping("/musicGroupTeacherSalarySettlement")
 	public void musicGroupTeacherSalarySettlement() {
 		courseScheduleTeacherSalaryService.musicGroupTeacherSalarySettlement();
+		redisCache.getRedisTemplate().opsForSet().add(CourseScheduleTeacherSalaryService.TASK_KEY, "MUSIC");
 		courseScheduleTeacherSalaryService.salaryMark();
 	}