浏览代码

Merge remote-tracking branch 'origin/master'

Joburgess 4 年之前
父节点
当前提交
1408dbbf3c
共有 24 个文件被更改,包括 506 次插入125 次删除
  1. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDao.java
  2. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java
  3. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  4. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java
  5. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java
  6. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/EmployeeInfoQueryInfo.java
  7. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  8. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java
  9. 207 21
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  10. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  11. 72 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  12. 9 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  13. 11 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java
  14. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  15. 79 43
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  16. 6 0
      mec-biz/src/main/resources/config/mybatis/EmployeeInfoMapper.xml
  17. 1 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml
  18. 9 7
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml
  19. 7 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml
  20. 3 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  21. 2 2
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  22. 22 15
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderController.java
  23. 1 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupSubjectPlanController.java
  24. 11 2
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentStudentController.java

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

@@ -55,7 +55,7 @@ public interface MusicGroupPaymentCalenderDao extends BaseDAO<Long, MusicGroupPa
      * @param status
      * @return
      */
-    List<MusicGroupPaymentCalender> queryByPaymentStatus(@Param("status") List<PaymentStatusEnum> status);
+    List<MusicGroupPaymentCalender> queryByPaymentStatus(@Param("status") List<PaymentStatusEnum> status, @Param("payUserType") String payUserType);
 
     /**
      * 获取缴费信息锁
@@ -248,5 +248,5 @@ public interface MusicGroupPaymentCalenderDao extends BaseDAO<Long, MusicGroupPa
      * @param musicGroupId:
      * @return java.util.Map<java.lang.String,java.lang.String>
      */
-    Map<String, String> queryUserPaymentStatus(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
+    List<Map<String, String>> queryUserPaymentStatus(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
 }

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

@@ -35,10 +35,10 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
 
 	/**
 	 * 根据指定的日历编号查询
-	 * @param musicGroupPaymentCalenderId
+	 * @param calenderId
 	 * @return
 	 */
-	List<MusicGroupPaymentCalenderDetail> queryByCalenderId(@Param("musicGroupPaymentCalenderId") Long musicGroupPaymentCalenderId, @Param("paymentStatus") String paymentStatus);
+	List<MusicGroupPaymentCalenderDetail> queryByCalenderId(@Param("calenderId") Long calenderId, @Param("paymentStatus") String paymentStatus);
 
 	/**
 	 * 根据声部获取乐团下完成缴费的学员

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -337,8 +337,19 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
 
     /**
      * 根据ids获取商品
+     *
      * @param ids
      * @return
      */
     List<UserGoodsDto> getUserGoods(@Param("ids") String ids);
+
+
+    /**
+     * 获取用户某种类型的订单
+     * @param userId
+     * @param type
+     * @param status
+     * @return
+     */
+    List<StudentPaymentOrder> getUserOrderByType(@Param("userId") Integer userId, @Param("type") OrderTypeEnum type, @Param("status") DealStatusEnum status);
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
@@ -113,10 +114,14 @@ public interface StudentPaymentOrderDetailDao extends BaseDAO<Long, StudentPayme
 
     /**
      * 获取订单的商品
+     *
      * @param orderIds
      * @return
      */
     List<StudentPaymentOrderDetail> getOrderGoodies(@Param("orderIds") List<Long> orderIds);
 
     List<StudentPaymentOrderDetail> getWithIds(@Param("paymentOrderIds") List<Long> paymentOrderIds);
+
+
+    List<StudentPaymentOrderDetail> getOrderDetailByType(@Param("orderId") Long orderId, @Param("orderDetailTypes") List<OrderDetailTypeEnum> orderDetailTypes);
 }

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java

@@ -12,7 +12,6 @@ public enum OrderDetailTypeEnum implements BaseEnum<String, OrderDetailTypeEnum>
     OTHER("OTHER", "其他"),
     COURSE("COURSE", "课程"),
     HIGH_ONLINE_COURSE("HIGH_ONLINE_COURSE", "网络基础训练"),
-
     SINGLE("SINGLE", "单技课"),
     MIX("MIX", "合奏课"),
     HIGH("HIGH", "小班课"),

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

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.page;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.Date;
+
 import com.ym.mec.biz.dal.enums.JobTypeEnum;
 import com.ym.mec.biz.dal.enums.StaffStatusEnum;
 import com.ym.mec.common.page.QueryInfo;
@@ -25,6 +27,10 @@ public class EmployeeInfoQueryInfo extends QueryInfo {
 
 	@ApiModelProperty(value = "状态", required = false)
 	private StaffStatusEnum status;
+	
+	private Date startDate;
+	
+	private Date endDate;
 
 	public String getUserNameOrIdOrMobile() {
 		return userNameOrIdOrMobile;
@@ -73,4 +79,20 @@ public class EmployeeInfoQueryInfo extends QueryInfo {
 	public void setSourceFrom(String sourceFrom) {
 		this.sourceFrom = sourceFrom;
 	}
+
+	public Date getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
 }

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

@@ -177,6 +177,14 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return
      */
     ClassGroup addStudent(ClassGroup classGroup, Integer userId, GroupType groupType);
+    
+    /**
+     * 添加学生到指定班级并排课
+     * @param studentId
+     * @param classGroupIdListStr
+     * @return
+     */
+    boolean addStudentToClassGroupAndCourseArranging(Integer studentId, String classGroupIdListStr);
 
     /**
      * 获取未分配合奏的单技班列表

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

@@ -122,4 +122,13 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
 	 */
 	Integer findOrganPayOrderNum(Integer organId);
 
+	/**
+	 * 获取用户某种类型的订单
+	 * @param userId
+	 * @param type
+	 * @param status
+	 * @return
+	 */
+	List<StudentPaymentOrder> getUserOrderByType(Integer userId, OrderTypeEnum type, DealStatusEnum status);
+
 }

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

@@ -1,15 +1,129 @@
 package com.ym.mec.biz.service.impl;
 
+import static com.ym.mec.biz.dal.enums.GroupType.COMM;
+import static com.ym.mec.biz.dal.enums.GroupType.PRACTICE;
+import static com.ym.mec.biz.dal.enums.GroupType.VIP;
+
+import java.math.BigDecimal;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+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 org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
 import com.alibaba.fastjson.JSON;
 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.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.*;
-import com.ym.mec.biz.dal.page.*;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.dao.ClassGroupRelationDao;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleEvaluateDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
+import com.ym.mec.biz.dal.dao.CoursesGroupDao;
+import com.ym.mec.biz.dal.dao.GroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.PracticeGroupDao;
+import com.ym.mec.biz.dal.dao.SchoolDao;
+import com.ym.mec.biz.dal.dao.StudentApplyRefundsDao;
+import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dao.SubjectDao;
+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.dao.VipGroupDao;
+import com.ym.mec.biz.dal.dto.ClassGroup4MixDto;
+import com.ym.mec.biz.dal.dto.ClassGroupImGroupDto;
+import com.ym.mec.biz.dal.dto.ClassGroupTeacherMapDto;
+import com.ym.mec.biz.dal.dto.ClassGroupTeachersDto;
+import com.ym.mec.biz.dal.dto.CourseListDto;
+import com.ym.mec.biz.dal.dto.CourseTimeDto;
+import com.ym.mec.biz.dal.dto.HighClassGroupDto;
+import com.ym.mec.biz.dal.dto.MusicGroupClassGroupDto;
+import com.ym.mec.biz.dal.dto.MusicGroupCourseScheduleDto;
+import com.ym.mec.biz.dal.dto.RemainCourseTypeDurationDto;
+import com.ym.mec.biz.dal.dto.StudentAttendanceViewDto;
+import com.ym.mec.biz.dal.dto.StudentPayInfoDto;
+import com.ym.mec.biz.dal.dto.SuperClassGroupDto;
+import com.ym.mec.biz.dal.dto.TeacherClassGroupDto;
+import com.ym.mec.biz.dal.dto.TeacherClassHeadInfo;
+import com.ym.mec.biz.dal.dto.TeacherMusicClassInfoDto;
+import com.ym.mec.biz.dal.dto.TeacherVipClassInfoDto;
+import com.ym.mec.biz.dal.dto.UserMusicGroupQueryInfo;
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.ClassGroupRelation;
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
+import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.CoursesGroup;
+import com.ym.mec.biz.dal.entity.Group;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
+import com.ym.mec.biz.dal.entity.PracticeGroup;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
+import com.ym.mec.biz.dal.entity.VipGroup;
+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.GroupType;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
+import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.ClassGroupQueryInfo;
+import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
+import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
+import com.ym.mec.biz.dal.page.StudentPayLogQueryInfo;
+import com.ym.mec.biz.dal.page.TeacherMusicClassQueryInfo;
+import com.ym.mec.biz.dal.page.VipClassQueryInfo;
+import com.ym.mec.biz.dal.page.queryMusicGroupCourseScheduleQueryInfo;
+import com.ym.mec.biz.service.ClassGroupRelationService;
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
+import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
+import com.ym.mec.biz.service.StudentRegistrationService;
+import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.TeacherDefaultMusicGroupSalaryService;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
@@ -26,21 +140,6 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateConvertor;
 import com.ym.mec.util.date.DateUtil;
 
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-
-import java.math.BigDecimal;
-import java.time.*;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static com.ym.mec.biz.dal.enums.GroupType.*;
-
 @Service
 public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> implements ClassGroupService {
 
@@ -1034,6 +1133,93 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+	public boolean addStudentToClassGroupAndCourseArranging(Integer studentId, String classGroupIdListStr) {
+    	
+    	List<ClassGroup> classGroupList = classGroupDao.findClassGroupByIds(classGroupIdListStr);
+    	if(classGroupList == null || classGroupList.size() == 0){
+    		throw new BizException("班级查询失败");
+    	}
+
+        Date date = new Date();
+        List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
+        
+    	for(ClassGroup classGroup : classGroupList){
+    		//1、增加班级人数
+    		classGroupDao.addStudentNum(classGroup);
+    		
+    		//2、插入关联关系
+    		ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+            classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
+            classGroupStudentMapper.setClassGroupId(classGroup.getId());
+            classGroupStudentMapper.setUserId(studentId);
+            classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+            classGroupStudentMapper.setGroupType(classGroup.getGroupType());
+            classGroupStudentMapper.setCreateTime(date);
+            classGroupStudentMapperDao.insert(classGroupStudentMapper);
+          
+            //3、学生加入级未开始课程
+            List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
+            for (CourseSchedule courseSchedule : courseScheduleList) {
+                CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
+                courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
+                courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+                courseScheduleStudentPayment.setUserId(studentId);
+                courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+                courseScheduleStudentPayment.setCreateTime(date);
+                courseScheduleStudentPayment.setUpdateTime(date);
+                courseScheduleStudentPayments.add(courseScheduleStudentPayment);
+            }
+
+            List<Long> courseScheduleIds = courseScheduleList.stream().map(CourseSchedule::getId).collect(Collectors.toList());
+            //4、调整线上基础技能班未上课课酬
+            List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getClassGroupTeachers(classGroup.getId());
+            int hasTeacherSalaryCount = 0;
+            if (courseScheduleIds.size() > 0) {
+                hasTeacherSalaryCount = courseScheduleTeacherSalaryDao.getHasTeacherSalaryCount(courseScheduleIds);
+            }
+            if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) && hasTeacherSalaryCount > 0) {
+                Integer studentNum = classGroup.getStudentNum() + 1;
+                List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
+                courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
+                for (CourseSchedule courseSchedule : courseScheduleList) {
+                    for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
+                        List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacher.getUserId(), ClassGroupTypeEnum.HIGH_ONLINE.getCode(), null);
+                        Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
+                        TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(courseSchedule.getType());
+                        BigDecimal salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+
+                        CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
+                        courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
+                        courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
+                        courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
+                        courseScheduleTeacherSalary.setTeacherRole(classGroupTeacher.getTeacherRole());
+                        courseScheduleTeacherSalary.setUserId(classGroupTeacher.getUserId());
+                        courseScheduleTeacherSalary.setExpectSalary(salary);
+                        courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
+                        courseScheduleTeacherSalary.setCreateTime(date);
+                        courseScheduleTeacherSalary.setUpdateTime(date);
+                        courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
+                    }
+                }
+                courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
+            }
+
+            //5、加入班级群组
+            ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(studentId.toString())};
+            imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+
+    	}
+
+        if (courseScheduleStudentPayments.size() != 0) {
+            courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
+        }
+
+    	return true;
+	}
+
+	@Override
     public List<ClassGroup> findNoClassSubjects(String musicGroupId) {
         return classGroupDao.findNoClassSubjects(musicGroupId);
     }

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

@@ -238,6 +238,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		Date date = new Date();
 		calender.setUpdateTime(date);
 		calender.setExpectNum(calender.getExpectNum() + 1);
+		musicGroupPaymentCalenderDao.update(calender);
 		//生成详情
 		musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 		musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(calender.getId());
@@ -247,7 +248,6 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		musicGroupPaymentCalenderDetail.setUpdateTime(date);
 		musicGroupPaymentCalenderDetail.setUserId(userId);
 		musicGroupPaymentCalenderDetailDao.insert(musicGroupPaymentCalenderDetail);
-		musicGroupPaymentCalenderDao.update(calender);
 		
 		List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetailList = new ArrayList<MusicGroupPaymentStudentCourseDetail>();
 		MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = null;
@@ -258,6 +258,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 			musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
 			musicGroupPaymentStudentCourseDetail.setCourseType(courseSettings.getCourseType());
 			musicGroupPaymentStudentCourseDetail.setCreateTime(date);
+			musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalenderId);
 			musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetail.getId());
 			musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSettings.getCourseTotalMinuties());
 			musicGroupPaymentStudentCourseDetail.setUpdateTime(date);

+ 72 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType.SCHOOL;
 import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType.MUSIC_APPLY;
 import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType.MUSIC_RENEW;
 
@@ -59,6 +60,7 @@ import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
 import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
+import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
@@ -100,6 +102,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 	private IdGeneratorService idGeneratorService;
 	
 	@Autowired
+	private ClassGroupService classGroupService;
+	
+	@Autowired
 	private MusicGroupDao musicGroupDao;
 	@Autowired
 	private MusicGroupBuildLogDao musicGroupBuildLogDao;
@@ -161,7 +166,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		if (musicGroupPaymentCalenderCourseSettingsList == null) {
 			musicGroupPaymentCalenderCourseSettingsList = new ArrayList<>();
 		}
-		if (musicGroupPaymentCalender.getPayUserType() == PayUserType.SCHOOL) {
+		if (musicGroupPaymentCalender.getPayUserType() == SCHOOL) {
 			musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.AUDITING);
 		} else {
 			if (musicGroupPaymentCalender.getPaymentType() == MUSIC_APPLY || musicGroupPaymentCalender.getPaymentType() == MUSIC_RENEW) {
@@ -263,6 +268,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 						// 学生加到班级
 						String classGroupIdStr = musicGroupPaymentCalender.getAttribute1();
+						if (StringUtils.isNotBlank(classGroupIdStr)) {
+							classGroupService.addStudentToClassGroupAndCourseArranging(Integer.parseInt(studentId), classGroupIdStr);
+						}
 					}
 				}
 			}
@@ -368,7 +376,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		if (musicGroupPaymentCalenderCourseSettingsList == null) {
 			musicGroupPaymentCalenderCourseSettingsList = new ArrayList<>();
 		}
-		if (musicGroupPaymentCalender.getPayUserType() == PayUserType.SCHOOL) {
+		if (musicGroupPaymentCalender.getPayUserType() == SCHOOL) {
 			musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.AUDITING);
 		} else {
 			if (musicGroupPaymentCalender.getPaymentType() == MUSIC_APPLY || musicGroupPaymentCalender.getPaymentType() == MUSIC_RENEW) {
@@ -418,9 +426,66 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			} else {
 				musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.NO);
 			}
+			
+			//如果是进行中加学生
+			if (musicGroupPaymentCalender.getPaymentType() == PaymentType.ADD_STUDENT) {
+				String studentIdStr = musicGroupPaymentCalender.getStudentIds();
+				if (StringUtils.isNoneBlank(studentIdStr)) {
+					//计算总费用
+					BigDecimal totalPrice = new BigDecimal(0);
+					for(MusicGroupPaymentCalenderCourseSettings musicGroupPaymentCalenderCourseSettings : musicGroupPaymentCalenderCourseSettingsList){
+						totalPrice = totalPrice.add(musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice());
+					}
+					
+					List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetailList = new ArrayList<MusicGroupPaymentStudentCourseDetail>();
+					MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = null;
+					
+					for (String studentId : studentIdStr.split(",")) {
+						// 学生加到calenderDetail
+						MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
+						musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
+						musicGroupPaymentCalenderDetail.setCreateTime(date);
+						musicGroupPaymentCalenderDetail.setExpectAmount(totalPrice);
+						musicGroupPaymentCalenderDetail.setPaymentStatus(PaymentStatus.NON_PAYMENT);
+						musicGroupPaymentCalenderDetail.setUpdateTime(date);
+						musicGroupPaymentCalenderDetail.setUserId(Integer.parseInt(studentId));
+						musicGroupPaymentCalenderDetail.setStartPaymentDate(musicGroupPaymentCalender.getStartPaymentDate());
+						musicGroupPaymentCalenderDetail.setDeadlinePaymentDate(musicGroupPaymentCalender.getDeadlinePaymentDate());
+						
+						musicGroupPaymentCalenderDetailDao.insert(musicGroupPaymentCalenderDetail);
+						
+						// 学生加课程明细
+						for(MusicGroupPaymentCalenderCourseSettings courseSettings : musicGroupPaymentCalenderCourseSettingsList){
+							if (courseSettings.getIsStudentOptional() == true) {
+								continue;
+							}
+							musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
+							musicGroupPaymentStudentCourseDetail.setCourseType(courseSettings.getCourseType());
+							musicGroupPaymentStudentCourseDetail.setCreateTime(date);
+							musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
+							musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetail.getId());
+							musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSettings.getCourseTotalMinuties());
+							musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
+							musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
+							musicGroupPaymentStudentCourseDetail.setUserId(Integer.parseInt(studentId));
+							
+							musicGroupPaymentStudentCourseDetailList.add(musicGroupPaymentStudentCourseDetail);
+						}
+						
+						if(musicGroupPaymentStudentCourseDetailList.size() > 0){
+							musicGroupPaymentStudentCourseDetailDao.batchInsert(musicGroupPaymentStudentCourseDetailList);
+						}
 
-			// 如果是报名,需要修改乐团状态
+						// 学生加到班级
+						String classGroupIdStr = musicGroupPaymentCalender.getAttribute1();
+						if(StringUtils.isNotBlank(classGroupIdStr)){
+							classGroupService.addStudentToClassGroupAndCourseArranging(Integer.parseInt(studentId), classGroupIdStr);
+						}
+					}
+				}
+			}
 
+			// 如果是报名,需要修改乐团状态
 			if (musicGroupPaymentCalender.getPaymentType() == MUSIC_APPLY) {
 				int countAuditReject = musicGroupPaymentCalenderDao.countAuditReject(musicGroupPaymentCalender.getMusicGroupId(),musicGroupPaymentCalender.getId());
 				if(countAuditReject == 0){
@@ -547,7 +612,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderDao.get(calenderId);
 		Date date = new Date();
 		//如果是报名项目,将乐团改为审核中,缴费项目修改状态,审核状态改为审核通过
-		if (date.after(musicGroupPaymentCalender.getDeadlinePaymentDate())) {
+		if(musicGroupPaymentCalender.getPayUserType() == SCHOOL){
+			musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.OPEN);
+		}else if (date.after(musicGroupPaymentCalender.getDeadlinePaymentDate())) {
 			musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.OVER);
 		} else if (date.after(musicGroupPaymentCalender.getStartPaymentDate())) {
 			musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.OPEN);
@@ -613,7 +680,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		List<PaymentStatusEnum> statusList = new ArrayList<PaymentStatusEnum>();
 		statusList.add(PaymentStatusEnum.NO);
 		statusList.add(PaymentStatusEnum.OPEN);
-		List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.queryByPaymentStatus(statusList);
+		List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.queryByPaymentStatus(statusList,PayUserType.STUDENT.getCode());
 
 		List<MusicGroupPaymentCalender> updateMusicGroupPaymentCalenderList = new ArrayList<MusicGroupPaymentCalender>();
 

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

@@ -294,7 +294,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (chargeInfo.getOpenFlag().equals(1)) {
             throw new BizException("项目已关闭");
         }
-        if(sporadicPayDto.getNum()==null){
+        if (sporadicPayDto.getNum() == null) {
             sporadicPayDto.setNum(1);
         }
         BigDecimal amount = chargeInfo.getAmount().multiply(new BigDecimal(sporadicPayDto.getNum()));
@@ -305,17 +305,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new BizException("订单金额异常");
         }
         if (chargeInfo.getMaxAmount() != null) {
-            if (chargeInfo.getOpenMaxTerm().equals(YesOrNoEnum.YES) && chargeInfo.getMaxAmount().compareTo(chargeInfo.getPaidAmount().add(amount)) < 0) {
+            if (chargeInfo.getOpenMaxTerm().equals(YesOrNoEnum.YES) && chargeInfo.getMaxAmount().compareTo(chargeInfo.getPaidAmount()) <= 0) {
                 throw new Exception("活动人数暂时已满,请稍后再试");
             }
-            List<SporadicChargeInfo> activeInfos = sporadicChargeInfoDao.getOrganActiveInfo(chargeInfo.getOrganId(), 12);
-            for (SporadicChargeInfo activeInfo : activeInfos) {
-                activeInfo.setPaidAmount(activeInfo.getPaidAmount().add(amount));
-                activeInfo.setUpdateTime(new Date());
-                int update = sporadicChargeInfoDao.update(activeInfo);
-                if (update <= 0) {
-                    throw new BizException("活动火爆,请稍后再试");
-                }
+            if (chargeInfo.getOpenMaxTerm().equals(YesOrNoEnum.YES) && chargeInfo.getMaxAmount().compareTo(chargeInfo.getPaidAmount().add(amount)) < 0) {
+                throw new Exception("活动数量暂时已满,请调整数量或稍后再试");
             }
         }
 
@@ -1130,7 +1124,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         List<MusicCardDto> musicCardDtos = musicGroupDao.queryUserMusicGroups(userId);
         Set<String> musicGroupIds = musicCardDtos.stream().map(MusicCardDto::getMusicGroupId).collect(Collectors.toSet());
 //        Map<String, String> paymentStatus = MapUtil.convertMybatisMap(musicGroupStudentFeeDao.queryUserPaymentStatus(userId, StringUtils.join(musicGroupIds, ",")));
-        Map<String, String> paymentStatus = musicGroupPaymentCalenderDao.queryUserPaymentStatus(userId, StringUtils.join(musicGroupIds, ","));
+        Map<String, String> paymentStatus = MapUtil.convertMybatisMap(musicGroupPaymentCalenderDao.queryUserPaymentStatus(userId, StringUtils.join(musicGroupIds, ",")));
         // 获取学员在该乐团续费状态
         musicCardDtos.forEach(e -> {
             e.setPaymentStatus(paymentStatus.get(e.getMusicGroupId()));
@@ -2128,7 +2122,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     public SubFeeSettingDto findMusicGroupBasicInfo(String musicGroupId) {
         SubFeeSettingDto subFeeSettingDto = new SubFeeSettingDto();
         //获取乐团信息
-        subFeeSettingDto.setMusicGroup(musicGroupDao.get(musicGroupId));
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        ChargeType chargeType = chargeTypeDao.get(musicGroup.getChargeTypeId());
+        musicGroup.setChargeTypeName(chargeType.getName());
+        subFeeSettingDto.setMusicGroup(musicGroup);
         //获取付费主体
         subFeeSettingDto.setMusicGroupPaymentEntities(musicGroupPaymentEntitiesDao.findByMusicGroupId(musicGroupId));
         //获取缴费周期

+ 11 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java

@@ -84,6 +84,17 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
 
             //福袋活动,增加课程余额
             if (info.getChargeType().getCode() == 6 || info.getChargeType().getCode() == 12) {
+                if (info.getMaxAmount() != null) {
+                    List<SporadicChargeInfo> activeInfos = sporadicChargeInfoDao.getOrganActiveInfo(info.getOrganId(), 12);
+                    for (SporadicChargeInfo activeInfo : activeInfos) {
+                        activeInfo.setPaidAmount(activeInfo.getPaidAmount().add(studentPaymentOrder.getActualAmount()));
+                        activeInfo.setUpdateTime(new Date());
+                        int update = sporadicChargeInfoDao.update(activeInfo);
+                        if (update <= 0) {
+                            throw new BizException("已收金额更新失败,请重试");
+                        }
+                    }
+                }
                 //第二单起每买一单增加一次抽奖机会
                 int times = studentPaymentOrderDao.getUserOrderNumByType(userId, OrderTypeEnum.DOUBLE_ELEVEN2020);
                 int num = studentPaymentOrder.getClassGroupId() == null ? 1 : studentPaymentOrder.getClassGroupId();
@@ -152,17 +163,6 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
             return true;
         }
         if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
-            if (info.getMaxAmount() != null && info.getPaidAmount().compareTo(BigDecimal.ZERO) > 0) {
-                List<SporadicChargeInfo> activeInfos = sporadicChargeInfoDao.getOrganActiveInfo(info.getOrganId(), 12);
-                for (SporadicChargeInfo activeInfo : activeInfos) {
-                    activeInfo.setPaidAmount(activeInfo.getPaidAmount().subtract(studentPaymentOrder.getActualAmount()));
-                    activeInfo.setUpdateTime(new Date());
-                    int update = sporadicChargeInfoDao.update(activeInfo);
-                    if (update <= 0) {
-                        throw new BizException("已收金额更新失败,请重试");
-                    }
-                }
-            }
             if (info.getOrganId().equals(42) && info.getChargeType().equals(SporadicChargeTypeEnum.LEVEL)) {
                 degreeRegistrationService.updateStatus(studentPaymentOrder.getUserId(), 0, studentPaymentOrder.getOrderNo());
                 return true;

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

@@ -409,4 +409,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     public Integer findOrganPayOrderNum(Integer organId) {
         return studentPaymentOrderDao.findOrganPayOrderNum(organId);
     }
+
+    @Override
+    public List<StudentPaymentOrder> getUserOrderByType(Integer userId, OrderTypeEnum type, DealStatusEnum status) {
+       return studentPaymentOrderDao.getUserOrderByType(userId,type,status);
+    }
 }

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

@@ -34,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.IOException;
+import java.lang.reflect.Array;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -107,6 +108,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
     @Autowired
     private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
+    @Autowired
+    private MusicGroupPaymentStudentCourseDetailDao musicGroupPaymentStudentCourseDetailDao;
+    @Autowired
+    private MusicGroupPaymentCalenderCourseSettingsDao musicGroupPaymentCalenderCourseSettingsDao;
 
     @Override
     public BaseDAO<Long, StudentRegistration> getDAO() {
@@ -838,13 +843,13 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         return classGroupStuList;
     }
 
-    @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
-    public void updateCalender(Long calenderDetailId,Integer userId){
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+    public void updateCalender(Long calenderDetailId, Integer userId) {
         Date date = new Date();
         MusicGroupPaymentCalenderDetail calenderDetail = musicGroupPaymentCalenderDetailDao.get(calenderDetailId);
         MusicGroupPaymentCalender calender = musicGroupPaymentCalenderService.get(calenderDetail.getMusicGroupPaymentCalenderId());
         MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, calender.getMusicGroupId());
-        if(calender.getIsGiveMusicNetwork()){
+        if (calender.getIsGiveMusicNetwork()) {
             //赠送网管课
             musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
         }
@@ -903,18 +908,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
                 musicGroupStudentFee.setTemporaryCourseFee(BigDecimal.ZERO);
                 musicGroupStudentFee.setUpdateTime(nowDate);
-            }else {
-                musicGroupStudentFee = new MusicGroupStudentFee();
-                musicGroupStudentFee.setRemainNetworkClassTimes(0);
-                musicGroupStudentFee.setLatestPaidTime(nowDate);
-                musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
-                musicGroupStudentFee.setUpdateTime(nowDate);
-                musicGroupStudentFee.setContinuousAbsenteeismTimes(0);
-                musicGroupStudentFee.setSubjectId(studentRegistration.getActualSubjectId());
-                musicGroupStudentFee.setIsLock(0);
-                musicGroupStudentFee.setMusicGroupId(musicGroup.getId());
-                musicGroupStudentFee.setUserId(studentRegistration.getUserId());
-                musicGroupStudentFeeDao.insert(musicGroupStudentFee);
             }
             //插入交易明细
             BigDecimal amount = studentPaymentOrder.getActualAmount();
@@ -959,34 +952,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 sellOrderService.addOrderDetail2SellOrder(orderDetails, studentPaymentOrder, musicGroup);
             }
 
-            //缴费详情 calender detail
-            MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderService.findByMusicGroupRegCalender(musicGroup.getId());
-//            if(musicGroupRegCalender.getIsGiveMusicNetwork()){
-//                //赠送网管课
-//                musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
-//            }
-//            musicGroupStudentFeeDao.update(musicGroupStudentFee);
-//            //更新实际缴费人数
-//            Integer actualNum = musicGroupRegCalender.getActualNum() == null ? 0 : musicGroupRegCalender.getActualNum();
-//            musicGroupRegCalender.setActualNum(actualNum + 1);
-//            musicGroupRegCalender.setUpdateTime(nowDate);
-//            musicGroupPaymentCalenderDao.update(musicGroupRegCalender);
-            MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
-            musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupRegCalender.getId());
-            musicGroupPaymentCalenderDetail.setUserId(studentPaymentOrder.getUserId());
-            musicGroupPaymentCalenderDetail.setExpectAmount(studentPaymentOrder.getExpectAmount());
-            musicGroupPaymentCalenderDetail.setActualAmount(studentPaymentOrder.getActualAmount());
-            musicGroupPaymentCalenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
-            musicGroupPaymentCalenderDetail.setUserStatus(null);
-            musicGroupPaymentCalenderDetail.setPayTime(nowDate);
-            musicGroupPaymentCalenderDetail.setDeadlinePaymentDate(musicGroupRegCalender.getDeadlinePaymentDate());
-            musicGroupPaymentCalenderDetail.setStartPaymentDate(musicGroupRegCalender.getStartPaymentDate());
-            musicGroupPaymentCalenderDetail.setOpen(1);
-            musicGroupPaymentCalenderDetail.setCreateTime(nowDate);
-            musicGroupPaymentCalenderDetail.setUpdateTime(nowDate);
-            musicGroupPaymentCalenderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-            musicGroupPaymentCalenderDetail.setUseInCourse(0);
-            musicGroupPaymentCalenderDetailDao.insert(musicGroupPaymentCalenderDetail);
+            addCalenderDetail(studentPaymentOrder, studentRegistration);
 
             //三方乐团不发送缴费通知
             if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
@@ -1048,6 +1014,76 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         return studentPaymentOrder;
     }
 
+
+    private boolean addCalenderDetail(StudentPaymentOrder studentPaymentOrder, StudentRegistration studentRegistration) {
+        Date nowDate = new Date();
+        MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee();
+        musicGroupStudentFee.setLatestPaidTime(nowDate);
+        musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
+        musicGroupStudentFee.setUpdateTime(nowDate);
+        musicGroupStudentFee.setContinuousAbsenteeismTimes(0);
+        musicGroupStudentFee.setSubjectId(studentRegistration.getActualSubjectId());
+        musicGroupStudentFee.setIsLock(0);
+        musicGroupStudentFee.setMusicGroupId(studentRegistration.getMusicGroupId());
+        musicGroupStudentFee.setUserId(studentRegistration.getUserId());
+
+        //缴费详情 calender detail
+        MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderService.findByMusicGroupRegCalender(studentRegistration.getMusicGroupId());
+        if (musicGroupRegCalender.getIsGiveMusicNetwork()) {
+            //赠送网管课
+            musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
+        }
+        musicGroupStudentFeeDao.insert(musicGroupStudentFee);
+        //更新实际缴费人数
+        int actualNum = musicGroupRegCalender.getActualNum() == null ? 0 : musicGroupRegCalender.getActualNum();
+        musicGroupRegCalender.setExpectNum(actualNum + 1);
+        musicGroupRegCalender.setActualNum(actualNum + 1);
+        musicGroupRegCalender.setUpdateTime(nowDate);
+        musicGroupPaymentCalenderDao.update(musicGroupRegCalender);
+
+        List<String> orderDetailTypes = studentPaymentOrderDetailDao.getOrderDetailType(studentPaymentOrder.getId());
+        List<MusicGroupPaymentCalenderCourseSettings> courseSettings = musicGroupPaymentCalenderCourseSettingsDao.getMusicGroupRegCalenderCourseSettings(studentRegistration.getMusicGroupId());
+        BigDecimal courseTotalPrice = courseSettings.stream().filter(e -> orderDetailTypes.contains(e.getCourseType().getCode())).map(MusicGroupPaymentCalenderCourseSettings::getCourseCurrentPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
+        musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupRegCalender.getId());
+        musicGroupPaymentCalenderDetail.setUserId(studentPaymentOrder.getUserId());
+        musicGroupPaymentCalenderDetail.setExpectAmount(courseTotalPrice);
+        musicGroupPaymentCalenderDetail.setActualAmount(courseTotalPrice);
+        musicGroupPaymentCalenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
+        musicGroupPaymentCalenderDetail.setUserStatus(null);
+        musicGroupPaymentCalenderDetail.setPayTime(nowDate);
+        musicGroupPaymentCalenderDetail.setDeadlinePaymentDate(musicGroupRegCalender.getDeadlinePaymentDate());
+        musicGroupPaymentCalenderDetail.setStartPaymentDate(musicGroupRegCalender.getStartPaymentDate());
+        musicGroupPaymentCalenderDetail.setOpen(1);
+        musicGroupPaymentCalenderDetail.setCreateTime(nowDate);
+        musicGroupPaymentCalenderDetail.setUpdateTime(nowDate);
+        musicGroupPaymentCalenderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+        musicGroupPaymentCalenderDetail.setUseInCourse(0);
+        musicGroupPaymentCalenderDetailDao.insert(musicGroupPaymentCalenderDetail);
+
+        List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetails = new ArrayList<>();
+
+        for (MusicGroupPaymentCalenderCourseSettings courseSetting : courseSettings) {
+            if (!orderDetailTypes.contains(courseSetting.getCourseType().getCode())) continue;
+            MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
+            musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupRegCalender.getId());
+            musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetail.getId());
+            musicGroupPaymentStudentCourseDetail.setUserId(studentPaymentOrder.getUserId());
+            musicGroupPaymentStudentCourseDetail.setCourseType(courseSetting.getCourseType());
+            musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSetting.getCourseTotalMinuties());
+            musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
+            musicGroupPaymentStudentCourseDetail.setCreateTime(nowDate);
+            musicGroupPaymentStudentCourseDetail.setUpdateTime(nowDate);
+            musicGroupPaymentStudentCourseDetails.add(musicGroupPaymentStudentCourseDetail);
+        }
+
+        if (musicGroupPaymentStudentCourseDetails.size() > 0) {
+            musicGroupPaymentStudentCourseDetailDao.batchInsert(musicGroupPaymentStudentCourseDetails);
+        }
+        return true;
+    }
+
     @Override
     public List<StudentRegistration> findMusicGroupNoClassGroupStudent(String musicGroupId, Integer actualSubjectId) {
         //获取所有声部

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

@@ -138,6 +138,12 @@
 	        <if test="status != null">
 	            AND ei.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 	        </if>
+	        <if test="startDate != null">
+	            AND ei.update_time_ &gt;= #{startDate}
+	        </if>
+	        <if test="endDate != null">
+	            AND ei.update_time_ &lt;= #{endDate}
+	        </if>
 		</where>
     </sql>
 

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

@@ -253,7 +253,7 @@
 	<select id="queryByCalenderId" resultMap="MusicGroupPaymentCalenderDetail">
 		SELECT * FROM music_group_payment_calender_detail WHERE music_group_payment_calender_id_ = #{calenderId}
 		<if test="paymentStatus != null">
-			AND psyment_status_ = #{paymentStatus}
+			AND payment_status_ = #{paymentStatus}
 		</if>
 	</select>
     <select id="findMusicGroupStudentWithSubject" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">

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

@@ -144,9 +144,6 @@
 	    <foreach collection="list" item="item" index="index" open="" close="" separator=";">
 	        UPDATE music_group_payment_calender
 	        <set>
-                <if test="item.auditMemo != null and item.auditMemo != ''">
-                    audit_memo_ = #{auditMemo},
-                </if>
                 <if test="item.paymentPattern != null">
                     payment_pattern_ = #{item.paymentPattern},
                 </if>
@@ -261,6 +258,9 @@
 		            #{item,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		        </foreach>
         	</if>
+        	<if test="payUserType != null">
+                AND pay_user_type_ = #{payUserType}
+        	</if>
         </where>
     </select>
 
@@ -480,10 +480,12 @@
         AND status_='OPEN'
     </select>
     <select id="queryUserPaymentStatus" resultType="java.util.Map">
-        SELECT mgpc.music_group_id_ 'key',CASE WHEN COUNT(DISTINCT mgpcd.id_) > 0 THEN 'NON_PAYMENT' ELSE 'PAID_COMPLETED' END 'value'
-        FROM music_group_payment_calender mgpc
+        SELECT mg.id_ 'key',CASE WHEN COUNT(mgpc.id_) = 0 OR COUNT(DISTINCT mgpcd.id_) > 0 THEN 'NON_PAYMENT' ELSE 'PAID_COMPLETED' END 'value'
+        FROM music_group mg
+		LEFT JOIN music_group_payment_calender mgpc ON mgpc.music_group_id_ = mg.id_
         LEFT JOIN music_group_payment_calender_detail mgpcd ON mgpc.id_ = mgpcd.music_group_payment_calender_id_
-        WHERE FIND_IN_SET(mgpc.music_group_id_,#{musicGroupId}) AND mgpcd.user_id_ = #{userId} AND payment_status_ = 'NON_PAYMENT'
-        GROUP BY mgpc.music_group_id_
+        AND mgpcd.user_id_ = #{userId} AND mgpcd.payment_status_ = 'NON_PAYMENT'
+        WHERE FIND_IN_SET(mg.id_,#{musicGroupId})
+        GROUP BY mg.id_
     </select>
 </mapper>

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

@@ -264,4 +264,11 @@
             #{paymentOrderId}
         </foreach>
     </select>
+
+    <select id="getOrderDetailByType" resultMap="StudentPaymentOrderDetail">
+        SELECT * FROM student_payment_order_detail WHERE payment_order_id_ = #{orderId} AND type_ IN
+        <foreach collection="orderDetailTypes" item="orderDetailType" open="(" close=")" separator=",">
+            #{orderDetailType}
+        </foreach>
+    </select>
 </mapper>

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

@@ -749,4 +749,7 @@
           AND status_ = 'SUCCESS'
           AND type_ = #{orderType}
     </select>
+    <select id="getUserOrderByType" resultMap="StudentPaymentOrder">
+        SELECT * FROM student_payment_order WHERE user_id_=#{userId} AND type_=#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+    </select>
 </mapper>

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

@@ -154,10 +154,10 @@ public class MusicGroupController extends BaseController {
             if (musicGroup.getStatus() == MusicGroupStatusEnum.PAY) {
                 Date now = new Date();
                 MusicGroupPaymentCalender regCalender = musicGroupPaymentCalenderDao.findByMusicGroupRegCalender(musicGroupId);
-                if (regCalender != null) {
+                if (regCalender != null && regCalender.getDeadlinePaymentDate() != null) {
                     musicGroup.setPaymentExpireDate(regCalender.getDeadlinePaymentDate());
                 }
-                if (DateUtil.daysBetween(musicGroup.getPaymentExpireDate(), now) > 1) {
+                if (musicGroup.getPaymentExpireDate() != null && DateUtil.daysBetween(musicGroup.getPaymentExpireDate(), now) > 1) {
                     return failed("乐团缴费时间已截止");
                 }
             }

+ 22 - 15
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderController.java

@@ -1,12 +1,33 @@
 package com.ym.mec.web.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
@@ -14,21 +35,7 @@ import com.ym.mec.biz.service.MusicGroupPaymentCalenderCourseSettingsService;
 import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-
 import com.ym.mec.common.exception.BizException;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.*;
-import java.util.stream.Collectors;
 
 @RequestMapping("musicGroupPaymentCalender")
 @Api(tags = "乐团缴费日历服务")

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

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dto.MusicGroupGoodsAndDiscountDto;
+import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
 import com.ym.mec.biz.dal.entity.ChargeTypeSubjectMapper;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;

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

@@ -1,11 +1,13 @@
 package com.ym.mec.web.controller.education;
 
 import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
 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.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -14,16 +16,23 @@ import org.springframework.web.bind.annotation.RestController;
  * @Date 2020.09.14
  */
 @RestController
-@RequestMapping("eduStudentAttendance")
 public class EduStudentStudentController extends BaseController {
 
     @Autowired
     private StudentAttendanceService studentAttendanceService;
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
 
     @ApiOperation(value = "获取某节课学生签到列表")
-    @GetMapping("/findStudentAttendance")
+    @GetMapping("eduStudentAttendance/findStudentAttendance")
     public Object findStudentAttendance(QueryInfo queryInfo){
         return succeed(studentAttendanceService.findStudentAttendance(queryInfo));
     }
 
+    @ApiOperation(value = "获取学员详情页,包含所在乐团信息")
+    @PostMapping("studentManage/detail")
+    public Object getStudentDetail(Integer studentId){
+        return succeed(studentRegistrationService.getStudentDetail(studentId));
+    }
+
 }