Browse Source

Merge branch 'master' into export_order

周箭河 4 years ago
parent
commit
d1e9c80d77
30 changed files with 248 additions and 191 deletions
  1. 13 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  3. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java
  4. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentCalenderDto.java
  5. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroup.java
  6. 4 9
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MusicGroupStatusEnum.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/event/listener/CourseEventListener.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleStudentPaymentService.java
  10. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java
  12. 8 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  13. 1 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  14. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java
  15. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java
  16. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java
  17. 15 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  18. 25 17
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  19. 38 79
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  20. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java
  21. 50 18
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  22. 6 4
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  23. 3 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  24. 12 5
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  25. 3 2
      mec-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml
  26. 2 2
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  27. 0 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java
  28. 0 10
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java
  29. 2 1
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  30. 11 2
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

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

@@ -842,12 +842,12 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<CourseSchedule> findCourseScheduleWithDate(@Param("startDate") String startDate, @Param("endDate") String endDate);
 
     /**
-     * @describe 统计指定时间段内已结算的课程组类型数量
-     * @author Joburgess
-     * @date 2020/12/29 0029
      * @param startDate:
      * @param endDate:
      * @return int
+     * @describe 统计指定时间段内已结算的课程组类型数量
+     * @author Joburgess
+     * @date 2020/12/29 0029
      */
     int countIsSalaryGroupTypes(@Param("startDate") String startDate, @Param("endDate") String endDate);
 
@@ -1744,6 +1744,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * 根据班级编号和课程编号获取课程列表
+     *
      * @param classGroupId
      * @param allLockCourseIds
      * @return
@@ -1752,8 +1753,17 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * 获取班级总剩余时长
+     *
      * @param masterClassGroupId
      * @return
      */
     Integer queryTotalCourseTimes(Integer masterClassGroupId);
+
+
+    /**
+     * 获取进行中课程数量
+     *
+     * @return
+     */
+    Integer getUnderwayCourseNum(@Param("musicGroupId") String musicGroupId, @Param("groupType") GroupType groupType, @Param("status") CourseStatusEnum status);
 }

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

@@ -400,7 +400,9 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @date 2020/12/2 0002
      * @return java.util.List<com.ym.mec.biz.dal.entity.CourseScheduleStudentPaymentDto>
      */
-    List<CourseScheduleStudentPaymentDto> findNeedUpdateActualPriceStudentCourses(@Param("courseIds") List<Long> courseIds);
+    List<CourseScheduleStudentPaymentDto> findNeedUpdateActualPriceStudentCourses(@Param("groupIds") List<String> groupIds,
+                                                                                  @Param("userIds") List<Integer> userIds,
+                                                                                  @Param("groupType") GroupType groupType);
 
     /**
      * 根据课程编号和,学员编号获取列表信息

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import java.util.List;
+import java.util.Set;
 
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import org.apache.ibatis.annotations.Param;
@@ -34,5 +35,5 @@ public interface ImUserFriendDao extends BaseDAO<Long, ImUserFriend> {
 	 * @param teachers
 	 * @param teacherId
 	 */
-	void batchInsert(@Param("teachers") List<BasicUserDto> teachers, @Param("teacherId") Integer teacherId);
+	void batchInsert(@Param("teachers") Set<BasicUserDto> teachers, @Param("teacherId") Integer teacherId);
 }

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

@@ -202,10 +202,20 @@ public class MusicGroupPaymentCalenderDto {
 
 		private Date deadlinePaymentDate;
 
+		private BigDecimal paymentAmount;
+
 		private Date paymentValidStartDate;
 
 		private Date paymentValidEndDate;
 
+		public BigDecimal getPaymentAmount() {
+			return paymentAmount;
+		}
+
+		public void setPaymentAmount(BigDecimal paymentAmount) {
+			this.paymentAmount = paymentAmount;
+		}
+
 		public java.util.Date getStartPaymentDate() {
 			return startPaymentDate;
 		}

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

@@ -51,6 +51,10 @@ public class ClassGroup {
 	@ApiModelProperty(value = "乐团名称", required = true)
 	private String musicGroupName;
 
+	/** 分部 */
+	@ApiModelProperty(value = "分部", required = true)
+	private String organName;
+
 	/** 子班级名称列表 */
 	@ApiModelProperty(value = "子班班级名称")
 	private String classNames;
@@ -96,6 +100,14 @@ public class ClassGroup {
 	
 	private List<CourseSchedule> courseScheduleList = new ArrayList<CourseSchedule>();
 
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
 	public String getViewGroupName() {
 		return viewGroupName;
 	}

+ 4 - 9
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MusicGroupStatusEnum.java

@@ -3,23 +3,18 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum MusicGroupStatusEnum implements BaseEnum<String, MusicGroupStatusEnum> {
-	DRAFT("DRAFT", "草稿"), FEE_AUDIT("FEE_AUDIT","费用审核中"), AUDIT("AUDIT", "审核中"),
-	AUDIT_FAILED("AUDIT_FAILED", "审核失败"), APPLY("APPLY", "报名中"),
-	PAY("PAY", "缴费中"), PREPARE("PREPARE", "筹备中"),
-	PROGRESS("PROGRESS", "进行中"), CANCELED("CANCELED", "取消"), PAUSE("PAUSE", "暂停"),
-	CLOSE("CLOSE", "关闭");
+	DRAFT("草稿"), AUDIT("审核中"), AUDIT_FAILED("审核失败"), PRE_APPLY("预报名"), PRE_BUILD_FEE("创建缴费"), FEE_AUDIT("费用审核中"), APPLY("报名中"), PAY("缴费中"), PREPARE("筹备中"), PROGRESS(
+			"进行中"), CANCELED("取消"), PAUSE("暂停"), CLOSE("关闭");
 
-	private String code;
 	private String msg;
 
-	MusicGroupStatusEnum(String code, String msg) {
-		this.code = code;
+	MusicGroupStatusEnum(String msg) {
 		this.msg = msg;
 	}
 
 	@Override
 	public String getCode() {
-		return this.code;
+		return this.name();
 	}
 
 	public String getMsg() {

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/event/listener/CourseEventListener.java

@@ -56,7 +56,7 @@ public class CourseEventListener {
         logger.info("课程状态变更(执行开始):{}", courseStatusChangeEvent.getCourseIds());
 
         try{
-            courseScheduleStudentPaymentService.updateCourseActualPrice(new ArrayList<>(courseStatusChangeEvent.getCourseIds()));
+            courseScheduleStudentPaymentService.updateCourseActualPrice(null, null, null);
         } finally {
             redisCache.delete(KEY);
         }

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

@@ -512,7 +512,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param studentIds
      * @return
      */
-    List<MusicGroupPaymentCalenderStudentDetail> queryStudentPaymentCalenders(Integer masterClassGroupId,List<Map<Integer, String>> classGroupStudents,List<Integer> studentIds);
+    List<MusicGroupPaymentCalenderStudentDetail> queryStudentPaymentCalenders(Integer masterClassGroupId,String classGroupStudents,List<Integer> studentIds);
 
     /**
      * 获取主班课程类型剩余价值

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

@@ -125,6 +125,6 @@ public interface CourseScheduleStudentPaymentService extends BaseService<Long, C
 	 * @date 2020/12/2 0002
 	 * @return void
 	 */
-	void updateCourseActualPrice(List<Long> courseIds);
+	void updateCourseActualPrice(List<String> groupIds, List<Integer> userIds, GroupType groupType);
 
 }

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

@@ -344,4 +344,12 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      */
     Boolean batchDelRegs(String musicGroupId,List<Integer> userIds);
 
+
+    /**
+     * 获取乐团学员剩余课程金额
+     * @param musicGroupId
+     * @return
+     */
+    List<StudentRegistration> getMusicGroupStuReBack(String musicGroupId);
+
 }

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

@@ -78,7 +78,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
      * @param search
      * @return
      */
-    void queryGroupStudents1(Integer id, String search);
+    List<ImUserFriendDto> queryGroupStudents1(Integer id, String search);
 
     /**
      * 获取教师通讯录学员列表

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

@@ -72,7 +72,6 @@ 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.util.collection.MapUtil;
 import com.ym.mec.util.date.DateConvertor;
 import com.ym.mec.util.date.DateUtil;
@@ -140,7 +139,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
     @Autowired
     private StudentApplyRefundsDao studentApplyRefundsDao;
-
     @Autowired
     private RedisCache<String, Object> redisCache;
     @Autowired
@@ -2936,6 +2934,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             Map<Integer, Long> totalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countTotalNumByClassGroupId(classGroupSet, null));
             Map<Integer, Long> currentNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countExpendNumByClassGroupId(classGroupSet));
+
             for (ClassGroupTeachersDto classGroup : dataList) {
                 List<ClassGroupTeacherMapper> classGroupTeacherMappers = new ArrayList<>();
                 for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
@@ -3583,7 +3582,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public List<MusicGroupPaymentCalenderStudentDetail> queryStudentPaymentCalenders(Integer masterClassGroupId,List<Map<Integer, String>> classGroupStudents,List<Integer> studentIds) {
+    public List<MusicGroupPaymentCalenderStudentDetail> queryStudentPaymentCalenders(Integer masterClassGroupId,String classGroupStudentMap,List<Integer> studentIds) {
         //获取主班剩余课程时长
         Map<String, BigDecimal> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseTimeMap(masterClassGroupId));
         if(masterMap.size() <= 0){
@@ -3595,13 +3594,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         Map<Integer, Integer> studentCLassMap = new HashMap<>();
         List<Map<Integer, BigDecimal>> surplusCourseFeeMapList = new ArrayList<>();
-        for (Map<Integer, String> classGroupStudent : classGroupStudents) {
-            for (Integer integer : classGroupStudent.keySet()) {
+        List<Map<String,String>> classGroupStudents = (List<Map<String,String>>)JSON.parse(classGroupStudentMap);
+        for (Map<String, String> classGroupStudent : classGroupStudents) {
+            for (String integer : classGroupStudent.keySet()) {
                 //获取学员剩余课程费用
-                surplusCourseFeeMapList.addAll(studentRegistrationDao.querySurplusCourseFeeByClassGroupId(integer,classGroupStudent.get(integer)));
+                surplusCourseFeeMapList.addAll(studentRegistrationDao.querySurplusCourseFeeByClassGroupId(Integer.parseInt(integer),classGroupStudent.get(integer)));
                 String[] s = classGroupStudent.get(integer).split(",");
                 for (String s1 : s) {
-                    studentCLassMap.put(Integer.parseInt(s1),integer);
+                    studentCLassMap.put(Integer.parseInt(s1),Integer.parseInt(integer));
                 }
             }
         }
@@ -3717,7 +3717,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<Map<Integer, String>> classGroupStudents = mergeClassSplitClassAffirmDto.getClassGroupStudents();
         //获取默认的学员缴费详情
         List<MusicGroupPaymentCalenderStudentDetail> musicGroupPaymentCalenderStudentDetails = queryStudentPaymentCalenders(masterClassGroupId,
-                classGroupStudents,
+                JSON.toJSONString(mergeClassSplitClassAffirmDto.getClassGroupStudents()),
                 studentIds);
         //创建缴费项目
         MusicGroup musicGroup = musicGroupDao.findByClassGroupId(masterClassGroupId);

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

@@ -3953,13 +3953,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             }
         }
 
-		Set<Long> courseIds = null;
 		if (updateList.size() > 0) {
             courseScheduleDao.batchUpdate(updateList);
-			courseIds = updateList.stream().map(CourseSchedule::getId).collect(Collectors.toSet());
         }
 
-		courseEventSource.courseStatusChange(courseIds);
+		courseEventSource.courseStatusChange(null);
 
         // 更新班级已上课次
         if (classGroupIds.size() > 0) {

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

@@ -691,8 +691,9 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void updateCourseActualPrice(List<Long> courseIds) {
-		List<CourseScheduleStudentPaymentDto> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findNeedUpdateActualPriceStudentCourses(courseIds);
+	public void updateCourseActualPrice(List<String> groupIds, List<Integer> userIds, GroupType groupType) {
+		studentDao.lockUser(1);
+		List<CourseScheduleStudentPaymentDto> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findNeedUpdateActualPriceStudentCourses(groupIds, userIds, groupType);
 		if(CollectionUtils.isEmpty(courseScheduleStudentPayments)){
 			return;
 		}

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

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service.impl;
 import java.util.Date;
 import java.util.List;
 
+import com.ym.mec.biz.service.TeacherService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -19,6 +20,8 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 
 	@Autowired
 	private ImUserFriendDao imUserFriendDao;
+	@Autowired
+	private TeacherService teacherService;
 
 	@Override
 	public BaseDAO<Long, ImUserFriend> getDAO() {
@@ -73,7 +76,11 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 
 	@Override
 	public List<ImUserFriendDto> queryFriendListByUserId(Integer userId, String search) {
-		return imUserFriendDao.queryFriendListByUserId(userId, search);
+		List<ImUserFriendDto> imUserFriendDtos = imUserFriendDao.queryFriendListByUserId(userId, search);
+		if(imUserFriendDtos.size() == 0){
+			return teacherService.queryGroupStudents1(userId,search);
+		}
+		return imUserFriendDtos;
 	}
 
 	@Override

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

@@ -86,9 +86,10 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		LocalDate nowDate = LocalDate.now();
 
 		List<Organization> allOrgans = organizationDao.findAllOrgans();
-		Set<Integer> organIds = allOrgans.stream().map(Organization::getId).collect(Collectors.toSet());
-		this.organIds.get().clear();
-		this.organIds.get().addAll(organIds);
+		if(CollectionUtils.isEmpty(this.organIds.get())){
+			this.organIds.get().clear();
+			this.organIds.get().addAll(allOrgans.stream().map(Organization::getId).collect(Collectors.toSet()));
+		}
 
 		startMonth = df.format(nowDate);
 

+ 15 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -147,6 +147,11 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		if (musicGroup == null) {
 			throw new BizException("乐团查询失败,请检查参数");
 		}
+		
+		if (musicGroup.getStatus() != MusicGroupStatusEnum.PROGRESS && musicGroup.getStatus() != MusicGroupStatusEnum.PRE_BUILD_FEE) {
+			throw new BizException("创建失败:乐团当前状态不能创建缴费");
+		}
+		
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (sysUser == null) {
 			throw new BizException("请登录");
@@ -397,17 +402,14 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 		// 如果是报名,需要修改乐团状态
 		if (paymentType == MUSIC_APPLY) {
-			if (musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT) {
-				throw new BizException("创建失败:缴费项目类型不匹配");
-			}
 			if (status != AUDITING) {
-				musicGroup.setStatus(MusicGroupStatusEnum.AUDIT);
+				musicGroup.setStatus(MusicGroupStatusEnum.APPLY);
 				// 记录操作日志
-				musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "报名缴费项目创建成功(草稿 -> 基础信息审核中)", sysUser.getId(), ""));
+				musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "报名缴费项目创建成功(创建缴费 -> 报名中)", sysUser.getId(), ""));
 			} else {
 				musicGroup.setStatus(MusicGroupStatusEnum.FEE_AUDIT);
 				// 记录操作日志
-				musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "报名缴费项目创建成功(草稿 -> 费用审核中)", sysUser.getId(), ""));
+				musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "报名缴费项目创建成功(创建缴费 -> 费用审核中)", sysUser.getId(), ""));
 			}
 			musicGroup.setUpdateTime(date);
 			musicGroupDao.update(musicGroup);
@@ -554,10 +556,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			}else if(paymentType == SPAN_GROUP_CLASS_ADJUST){
 				MusicGroupStudentClassAdjust adjust = musicGroupStudentClassAdjustDao.findByBatchNo(batchNo);
 				//获取默认的学员缴费详情
-				List<Map<Integer,String>> classGroupStudents = (List<Map<Integer,String>>)JSON.parse(adjust.getClassGroupStudents());
 				List<Integer> studentIds = JSON.parseArray(adjust.getStudentIds(), Integer.class);
 				List<MusicGroupPaymentCalenderStudentDetail> musicGroupPaymentCalenderStudentDetails = classGroupService.queryStudentPaymentCalenders(adjust.getMasterClassGroupId(),
-						classGroupStudents,studentIds);
+						adjust.getClassGroupStudents(),studentIds);
 				List<MusicGroupPaymentCalenderStudentDetail> calenderStudentDetails = musicGroupPaymentCalenderDto.getMusicGroupPaymentCalenderStudentDetails();
 				boolean containsAll = musicGroupPaymentCalenderStudentDetails.containsAll(calenderStudentDetails);
 				if(!containsAll){
@@ -599,6 +600,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					musicGroupPaymentCalenderCourseSettingsList.size());
 
 			BigDecimal totalPaymentAmount = new BigDecimal(0);
+			if(musicGroupPaymentCalenderDto.getPaymentType() == SPAN_GROUP_CLASS_ADJUST){
+				totalPaymentAmount = musicGroupPaymentDateRange.getPaymentAmount();
+			}
 			for (MusicGroupPaymentCalenderCourseSettings pccs : musicGroupPaymentCalenderCourseSettingsList) {
 
 				MusicGroupPaymentCalenderCourseSettings tempPccs = new MusicGroupPaymentCalenderCourseSettings();
@@ -717,17 +721,14 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 		// 如果是报名,需要修改乐团状态
 		if (paymentType == MUSIC_APPLY) {
-			if (musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT) {
-				throw new BizException("创建失败:缴费项目类型不匹配");
-			}
 			if (status != AUDITING) {
-				musicGroup.setStatus(MusicGroupStatusEnum.AUDIT);
+				musicGroup.setStatus(MusicGroupStatusEnum.APPLY);
 				// 记录操作日志
-				musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "报名缴费项目创建成功(草稿 -> 基础信息审核中)", sysUser.getId(), ""));
+				musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "报名缴费项目创建成功(创建缴费 -> 报名中)", sysUser.getId(), ""));
 			} else {
 				musicGroup.setStatus(MusicGroupStatusEnum.FEE_AUDIT);
 				// 记录操作日志
-				musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "报名缴费项目创建成功(草稿 -> 费用审核中)", sysUser.getId(), ""));
+				musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "报名缴费项目创建成功(创建缴费 -> 费用审核中)", sysUser.getId(), ""));
 			}
 			musicGroup.setUpdateTime(date);
 			musicGroupDao.update(musicGroup);

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

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service.impl;
 
 import static com.ym.mec.biz.dal.enums.DealStatusEnum.CLOSE;
 import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
+import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
 
 import java.io.IOException;
 import java.math.BigDecimal;
@@ -18,6 +19,7 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.enums.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -103,20 +105,6 @@ 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.ClassGroupTypeEnum;
-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.MusicGroupStatusEnum;
-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.SporadicChargeTypeEnum;
-import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.ClassGroupStudentMapperService;
@@ -348,7 +336,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                         studentRegistration.setId(null);
                         if (musicGroupSubjectPlan.getFee().compareTo(BigDecimal.ZERO) == 0) {
                             studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
-                            studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
+                            studentRegistration.setPaymentStatus(YES);
                         } else {
                             studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
                             studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
@@ -1688,6 +1676,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupQuit.setQuitDate(date);
         musicGroupQuitDao.update(musicGroupQuit);
 
+        courseScheduleStudentPaymentService.updateCourseActualPrice(Arrays.asList(musicGroupId), Arrays.asList(userId), GroupType.MUSIC);
+
         if (status == ApprovalStatus.APPROVED) {
 
             StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
@@ -1829,7 +1819,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (musicGroup == null) {
             throw new BizException("乐团不存在");
         }
-
         if (musicGroup.getStatus() == MusicGroupStatusEnum.CANCELED || musicGroup.getStatus() == MusicGroupStatusEnum.PAUSE) {
             throw new BizException("退团失败,乐团状态[已取消]或[已暂停]");
         }
@@ -1847,6 +1836,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 			throw new BizException("退团失败,存在[进行中]的课程");
 		}
 
+        courseScheduleStudentPaymentService.updateCourseActualPrice(Arrays.asList(musicGroupId), Arrays.asList(userId), GroupType.MUSIC);
+
         Date date = new Date();
 
         MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
@@ -1988,7 +1979,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new BizException("缴费项目不存在");
         }
         StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, calender.getMusicGroupId());
-        if (studentRegistration == null || studentRegistration.getPaymentStatus() != PaymentStatusEnum.YES) {
+        if (studentRegistration == null || studentRegistration.getPaymentStatus() != YES) {
             throw new BizException("请走报名缴费流程");
         }
         Integer organId = studentRegistration.getOrganId();
@@ -2132,6 +2123,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 musicGroupStudentFee.setTemporaryCourseFee(new BigDecimal(0));
                 musicGroupStudentFeeDao.update(musicGroupStudentFee);
             }
+            //如果是进行中加学员
+            MusicGroupPaymentCalender paymentCalender = musicGroupPaymentCalenderDao.get(calenderDetail.getMusicGroupPaymentCalenderId());
+            if(paymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.ADD_STUDENT){
+                studentRegistration.setPaymentStatus(YES);
+                studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
+                studentRegistrationDao.update(studentRegistration);
+            }
             /*if (musicGroupPaymentCalender.getType().equals(MusicGroupPaymentCalender.FeeType.ONLINE)) {
                 Integer getRemainNetworkClassTimes = musicGroupStudentFee.getRemainNetworkClassTimes() == null ? 0 : musicGroupStudentFee.getRemainNetworkClassTimes();
                 musicGroupStudentFee.setRemainNetworkClassTimes(getRemainNetworkClassTimes + 1);
@@ -2689,6 +2687,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             hasUsers.add(studentRegistration.getUserId());
             newRegs.add(studentRegistration);
         }
+        if(registerIds.size() >0 && newRegs.size()<=0){
+            throw new BizException("添加的学员,乐团已存在");
+        }
         studentRegistrations = newRegs;
 
         List<Integer> subjectIds = studentRegistrations.stream().map(StudentRegistration::getActualSubjectId).collect(Collectors.toList());
@@ -2757,10 +2758,17 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new BizException("乐团当前状态是{},不能关闭", musicGroup.getStatus().getMsg());
         }
 
+        //有进行中的课不能关闭乐团
+        Integer underwayCourseNum = courseScheduleDao.getUnderwayCourseNum(musicGroup.getId(), GroupType.MUSIC, CourseStatusEnum.UNDERWAY);
+        if(underwayCourseNum >0){
+            throw new BizException("乐团有进行的课程,不能关闭");
+        }
         musicGroup.setStatus(MusicGroupStatusEnum.CLOSE);
         musicGroup.setUpdateTime(new Date());
         musicGroupDao.update(musicGroup);
 
+        courseScheduleStudentPaymentService.updateCourseActualPrice(Arrays.asList(musicGroup.getId()), null, GroupType.MUSIC);
+
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(closeMusicGroupDto.getMusicGroupId(), "关闭乐团", sysUser.getId(), ""));
 
         List<StudentRegistration> musicGroupRegs = studentRegistrationDao.findMusicGroupStudent(closeMusicGroupDto.getMusicGroupId(), null);

+ 38 - 79
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1,5 +1,9 @@
 package com.ym.mec.biz.service.impl;
 
+import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
+import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
+import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
+
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -16,8 +20,6 @@ import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 
-import com.ym.mec.auth.api.enums.CertificateTypeEnum;
-import com.ym.mec.biz.dal.entity.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -32,6 +34,7 @@ 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.auth.api.enums.CertificateTypeEnum;
 import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dao.GoodsDao;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
@@ -57,6 +60,30 @@ 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;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
+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.MusicGroupPaymentCalenderCourseSettings;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.StudentCourseFeeDetail;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+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;
@@ -89,8 +116,6 @@ import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.SysUserCashAccountDetailService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
-import com.ym.mec.common.entity.ImGroupMember;
-import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.exception.BizException;
@@ -102,10 +127,6 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 
-import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
-import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
-import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
-
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
 
@@ -729,62 +750,11 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId()), MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_ADD_STUDENT, "", musicGroup.getName(), studentRegistration.getName());
             //增加报名学生数
             musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId, studentRegistration.getSubjectId(), 1);
-            //添加班级关联
-            addStudents(studentAddDto, userId);
-            //保存乐团学生费用表
-            if (studentAddDto.getCourseFee() == null) {
-                MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
-                studentAddDto.setCourseFee(musicOneSubjectClassPlan.getFee());
-            }
-//            Date nextPaymentDate = musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId, null, null);
-
-            StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
-
-            if (waitPayOrder != null) {
-                waitPayOrder.setStatus(DealStatusEnum.CLOSE);
-                studentPaymentOrderService.update(waitPayOrder);
-            }
-            //生成订单
-            StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
-            studentPaymentOrder.setUserId(userId);
-            studentPaymentOrder.setGroupType(GroupType.MUSIC);
-            studentPaymentOrder.setType(OrderTypeEnum.APPLY);
-            studentPaymentOrder.setStatus(DealStatusEnum.WAIT_PAY);
-            studentPaymentOrder.setMusicGroupId(musicGroupId);
-            studentPaymentOrder.setClassGroupId(studentAddDto.getSignClassId());
-            studentPaymentOrder.setOrganId(musicGroup.getOrganId());
-            studentPaymentOrder.setRoutingOrganId(musicGroup.getOrganId());
-
-            //生成订单明细
-            List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentAddDto.getStudentPaymentOrderDetails();
-            if (studentPaymentOrderDetails == null) {
-                studentPaymentOrderDetails = new ArrayList<>();
-            } else {
-                studentPaymentOrderDetails.forEach(e -> {
-                    if (e.getPrice() == null) {
-                        throw new BizException("请补全订单信息");
-                    }
-                });
-            }
-            StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
-            studentPaymentOrderDetail.setPrice(studentAddDto.getTemporaryCourseFee() == null ? BigDecimal.ZERO : studentAddDto.getTemporaryCourseFee());
-            studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
-            studentPaymentOrderDetails.add(studentPaymentOrderDetail);
             //汇总金额
 
-            BigDecimal reduce = studentPaymentOrderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-            MusicGroupStudentFee.PaymentStatus paymentStatus = MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
-            if (reduce.compareTo(BigDecimal.ZERO) == 0) {
-                paymentStatus = PAID_COMPLETED;
-                studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
-                studentRegistration.setPaymentStatus(YES);
-                studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
-                studentPaymentOrder.setActualAmount(reduce);
-                studentPaymentOrder.setPayTime(date);
-            }
             MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee(musicGroupId,
                     userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
-                    null, studentAddDto.getTemporaryCourseFee(), paymentStatus);
+                    null, studentAddDto.getTemporaryCourseFee(), null);
 
             /*if (musicGroup.getFeeType() != null && musicGroup.getFeeType() != MusicGroupPaymentCalender.FeeType.OFFLINE && musicGroupStudentFee.getTemporaryCourseFee().doubleValue() * 100 == 0) {
                 musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
@@ -793,8 +763,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 //            musicGroupStudentFeeDao.insert(new MusicGroupStudentFee(musicGroupId,
 //                    userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
 //                    nextPaymentDate, studentAddDto.getTemporaryCourseFee(), paymentStatus));
-            musicGroupStudentFeeDao.updateCalender(userId, musicGroupId);
-            studentPaymentOrder.setExpectAmount(reduce);
             //当前学员是否以前存在过当前乐团
             if (phoneAndMusicGroupId != null) {
                 studentRegistration.setId(phoneAndMusicGroupId.getId());
@@ -803,22 +771,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 studentRegistrationDao.insertBasic(studentRegistration);
             }
             studentRegistrationDao.updateCurrentClass(studentRegistration);
-            studentPaymentOrderService.insert(studentPaymentOrder);
-            studentPaymentOrderDetails.forEach(e -> {
-                e.setPaymentOrderId(studentPaymentOrder.getId());
-            });
-            studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetails);
-            if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
-                Map<Integer, String> receivers = new HashMap<>(1);
-                receivers.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
-                if (reduce.compareTo(BigDecimal.ZERO) == 0) {
-                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT_FREE,
-                            receivers, null, 0, null, "", studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName());
-                } else {
-                    String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + musicGroupId;
-                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT, receivers, null, 0, null, "", studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName(), HttpUtil.getSortUrl(studentApplyUrl));
-                }
-            }
+
             return userId;
         }
     }
@@ -832,7 +785,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         List<StudentCourseFeeDetail> studentCourseFeeDetails = new ArrayList<>();
         BigDecimal amount = BigDecimal.ZERO;
         for (StudentRegistration studentRegistration : studentRegistrations) {
-            BigDecimal masterTotalPrice = collect.get(studentRegistration.getUserId()).stream().map(e->e.getCourseCurrentPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal masterTotalPrice = collect.get(studentRegistration.getUserId()).stream().map(e->e.getCutAmount()).reduce(BigDecimal.ZERO, BigDecimal::add);
             if(masterTotalPrice.doubleValue() > studentRegistration.getSurplusCourseFee().doubleValue()){
                 throw new BizException("用户信息发生变动,请重新提交");
             }
@@ -1633,4 +1586,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         }
         return true;
     }
+
+    @Override
+    public List<StudentRegistration> getMusicGroupStuReBack(String musicGroupId) {
+        courseScheduleStudentPaymentService.updateCourseActualPrice(Arrays.asList(musicGroupId), null, GroupType.MUSIC);
+        return this.findMusicGroupStudent(musicGroupId,null);
+    }
 }

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

@@ -706,7 +706,7 @@ public class StudentServeServiceImpl implements StudentServeService {
         for (StudentExtracurricularExercisesSituation weekServiceWithStudent : weekServiceWithStudents) {
             List<StudentServeCourseHomeworkDto> studentAllHomeworks = studentHomeworkMap.get(weekServiceWithStudent.getStudentId());
             weekServiceWithStudent.setActualExercisesNum(0);
-            if(!CollectionUtils.isEmpty(studentAllHomeworks)&&weekServiceWithStudent.getServeType().equals("HOMEWORK")){
+            if(!CollectionUtils.isEmpty(studentAllHomeworks)&&weekServiceWithStudent.getServeType().equals("HOMEWORK")&&StringUtils.isNotBlank(weekServiceWithStudent.getCourseIds())){
                 Set<String> courseIds = Arrays.stream(weekServiceWithStudent.getCourseIds().split(",")).collect(Collectors.toSet());
                 List<StudentServeCourseHomeworkDto> studentHomeworks = studentAllHomeworks.stream().filter(s -> courseIds.contains(s.getCourseScheduleId().toString())).collect(Collectors.toList());
                 if(!CollectionUtils.isEmpty(studentHomeworks)){

+ 50 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -52,6 +52,8 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	@Autowired
 	private MusicGroupDao musicGroupDao;
 	@Autowired
+	private StudentRegistrationDao studentRegistrationDao;
+	@Autowired
 	private DemoGroupDao demoGroupDao;
 	@Autowired
 	private OrganizationDao organizationDao;
@@ -237,7 +239,42 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	}
 
 	@Transactional(rollbackFor = Exception.class)
-	public void queryGroupStudents1(Integer teacherId, String search) {
+	public List<ImUserFriendDto> queryGroupStudents1(Integer teacherId, String search) {
+		Set<BasicUserDto> basicUserDtos = new HashSet<>();
+		//学员关联的通讯录
+		//获取相关课程,班级老师列表
+		Set<Integer> teacherIds = teacherDao.findMusicTeacherIds(teacherId);
+		//获取学员所在乐团列表
+		List<String> musicGroupIds = studentRegistrationDao.queryStudentMusicGroup(teacherId);
+		if (musicGroupIds != null && musicGroupIds.size() > 0) {
+			List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds, ","));
+			musicGroups.forEach(e -> {
+				teacherIds.add(e.getDirectorUserId());
+				teacherIds.add(e.getEducationalTeacherId());
+				teacherIds.add(e.getTeamTeacherId());
+			});
+		}
+		//获取相关vip课老师列表
+		teacherIds.addAll(teacherDao.findVipTeacherIds(teacherId));
+		//获取陪练课老师列表
+		teacherIds.addAll(teacherDao.findPracticeTeacherIds(teacherId));
+		//获取对外课程老师列表
+		teacherIds.addAll(teacherDao.findCloseCourseTeacherIds(teacherId));
+		//获取陪练课课程教务老师
+		teacherIds.addAll(teacherDao.findPracticeEducationalTeacherId(teacherId));
+		//获取VIP课程教务老师
+		teacherIds.addAll(teacherDao.findVipEducationalTeacherId(teacherId));
+		//获取对外课程务老师
+		teacherIds.addAll(teacherDao.findCommEducationalTeacherId(teacherId));
+		//获取关联的指导老师
+		Student student = studentDao.get(teacherId);
+		if (student != null && student.getTeacherId() != null) {
+			teacherIds.add(student.getTeacherId());
+		}
+		if (teacherIds.size() > 0) {
+			basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(teacherIds, search));
+		}
+
 		//获取关联的学员列表
 		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
 		//获取关联的老师列表
@@ -256,7 +293,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		}
 		studentIds.removeAll(Collections.singleton(null));
 		List<ImGroupModel> musicGroups =  musicGroupDao.queryTeacherGroups(teacherId,search);
-		List<BasicUserDto> teachers = new ArrayList<>();
+
 		if(musicGroups != null && musicGroups.size() > 0){
 			Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
 			List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
@@ -271,15 +308,16 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 			teacherIdSet.remove(teacherId);
 			teacherIdSet.removeAll(Collections.singleton(null));
 			if(teacherIdSet.size() > 0){
-				teachers = teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet,","), search);
+				basicUserDtos.addAll(teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet,","), search));
 			}
 		}
+
 		List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
 		if(userDtos != null && userDtos.size() > 0){
-			teachers.addAll(userDtos);
-			Set<String> musicGroupIds = userDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
-			if(musicGroupIds != null && musicGroupIds.size() > 0){
-				Map<String, String> musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds));
+			basicUserDtos.addAll(userDtos);
+			Set<String> musicGroupIds1 = userDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
+			if(musicGroupIds1 != null && musicGroupIds1.size() > 0){
+				Map<String, String> musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds1));
 				userDtos.forEach(e->{
 					e.setMusicGroupName(musicGroupNameMap.get(e.getMusicGroupId()));
 				});
@@ -287,21 +325,15 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		}
 		studentIds.removeAll(userDtos.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
 		studentIds.remove(teacherId);
-		//获取课程关联的学生列表
-//		teachers.addAll(teacherDao.findCloseCourseStudentIds(teacherId, search));
-		//获取相关vip陪练教务的学员编号
-//		teachers.addAll(teacherDao.findVipEducationalStudentId(teacherId,search));
-//		teachers.addAll(teacherDao.findCommEducationalStudentId(teacherId,search));
-//		teachers.addAll(teacherDao.findPracticeEducationalStudentId(teacherId,search));
 		if(studentIds.size() > 0){
-			teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
+			basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
 		}
-		if(teachers.size() > 0){
-			//删除现有的用户通讯录
-			imUserFriendDao.deleteByUserId(teacherId);
+		if(basicUserDtos.size() > 0){
 			//批量新增
-			imUserFriendDao.batchInsert(teachers,teacherId);
+			imUserFriendDao.batchInsert(basicUserDtos,teacherId);
+			return imUserFriendDao.queryFriendListByUserId(teacherId, search);
 		}
+		return new ArrayList<>();
 	}
 
     @Override

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

@@ -283,6 +283,7 @@
         <result column="id_" property="id"/>
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="music_group_name_" property="musicGroupName"/>
+        <result column="organName" property="organName"/>
         <result column="subject_id_list_" property="subjectIdList"/>
         <result column="memo_" property="memo"/>
         <result column="name_" property="name"/>
@@ -496,9 +497,9 @@
         LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_
         LEFT JOIN courses_group csg ON csg.id_ = cg.music_group_id_
         WHERE cgtm.user_id_ != #{userId} AND cg.del_flag_ = 0
-        AND ((vg.educational_teacher_id_ =  #{userId} AND cg.group_type_ = 'VIP')
-        OR (cg.group_type_ = 'MUSIC' AND (mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId}))
-        OR (csg.educational_teacher_id_ =  #{userId} AND cg.group_type_ = 'COMM'))
+        AND ((vg.educational_teacher_id_ =  #{userId} AND vg.group_status_ IN (2,6) AND cg.group_type_ = 'VIP')
+        OR (mg.status_ IN ('PROGRESS','PAUSE') AND cg.group_type_ = 'MUSIC' AND (mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId}))
+        OR (csg.educational_teacher_id_ =  #{userId} AND csg.status_ = 'NORMAL' AND cg.group_type_ = 'COMM'))
         GROUP BY cg.id_
     </select>
 
@@ -1423,8 +1424,9 @@
         <include refid="queryClassGroupPageSql"/>
     </select>
     <select id="queryClassGroupPage" resultMap="ClassGroupTeachers">
-        SELECT cg.*,mg.name_ music_group_name_ FROM class_group cg
+        SELECT cg.*,mg.name_ music_group_name_,o.name_ organName FROM class_group cg
         LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_
+        LEFT JOIN organization o ON o.id_ = mg.organ_id_
         <include refid="queryClassGroupPageSql"/>
         ORDER BY cg.id_ DESC
         <include refid="global.limit"/>

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

@@ -3508,4 +3508,7 @@
         FROM course_schedule cs
         WHERE cs.class_group_id_ = #{classGroupId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
     </select>
+    <select id="getUnderwayCourseNum" resultType="int">
+        SELECT * FROM course_schedule WHERE music_group_id_ = #{musicGroupId} AND group_type_ = #{groupType} AND status_=#{status}
+    </select>
 </mapper>

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

@@ -632,12 +632,19 @@
 		WHERE
 			cssp.batch_no_ IS NOT NULL
 			AND cs.id_ IS NOT NULL
-			AND ((cs.status_ = 'OVER' AND (cssp.actual_price_ IS NULL OR cssp.actual_price_ &lt; cssp.expect_price_))
+			AND ((cs.status_ IN ('OVER', 'UNDERWAY') AND (cssp.actual_price_ IS NULL OR cssp.actual_price_ &lt; cssp.expect_price_))
 			OR ( cs.status_ = 'NOT_START' AND cssp.actual_price_ IS NOT NULL AND cssp.actual_price_ &gt; 0))
-			<if test="courseIds!=null and courseIds.size()>0">
-				AND cs.id_ IN
-				<foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
-					#{courseId}
+			<if test="groupIds!=null and groupIds.size()>0">
+				AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+				AND cs.music_group_id_ IN
+				<foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
+					#{groupId}
+				</foreach>
+			</if>
+			<if test="userIds!=null and userIds.size()>0">
+				AND cssp.user_id_ IN
+				<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+					#{userId}
 				</foreach>
 			</if>
 	</select>

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

@@ -39,11 +39,12 @@
 		INSERT INTO im_user_friend (id_,user_id_,friend_id_,friend_nickname_,memo_,tags_,create_time_,update_time_)
 		VALUES(#{id},#{userId},#{friendId},#{friendNickname},#{memo},#{tags},#{createTime},#{updateTime})
 	</insert>
+
 	<insert id="batchInsert">
-		INSERT INTO im_user_friend (user_id_,friend_id_,friend_nickname_,create_time_,update_time_)
+		INSERT INTO im_user_friend (user_id_,friend_id_,friend_nickname_,tags_,memo_,create_time_,update_time_)
 		VALUES
 		<foreach collection="teachers" item="item" separator=",">
-			(#{teacherId},#{item.userId},#{item.name},NOW(),NOW())
+			(#{teacherId},#{item.userId},#{item.name},#{item.subjectName},#{item.musicGroupName},NOW(),NOW())
 		</foreach>
 	</insert>
 

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

@@ -226,7 +226,7 @@
 			COUNT( DISTINCT sr.user_id_ ) activate_num_,
 			COUNT( DISTINCT sr.user_id_ ) percent_
 		FROM student_registration sr
-				 LEFT JOIN music_group mg ON sr.music_group_id_=mg.id_
+			LEFT JOIN music_group mg ON sr.music_group_id_=mg.id_
 		WHERE
 			mg.del_flag_ = 0
 			AND mg.status_ = 'PROGRESS'
@@ -247,7 +247,7 @@
 			COUNT( t.id_ ) percent_
 		FROM
 			teacher t
-				LEFT JOIN sys_user su ON su.id_ = t.id_
+			LEFT JOIN sys_user su ON su.id_ = t.id_
 		WHERE
 			su.del_flag_ = 0
 		  	<if test="isDemission==null">

+ 0 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java

@@ -60,7 +60,6 @@ public class ImGroupController extends BaseController {
 	@ApiOperation("查询群成员列表")
 	@GetMapping(value = "/queryGroupMemberList")
 	public Object queryGroupMemberList(Long imGroupId) {
-
 		return succeed(imGroupService.queryMemberById(imGroupId));
 	}
 

+ 0 - 10
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java

@@ -129,16 +129,6 @@ public class TeacherController extends BaseController {
         return succeed(teacherService.queryGroupStudents(sysUser.getId(),search));
     }
 
-    @ApiOperation(value = "同步教师通讯录")
-    @GetMapping("/syncTeacherImFriend")
-    public Object syncTeacherImFriend(){
-        List<Integer> teacherIds = teacherService.queryAllIds();
-        for (Integer teacherId : teacherIds) {
-            teacherService.queryGroupStudents1(teacherId,null);
-        }
-        return succeed();
-    }
-
     @ApiOperation(value = "获取当前教师通讯录学员列表")
     @GetMapping("/queryGroupStudentList")
     public Object queryGroupStudentList(String search){

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

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.Employee;
@@ -383,7 +384,7 @@ public class ClassGroupController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('classGroup/queryStudentPaymentCalenders')")
     public HttpResponseResult queryStudentPaymentCalenders(@RequestBody MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
         Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect = classGroupService.queryStudentPaymentCalenders(mergeClassSplitClassAffirmDto.getMasterClassGroupId(),
-                mergeClassSplitClassAffirmDto.getClassGroupStudents(),
+                JSON.toJSONString(mergeClassSplitClassAffirmDto.getClassGroupStudents()),
                 mergeClassSplitClassAffirmDto.getStudentIds())
                 .stream().collect(Collectors.groupingBy(e -> e.getClassGroupId()));
         return succeed(collect);

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

@@ -186,7 +186,7 @@ public class StudentRegistrationController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/del')")
     public HttpResponseResult<Boolean> del(Long id) {
         StudentRegistration studentRegistration = studentRegistrationService.get(id);
-        if(studentRegistration == null){
+        if (studentRegistration == null) {
             return failed("删除的报名信息不存在");
         }
         return succeed(studentRegistrationService.delReg(id));
@@ -197,7 +197,16 @@ public class StudentRegistrationController extends BaseController {
     @PostMapping("/batchDel")
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/batchDel')")
     public HttpResponseResult<Boolean> batchDel(@RequestBody DelRegisterDto delRegisterDto) {
-        return succeed(studentRegistrationService.batchDelRegs(delRegisterDto.getMusicGroupId(),delRegisterDto.getUserIds()));
+        return succeed(studentRegistrationService.batchDelRegs(delRegisterDto.getMusicGroupId(), delRegisterDto.getUserIds()));
+    }
+
+
+    @ApiOperation(value = "获取乐团学生的退费信息")
+    @GetMapping("/getMusicGroupStuReBack")
+    @PreAuthorize("@pcs.hasPermissions('studentRegistration/getMusicGroupStuReBack')")
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
+    public HttpResponseResult getMusicGroupStuReBack(String musicGroupId) {
+        return succeed(studentRegistrationService.getMusicGroupStuReBack(musicGroupId));
     }
 
 }