Browse Source

系统收费

zouxuan 4 years ago
parent
commit
5e82cd9ba1
23 changed files with 492 additions and 203 deletions
  1. 1 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentStudentMemberCourseDetailDao.java
  3. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentCalenderAuditDto.java
  4. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentCalenderDto.java
  5. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RemainCourseTypeDurationDto.java
  6. 17 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  7. 0 22
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankSetting.java
  8. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java
  9. 115 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentStudentMemberCourseDetail.java
  10. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CourseViewTypeEnum.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  12. 118 90
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  13. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  14. 47 34
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  15. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  17. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  18. 21 13
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  19. 2 10
      mec-biz/src/main/resources/config/mybatis/MemberRankSettingMapper.xml
  20. 15 5
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml
  21. 89 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentStudentMemberCourseDetailMapper.xml
  22. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  23. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

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

@@ -1669,15 +1669,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     List<Map<Integer, Integer>> queryHasReatClass(@Param("classGroupIds") Set<String> classGroupIds, @Param("teacherId") String teacherId);
 
-
     /**
      * 查询班级未上的课程类型对应的时长
      *
      * @param classGroupIdList
      * @return
      */
-    List<RemainCourseTypeDurationDto> queryRemainCourseTypeDuration(String classGroupIdList);
-
+    List<RemainCourseTypeDurationDto> queryRemainCourseTypeDuration(@Param("classGroupIdList") String classGroupIdList, @Param("memberFlag") Integer memberFlag);
 
     /**
      * @return java.util.List<com.ym.mec.biz.dal.dto.CourseRepeatCheckDto>

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

@@ -0,0 +1,7 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentMemberCourseDetail;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface MusicGroupPaymentStudentMemberCourseDetailDao extends BaseDAO<Long, MusicGroupPaymentStudentMemberCourseDetail> {
+}

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentCalenderAuditDto.java

@@ -83,6 +83,28 @@ public class MusicGroupPaymentCalenderAuditDto {
     @ApiModelProperty(value = "是否赠送网管课",required = false)
     private Boolean isGiveMusicNetwork;
 
+    @ApiModelProperty(value = "会员原价",required = false)
+    private BigDecimal originalMemberPaymentAmount = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "会员现价",required = false)
+    private BigDecimal memberPaymentAmount = BigDecimal.ZERO;
+
+    public BigDecimal getOriginalMemberPaymentAmount() {
+        return originalMemberPaymentAmount;
+    }
+
+    public void setOriginalMemberPaymentAmount(BigDecimal originalMemberPaymentAmount) {
+        this.originalMemberPaymentAmount = originalMemberPaymentAmount;
+    }
+
+    public BigDecimal getMemberPaymentAmount() {
+        return memberPaymentAmount;
+    }
+
+    public void setMemberPaymentAmount(BigDecimal memberPaymentAmount) {
+        this.memberPaymentAmount = memberPaymentAmount;
+    }
+
     public Integer getMusicGroupOrganizationCourseSettingsId() {
         return musicGroupOrganizationCourseSettingsId;
     }

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentCalenderDto.java

@@ -28,6 +28,7 @@ public class MusicGroupPaymentCalenderDto {
 
 	private Boolean isGiveMusicNetwork;
 
+	//进行中加学员时,用户选择加入的班级
 	private String attribute1;
 
 	private String attribute2;
@@ -45,8 +46,8 @@ public class MusicGroupPaymentCalenderDto {
 	//会员有效期(月)
 	private Integer memberValidDate;
 
-	//会员付款金额
-	private BigDecimal memberPaymentAmount;
+	//会员申请付款金额
+	private BigDecimal memberPaymentAmount = BigDecimal.ZERO;
 
 	//会员等级编号
 	private Integer memberRankSettingId;

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

@@ -4,8 +4,10 @@ import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 
 public class RemainCourseTypeDurationDto {
 
+	//课程类型
 	private CourseScheduleType courseType;
-	
+
+	//剩余时长
 	private Integer remainMinutes;
 	
 	private Integer tempMergedCourseNum;

+ 17 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -29,9 +29,12 @@ public class CourseSchedule {
 
 	public enum CourseScheduleType implements BaseEnum<String, CourseScheduleType> {
 
-		SINGLE("SINGLE", "声部课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), COMPREHENSIVE("COMPREHENSIVE", "综合课"), PRACTICE(
-				"PRACTICE", "网管课"), ENLIGHTENMENT("ENLIGHTENMENT", "启蒙课"), TRAINING_SINGLE("TRAINING_SINGLE", "集训声部课"), TRAINING_MIX("TRAINING_MIX", "集训合奏课"), CLASSROOM(
-				"CLASSROOM", "课堂课"),COMM("COMM","对外课程"),HIGH_ONLINE("HIGH_ONLINE","网络基础训练课"),MUSIC_NETWORK("MUSIC_NETWORK","乐团网管课");
+		SINGLE("SINGLE", "声部课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"),
+		DEMO("DEMO", "试听课"), COMPREHENSIVE("COMPREHENSIVE", "综合课"), PRACTICE(
+				"PRACTICE", "网管课"), ENLIGHTENMENT("ENLIGHTENMENT", "启蒙课"), TRAINING_SINGLE("TRAINING_SINGLE", "集训声部课"),
+		TRAINING_MIX("TRAINING_MIX", "集训合奏课"), CLASSROOM(
+				"CLASSROOM", "课堂课"),COMM("COMM","对外课程"),HIGH_ONLINE("HIGH_ONLINE","网络基础训练课"),
+		MUSIC_NETWORK("MUSIC_NETWORK","乐团网管课");
 
 		private String code;
 
@@ -173,6 +176,17 @@ public class CourseSchedule {
 
 	private int isSignOut = 3;
 
+	//是否是会员收费的排课
+	private Integer memberFlag;
+
+	public Integer getMemberFlag() {
+		return memberFlag;
+	}
+
+	public void setMemberFlag(Integer memberFlag) {
+		this.memberFlag = memberFlag;
+	}
+
 	public String getTeachingTeacherNames() {
 		return teachingTeacherNames;
 	}

+ 0 - 22
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankSetting.java

@@ -22,12 +22,6 @@ public class MemberRankSetting {
 	private String icon;
 
 	/**  */
-	private Boolean trialFlag;
-
-	/**  */
-	private Integer trialDate;
-
-	/**  */
 	private List<Integer> memberPrivilegesItemIdList;
 	
 	/**  */
@@ -38,22 +32,6 @@ public class MemberRankSetting {
 
 	private List<MemberRankPrivileges> memberRankPrivileges;
 
-	public Boolean getTrialFlag() {
-		return trialFlag;
-	}
-
-	public void setTrialFlag(Boolean trialFlag) {
-		this.trialFlag = trialFlag;
-	}
-
-	public Integer getTrialDate() {
-		return trialDate;
-	}
-
-	public void setTrialDate(Integer trialDate) {
-		this.trialDate = trialDate;
-	}
-
 	public List<MemberRankPrivileges> getMemberRankPrivileges() {
 		return memberRankPrivileges;
 	}

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

@@ -146,7 +146,8 @@ public class MusicGroupPaymentCalender {
 	private java.util.Date createTime;
 
 	private java.util.Date updateTime;
-	
+
+	//进行中加学员时学员选择加入的班级
 	private String attribute1;
 	
 	private String attribute2;
@@ -170,9 +171,20 @@ public class MusicGroupPaymentCalender {
 	//会员付款金额
 	private BigDecimal memberPaymentAmount = BigDecimal.ZERO;
 
+	//会员原付款金额
+	private BigDecimal originalMemberPaymentAmount = BigDecimal.ZERO;
+
 	//会员等级编号
 	private Integer memberRankSettingId;
 
+	public BigDecimal getOriginalMemberPaymentAmount() {
+		return originalMemberPaymentAmount;
+	}
+
+	public void setOriginalMemberPaymentAmount(BigDecimal originalMemberPaymentAmount) {
+		this.originalMemberPaymentAmount = originalMemberPaymentAmount;
+	}
+
 	public Integer getMemberValidDate() {
 		return memberValidDate;
 	}

+ 115 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentStudentMemberCourseDetail.java

@@ -0,0 +1,115 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(music_group_payment_student_member_course_detail):
+ */
+public class MusicGroupPaymentStudentMemberCourseDetail {
+
+	/**  */
+	private Long id;
+	
+	/**  */
+	private Long musicGroupPaymentCalenderId;
+	
+	/**  */
+	private Long musicGroupPaymentCalenderDetailId;
+	
+	/**  */
+	private Integer userId;
+
+	/**  用来标注当前缴费项目排了哪些类型的课以及课时数*/
+	private String courseDetail;
+
+	/**  会员可排课时长*/
+	private Integer memberCourseMinutes;
+	
+	/**  已消耗时长*/
+	private Integer usedCourseMinutes;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	public String getCourseDetail() {
+		return courseDetail;
+	}
+
+	public void setCourseDetail(String courseDetail) {
+		this.courseDetail = courseDetail;
+	}
+
+	public Integer getMemberCourseMinutes() {
+		return memberCourseMinutes;
+	}
+
+	public void setMemberCourseMinutes(Integer memberCourseMinutes) {
+		this.memberCourseMinutes = memberCourseMinutes;
+	}
+
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setMusicGroupPaymentCalenderId(Long musicGroupPaymentCalenderId){
+		this.musicGroupPaymentCalenderId = musicGroupPaymentCalenderId;
+	}
+	
+	public Long getMusicGroupPaymentCalenderId(){
+		return this.musicGroupPaymentCalenderId;
+	}
+			
+	public void setMusicGroupPaymentCalenderDetailId(Long musicGroupPaymentCalenderDetailId){
+		this.musicGroupPaymentCalenderDetailId = musicGroupPaymentCalenderDetailId;
+	}
+	
+	public Long getMusicGroupPaymentCalenderDetailId(){
+		return this.musicGroupPaymentCalenderDetailId;
+	}
+			
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public void setUsedCourseMinutes(Integer usedCourseMinutes){
+		this.usedCourseMinutes = usedCourseMinutes;
+	}
+	
+	public Integer getUsedCourseMinutes(){
+		return this.usedCourseMinutes;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

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

@@ -3,12 +3,12 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum CourseViewTypeEnum implements BaseEnum<Integer, CourseViewTypeEnum> {
-    COURSE_lIST(0, "课程详情", 2),
-    AMR(1, "器乐练习系统", 4),
-    CLOUD_TEACHER(2, "云教练收费", 4),
+//    COURSE_lIST(0, "课程详情", 2),
+//    AMR(1, "器乐练习系统", 4),
+//    CLOUD_TEACHER(2, "云教练收费", 4),
     COURSE_FEE(0, "课程收费", 2),
-    MEMBER_FEE(1, "会员收费", 4),
-    CLOUD_TEACHER_PLUS(3, "云教练+收费", 5);
+    MEMBER_FEE(1, "会员收费", 4);
+//    CLOUD_TEACHER_PLUS(3, "云教练+收费", 5);
 
     private Integer code;
 

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

@@ -469,7 +469,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param classGroupIdList
      * @return
      */
-    List<RemainCourseTypeDurationDto> queryRemainCourseTypeDuration(String classGroupIdList);
+    List<RemainCourseTypeDurationDto> queryRemainCourseTypeDuration(String classGroupIdList,Integer memberFlag);
 
     /**
      * 进行中乐团-修改-班级详情-学员班级调整详情

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

@@ -1194,30 +1194,29 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         Date date = new Date();
         List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
+        List<CourseScheduleStudentPayment> totalCourseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
 
-        //如果是会员收费的乐团,那么课程价值都是0
-        if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
-
-        }
         // 计算单价
-        /*Map<CourseScheduleType, BigDecimal> unitPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
+        Map<CourseScheduleType, BigDecimal> unitPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
         Map<CourseScheduleType, BigDecimal> originUnitPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
         Map<CourseScheduleType, BigDecimal> totalCurrentPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
         Map<CourseScheduleType, BigDecimal> totalOriginPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
-        for (MusicGroupPaymentCalenderCourseSettings musicGroupPaymentCalenderCourseSettings : musicGroupPaymentCalenderCourseSettingsList) {
-            unitPriceMap.put(
-                    musicGroupPaymentCalenderCourseSettings.getCourseType(),
-                    musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice().divide(
-                            new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN));
-
-            originUnitPriceMap.put(
-                    musicGroupPaymentCalenderCourseSettings.getCourseType(),
-                    musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice().divide(
-                            new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN));
-
-            totalCurrentPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice());
-            totalOriginPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice());
-        }*/
+        if(musicGroupPaymentCalenderCourseSettingsList != null){
+            for (MusicGroupPaymentCalenderCourseSettings musicGroupPaymentCalenderCourseSettings : musicGroupPaymentCalenderCourseSettingsList) {
+                unitPriceMap.put(
+                        musicGroupPaymentCalenderCourseSettings.getCourseType(),
+                        musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice().divide(
+                                new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN));
+
+                originUnitPriceMap.put(
+                        musicGroupPaymentCalenderCourseSettings.getCourseType(),
+                        musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice().divide(
+                                new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN));
+
+                totalCurrentPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice());
+                totalOriginPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice());
+            }
+        }
 
         List<Integer> classGroupIds = classGroupList.stream().map(ClassGroup::getId).collect(Collectors.toList());
         List<CourseScheduleStudentPayment> ccs = courseScheduleStudentPaymentDao.getWithClassGroupIds(classGroupIds, studentId);
@@ -1227,15 +1226,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             ;
         }
 
-//        Map<CourseScheduleType, BigDecimal> totalPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
-//        Map<CourseScheduleType, BigDecimal> totalOrignPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
+        Map<CourseScheduleType, BigDecimal> totalPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
+        Map<CourseScheduleType, BigDecimal> totalOrignPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
 
         List<CourseSchedule> allNotStartCourses = new ArrayList<>();
         Map<Integer, List<ClassGroupTeacherMapper>> ctm = new HashMap<>();
 
-//        BigDecimal unitPrice = new BigDecimal(0);
-//        BigDecimal originUnitPrice = new BigDecimal(0);
-//        CourseScheduleType courseType = null;
+        BigDecimal unitPrice = new BigDecimal(0);
+        BigDecimal originUnitPrice = new BigDecimal(0);
+        CourseScheduleType courseType = null;
         for (ClassGroup classGroup : classGroupList) {
             if(HIGH_ONLINE.equals(classGroup.getType())){
                 Integer studentNum = classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId());
@@ -1264,53 +1263,103 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 classGroupStudentMapperDao.insert(classGroupStudentMapper);
             }
 
-            // 3、学生加入级未开始课程
+            // 3、学生加入级未开始课程
             List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
-            for (CourseSchedule courseSchedule : courseScheduleList) {
-                if (existCourseIds.contains(courseSchedule.getId())) {
-                    throw new BizException("该学员已在此班级{}课程中", courseSchedule.getId());
-                }
-
-                CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
-                courseScheduleStudentPayment.setCourseSchedule(courseSchedule);
-                courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
-                courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
-                courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
-                courseScheduleStudentPayment.setUserId(studentId);
-                courseScheduleStudentPayment.setBatchNo(batchNo);
-                courseScheduleStudentPayment.setBeMerged(false);
-                courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
-                courseScheduleStudentPayment.setOriginalPrice(BigDecimal.ZERO);
-
-                /*unitPrice = unitPriceMap.get(courseSchedule.getType());
-                if (unitPrice != null) {
-                    courseType = courseSchedule.getType();
-                    BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()));
-                    courseScheduleStudentPayment.setExpectPrice(unitPrice.multiply(duration).setScale(2, BigDecimal.ROUND_DOWN));
-
-                    if (totalPriceMap.containsKey(courseType)) {
-                        totalPriceMap.put(courseType, totalPriceMap.get(courseType).add(courseScheduleStudentPayment.getExpectPrice()));
-                    } else {
-                        totalPriceMap.put(courseType, courseScheduleStudentPayment.getExpectPrice());
-                    }
-                }
+            Map<Integer, List<CourseSchedule>> memberCourseSchedule = courseScheduleList.stream().collect(Collectors.groupingBy(CourseSchedule::getMemberFlag));
+            for (Integer integer : memberCourseSchedule.keySet()) {
+                List<CourseSchedule> courseSchedules = memberCourseSchedule.get(integer);
+                if(courseSchedules != null && courseSchedules.size() > 0){
+                    if(integer == 0){
+                        for (CourseSchedule courseSchedule : courseSchedules) {
+                            if (existCourseIds.contains(courseSchedule.getId())) {
+                                throw new BizException("该学员已在此班级{}课程中", courseSchedule.getId());
+                            }
+                            CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                            courseScheduleStudentPayment.setCourseSchedule(courseSchedule);
+                            courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
+                            courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
+                            courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+                            courseScheduleStudentPayment.setUserId(studentId);
+                            courseScheduleStudentPayment.setBatchNo(batchNo);
+                            courseScheduleStudentPayment.setBeMerged(false);
+                            courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
+                            courseScheduleStudentPayment.setOriginalPrice(BigDecimal.ZERO);
+                            //如果当前课程不是会员收费排课,那么计算课程价值
+                            unitPrice = unitPriceMap.get(courseSchedule.getType());
+                            if (unitPrice != null) {
+                                courseType = courseSchedule.getType();
+                                BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()));
+                                courseScheduleStudentPayment.setExpectPrice(unitPrice.multiply(duration).setScale(2, BigDecimal.ROUND_DOWN));
+
+                                if (totalPriceMap.containsKey(courseType)) {
+                                    totalPriceMap.put(courseType, totalPriceMap.get(courseType).add(courseScheduleStudentPayment.getExpectPrice()));
+                                } else {
+                                    totalPriceMap.put(courseType, courseScheduleStudentPayment.getExpectPrice());
+                                }
+                            }
 
-                originUnitPrice = originUnitPriceMap.get(courseSchedule.getType());
-                if (originUnitPrice != null) {
-                    courseType = courseSchedule.getType();
-                    BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()));
-                    courseScheduleStudentPayment.setOriginalPrice(originUnitPrice.multiply(duration).setScale(2, BigDecimal.ROUND_DOWN));
+                            originUnitPrice = originUnitPriceMap.get(courseSchedule.getType());
+                            if (originUnitPrice != null) {
+                                courseType = courseSchedule.getType();
+                                BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()));
+                                courseScheduleStudentPayment.setOriginalPrice(originUnitPrice.multiply(duration).setScale(2, BigDecimal.ROUND_DOWN));
 
-                    if (totalOrignPriceMap.containsKey(courseType)) {
-                        totalOrignPriceMap.put(courseType, totalOrignPriceMap.get(courseType).add(courseScheduleStudentPayment.getOriginalPrice()));
-                    } else {
-                        totalOrignPriceMap.put(courseType, courseScheduleStudentPayment.getOriginalPrice());
+                                if (totalOrignPriceMap.containsKey(courseType)) {
+                                    totalOrignPriceMap.put(courseType, totalOrignPriceMap.get(courseType).add(courseScheduleStudentPayment.getOriginalPrice()));
+                                } else {
+                                    totalOrignPriceMap.put(courseType, courseScheduleStudentPayment.getOriginalPrice());
+                                }
+                            }
+                            courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+                            courseScheduleStudentPayment.setCreateTime(date);
+                            courseScheduleStudentPayment.setUpdateTime(date);
+                            courseScheduleStudentPayments.add(courseScheduleStudentPayment);
+                        }
+                        if (courseScheduleStudentPayments.size() > 0) {
+                            // 排序
+                            Collections.sort(courseScheduleStudentPayments);
+                            List<CourseScheduleType> list = new ArrayList<CourseSchedule.CourseScheduleType>();
+                            for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
+                                courseType = courseScheduleStudentPayment.getCourseSchedule().getType();
+                                if (!list.contains(courseType)) {
+                                    list.add(courseType);
+
+                                    // 修改第一节课的金额
+                                    courseScheduleStudentPayment.setExpectPrice(courseScheduleStudentPayment.getExpectPrice().add(
+                                            totalCurrentPriceMap.get(courseType).subtract(totalPriceMap.get(courseType))));
+
+                                    courseScheduleStudentPayment.setOriginalPrice(courseScheduleStudentPayment.getOriginalPrice().add(
+                                            totalOriginPriceMap.get(courseType).subtract(totalOrignPriceMap.get(courseType))));
+                                }
+                            }
+                            totalCourseScheduleStudentPayments.addAll(courseScheduleStudentPayments);
+                        }
+                    }else {
+                        for (CourseSchedule courseSchedule : courseSchedules) {
+                            if (existCourseIds.contains(courseSchedule.getId())) {
+                                throw new BizException("该学员已在此班级{}课程中", courseSchedule.getId());
+                            }
+                            CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                            courseScheduleStudentPayment.setCourseSchedule(courseSchedule);
+                            courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
+                            courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
+                            courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+                            courseScheduleStudentPayment.setUserId(studentId);
+                            courseScheduleStudentPayment.setBatchNo(batchNo);
+                            courseScheduleStudentPayment.setBeMerged(false);
+                            courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
+                            courseScheduleStudentPayment.setOriginalPrice(BigDecimal.ZERO);
+                            courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+                            courseScheduleStudentPayment.setCreateTime(date);
+                            courseScheduleStudentPayment.setUpdateTime(date);
+                            totalCourseScheduleStudentPayments.add(courseScheduleStudentPayment);
+                        }
                     }
-                }*/
-                courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
-                courseScheduleStudentPayment.setCreateTime(date);
-                courseScheduleStudentPayment.setUpdateTime(date);
-                courseScheduleStudentPayments.add(courseScheduleStudentPayment);
+                }
+            }
+            if(totalCourseScheduleStudentPayments.size() > 0){
+                courseScheduleStudentPaymentService.batchInsert(totalCourseScheduleStudentPayments);
+                studentDao.updateStudentServiceTag(studentId, null, YesOrNoEnum.YES.getCode());
             }
 
             if(!CollectionUtils.isEmpty(courseScheduleList)){
@@ -1327,27 +1376,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         }
 
-        if (courseScheduleStudentPayments.size() > 0) {
-            // 排序
-            Collections.sort(courseScheduleStudentPayments);
-            /*List<CourseScheduleType> list = new ArrayList<CourseSchedule.CourseScheduleType>();
-            for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
-                courseType = courseScheduleStudentPayment.getCourseSchedule().getType();
-                if (!list.contains(courseType)) {
-                    list.add(courseType);
-
-                    // 修改第一节课的金额
-                    courseScheduleStudentPayment.setExpectPrice(courseScheduleStudentPayment.getExpectPrice().add(
-                            totalCurrentPriceMap.get(courseType).subtract(totalPriceMap.get(courseType))));
-
-                    courseScheduleStudentPayment.setOriginalPrice(courseScheduleStudentPayment.getOriginalPrice().add(
-                            totalOriginPriceMap.get(courseType).subtract(totalOrignPriceMap.get(courseType))));
-                }
-            }*/
-            courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
-            studentDao.updateStudentServiceTag(studentId, null, YesOrNoEnum.YES.getCode());
-        }
-
         //4、调整未上课课酬
         if (allNotStartCourses.size() > 0) {
             List<Long> courseScheduleIds = allNotStartCourses.stream().map(CourseSchedule::getId).collect(Collectors.toList());
@@ -3508,8 +3536,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<RemainCourseTypeDurationDto> queryRemainCourseTypeDuration(String classGroupIdList) {
-        return courseScheduleDao.queryRemainCourseTypeDuration(classGroupIdList);
+    public List<RemainCourseTypeDurationDto> queryRemainCourseTypeDuration(String classGroupIdList,Integer memberFlag) {
+        return courseScheduleDao.queryRemainCourseTypeDuration(classGroupIdList,memberFlag);
     }
 
     @Override

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

@@ -1019,7 +1019,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		params.put("isShowVisualSeal", false);
 
-		CourseViewTypeEnum ownershipType = CourseViewTypeEnum.COURSE_lIST;
+		CourseViewTypeEnum ownershipType = CourseViewTypeEnum.COURSE_FEE;
 
 		if(StringUtils.isBlank(musicGroupId)){
 			params.put("ownershipType", "OWN");
@@ -1117,8 +1117,8 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		params.put("isShowVisualSeal", true);
 
 		Map<String, Object> result = new HashMap<>();
-		result.put("courseViewType", CourseViewTypeEnum.COURSE_lIST);
-		CourseViewTypeEnum ownershipType = CourseViewTypeEnum.COURSE_lIST;
+		result.put("courseViewType", CourseViewTypeEnum.COURSE_FEE);
+		CourseViewTypeEnum ownershipType = CourseViewTypeEnum.COURSE_FEE;
 
 		if(StringUtils.isBlank(musicGroupId)){
 			params.put("ownershipType", "OWN");
@@ -1206,7 +1206,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		params.put("isShowVisualSeal", false);
 
-		CourseViewTypeEnum courseViewType = CourseViewTypeEnum.COURSE_lIST;
+		CourseViewTypeEnum courseViewType = CourseViewTypeEnum.COURSE_FEE;
 		params.put("ownershipType", "OWN");
 
 		List<SysUserContracts> userContracts = sysUserContractsService.getUserContractWithType(userId, ContractType.PRODUCT, 2);

+ 47 - 34
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -15,7 +15,9 @@ import java.util.*;
 import java.util.Map.Entry;
 import java.util.stream.Collectors;
 
+import com.alibaba.fastjson.JSONObject;
 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.event.source.GroupEventSource;
@@ -31,11 +33,6 @@ import com.alibaba.fastjson.JSON;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
-import com.ym.mec.biz.dal.dto.CalenderPushDto;
-import com.ym.mec.biz.dal.dto.ClassGroup4MixDto;
-import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDetailDto;
-import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDto;
-import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderDto;
 import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType;
@@ -148,8 +145,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				throw new BizException("[临时加课]不支持多周期缴费");
 			}
 		}
-		
-		if ((paymentType == PaymentType.ADD_STUDENT)) {
+
+		if (paymentType == PaymentType.ADD_STUDENT) {
 			//获取缴费状态在审核中或者已拒绝的缴费项目的学员
 			Integer userId = Integer.parseInt(musicGroupPaymentCalenderDto.getStudentIds());
 			String studentIds = musicGroupPaymentCalenderDao.queryCalenderStudentIds(musicGroupId,null);
@@ -171,13 +168,16 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		}
 		
 		if (musicGroup.getStatus() != MusicGroupStatusEnum.PROGRESS && musicGroup.getStatus() != MusicGroupStatusEnum.PRE_BUILD_FEE) {
-			throw new BizException("创建失败:乐团当前状态不能创建缴费");
+			throw new BizException("创建缴费失败:已存在缴费项目");
 		}
 		
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (sysUser == null) {
 			throw new BizException("请登录");
 		}
+		if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE && musicGroupPaymentDateRangeList.size() > 1) {
+			throw new BizException("创建缴费失败:会员收费乐团不支持多周期缴费");
+		}
 		// 所有缴费项目已完成排课才能创建下一个缴费项目
 		String orignBatchNo = musicGroupPaymentStudentCourseDetailDao.getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(musicGroupId, null, null,musicGroupPaymentCalenderDto.getIgnoreBatchNoList());
 		if (StringUtils.isNoneBlank(orignBatchNo)) {
@@ -199,7 +199,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		Date date = new Date();
 		String batchNo = idGeneratorService.generatorId() + "";
 
-		// 获取设置的课程
+		// 获取设置的课程收费标准
 		List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList = musicGroupPaymentCalenderDto
 				.getMusicGroupPaymentCalenderCourseSettingsList();
 //		if (musicGroupPaymentCalenderCourseSettingsList == null) {
@@ -217,7 +217,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				}
 			}
 		}
-
+		//会员原价
+		BigDecimal memberPaymentAmount = BigDecimal.ZERO;
 		if (payUserType == SCHOOL) {
 			status = AUDITING;
 		} else {
@@ -249,7 +250,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					if(dtoStatus != null && dtoStatus == AUDITING){
 						status = AUDITING;
 					}else {
-						// 如果是临时加课,判断是否审核
+						// 如果是课程收费,判断是否审核
 						for (MusicGroupPaymentCalenderCourseSettings courseSettings : musicGroupPaymentCalenderCourseSettingsList) {
 							OrganizationCourseUnitPriceSettings defaultUnitPrice = organizationCourseUnitPriceSettingsDao.queryByOrganIdAndCourseTypeAndChargeType(
 									musicGroup.getOrganId(), courseSettings.getCourseType(), musicGroup.getChargeTypeId());
@@ -274,13 +275,12 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					status = musicGroupPaymentCalenderDto.getStatus();
 				}
 			}
-			if(status != AUDITING && musicGroupPaymentCalenderDto.getMemberRankSettingId() != null){
+			if(musicGroupPaymentCalenderDto.getMemberRankSettingId() != null){
 				//会员价格是否变动
 				MemberFeeSetting memberFee = memberFeeSettingDao.findByRankIdAndOrganId(musicGroup.getOrganId(), musicGroupPaymentCalenderDto.getMemberRankSettingId());
 				if(memberFee == null){
 					throw new BizException("操作失败:请配置当前分部会员收费标准");
 				}
-				BigDecimal memberPaymentAmount;
 				switch (musicGroupPaymentCalenderDto.getMemberValidDate()){
 					case 1 :
 						memberPaymentAmount = memberFee.getCurrentMonthFee();
@@ -317,6 +317,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 			MusicGroupPaymentCalender musicGroupPaymentCalender = new MusicGroupPaymentCalender();
 			musicGroupPaymentCalender.setAttribute1(musicGroupPaymentCalenderDto.getAttribute1());
+			musicGroupPaymentCalender.setOriginalMemberPaymentAmount(memberPaymentAmount);
 			musicGroupPaymentCalender.setAttribute2(musicGroupPaymentCalenderDto.getAttribute2());
 			musicGroupPaymentCalender.setDeadlinePaymentDate(musicGroupPaymentDateRange.getDeadlinePaymentDate());
 			musicGroupPaymentCalender.setIsGiveMusicNetwork(musicGroupPaymentCalenderDto.getIsGiveMusicNetwork());
@@ -386,9 +387,11 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			musicGroupPaymentCalender.setUpdateTime(date);
 			musicGroupPaymentCalender.setStatus(status);
 
+			//缴费截止日期默认三天后
 			if (musicGroupPaymentCalender.getDeadlinePaymentDate() == null && payUserType == PayUserType.STUDENT) {
 				musicGroupPaymentCalender.setDeadlinePaymentDate(DateUtil.addDays(musicGroupPaymentCalender.getStartPaymentDate(), 3));
 			}
+			//校验缴费有效期冲突
 			if (paymentType != ADD_STUDENT && paymentType != ADD_COURSE && paymentType != SPAN_GROUP_CLASS_ADJUST) {
 				int count = musicGroupPaymentCalenderDao.queryIntersectionByValidDate(musicGroupId, musicGroupPaymentCalender.getPayUserType(),
 						musicGroupPaymentCalender.getPaymentValidStartDate(), musicGroupPaymentCalender.getPaymentValidEndDate(), null);
@@ -416,13 +419,14 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 			// 设置批次号
 			musicGroupPaymentCalender.setBatchNo(batchNo);
+			//设置会员缴费金额、级别以及有效期
 			musicGroupPaymentCalender.setMemberPaymentAmount(musicGroupPaymentCalenderDto.getMemberPaymentAmount());
 			musicGroupPaymentCalender.setMemberRankSettingId(musicGroupPaymentCalenderDto.getMemberRankSettingId());
 			musicGroupPaymentCalender.setMemberValidDate(musicGroupPaymentCalenderDto.getMemberValidDate());
 			musicGroupPaymentCalenderDto.setBatchNo(batchNo);
 			musicGroupPaymentCalenderDao.insert(musicGroupPaymentCalender);
 
-
+			//课程费用列表
 			List<MusicGroupPaymentCalenderCourseSettings> currentMusicGroupPaymentCalenderCourseSettings = musicGroupPaymentCalender
 					.getMusicGroupPaymentCalenderCourseSettingsList();
 
@@ -480,14 +484,11 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			musicGroup.setUpdateTime(date);
 			musicGroupDao.update(musicGroup);
 		} else if (paymentType == ADD_STUDENT) {
-
 			if (status != AUDITING) {
 				// 学生加到班级
 				String classGroupIdStr = musicGroupPaymentCalenderDto.getAttribute1();
-				if (StringUtils.isNotBlank(classGroupIdStr)) {
-					classGroupService.addStudentToClassGroupAndCourseArranging(Integer.parseInt(musicGroupPaymentCalenderDto.getStudentIds()), classGroupIdStr,
-							batchNo, musicGroupPaymentCalenderCourseSettingsList,musicGroup);
-				}
+				classGroupService.addStudentToClassGroupAndCourseArranging(Integer.parseInt(musicGroupPaymentCalenderDto.getStudentIds()), classGroupIdStr,
+						batchNo, musicGroupPaymentCalenderCourseSettingsList,musicGroup);
 			}
 		}
 
@@ -560,6 +561,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		if (sysUser == null) {
 			throw new BizException("请登录");
 		}
+		if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE && musicGroupPaymentDateRangeList.size() > 1) {
+			throw new BizException("创建缴费失败:会员收费乐团不支持多周期缴费");
+		}
 
 		List<Long> calenderIds = musicGroupPaymentCalenderList.stream().map(MusicGroupPaymentCalender :: getId).collect(Collectors.toList());
 		//删除原来数据
@@ -964,18 +968,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					//统计变更学员数
 					groupEventSource.musicGroupStudentChangeEvent(musicGroupPaymentCalender.getMusicGroupId(), StudentMusicGroupStatusEnum.NORMAL, new ArrayList<>(Arrays.asList(Integer.parseInt(studentId))));
 				}
-
-				if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
-					musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
-//					musicGroupPaymentStudentCourseDetail.setCourseType(courseSettings.getCourseType());
-					musicGroupPaymentStudentCourseDetail.setCreateTime(date);
-					musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
-					musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetail.getId());
-					musicGroupPaymentStudentCourseDetail.setMemberCourseMinutes(6*4*4*45);
-					musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
-//					musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(6*4*4*45);
-					musicGroupPaymentStudentCourseDetail.setUserId(Integer.parseInt(studentId));
-				}else {
+				if(musicGroupPaymentCalenderCourseSettingsList != null && musicGroupPaymentCalenderCourseSettingsList.size() > 0){
 					// 学生加课程明细
 					for(MusicGroupPaymentCalenderCourseSettings courseSettings : musicGroupPaymentCalenderCourseSettingsList){
 						if (courseSettings.getIsStudentOptional() == true) {
@@ -990,14 +983,34 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 						musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
 						musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(courseSettings.getCourseTotalMinuties());
 						musicGroupPaymentStudentCourseDetail.setUserId(Integer.parseInt(studentId));
-
 						musicGroupPaymentStudentCourseDetailList.add(musicGroupPaymentStudentCourseDetail);
 					}
 
-					if(musicGroupPaymentStudentCourseDetailList.size() > 0){
-						musicGroupPaymentStudentCourseDetailDao.batchInsert(musicGroupPaymentStudentCourseDetailList);
+				}
+				//如果是系统收费乐团
+				if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
+					//获取会员收费排课的课程
+					List<RemainCourseTypeDurationDto> durationDtos = courseScheduleDao.queryRemainCourseTypeDuration(musicGroupPaymentCalender.getAttribute1(), 1);
+					if(durationDtos != null && durationDtos.size() > 0){
+						Integer totalMinutes = durationDtos.stream().map(e -> e.getRemainMinutes()).reduce(0, Integer::sum);
+						musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
+						musicGroupPaymentStudentCourseDetail.setCreateTime(date);
+						musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
+						musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetail.getId());
+						//默认的会员总时长
+						musicGroupPaymentStudentCourseDetail.setMemberCourseMinutes(6*4*4*45);
+						//排课情况
+						musicGroupPaymentStudentCourseDetail.setCourseDetail(JSONObject.toJSONString(durationDtos));
+						musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
+						//消耗的时长
+						musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(totalMinutes);
+						musicGroupPaymentStudentCourseDetail.setUserId(Integer.parseInt(studentId));
+						musicGroupPaymentStudentCourseDetailList.add(musicGroupPaymentStudentCourseDetail);
 					}
 				}
+				if(musicGroupPaymentStudentCourseDetailList.size() > 0){
+					musicGroupPaymentStudentCourseDetailDao.batchInsert(musicGroupPaymentStudentCourseDetailList);
+				}
 			}
 		}
 	}

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

@@ -1839,7 +1839,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             if (hasPaid && musicGroupSubjectPlan != null) {
                 musicGroupSubjectPlan.setUpdateTime(date);
                 //减去缴费人数(器乐收费,0元时不减缴费人数)
-                if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER_PLUS)) {
+                if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE)) {
                     if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
                         musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
                         musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
@@ -2073,7 +2073,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (hasPaid && musicGroupSubjectPlan != null) {
             musicGroupSubjectPlan.setUpdateTime(date);
             //减去缴费人数(器乐收费,0元时不减缴费人数)
-            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER_PLUS)) {
+            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE)) {
                 if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
                     musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
                     musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);

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

@@ -127,7 +127,7 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         musicGroupSubjectGoodsAndInfo.setMusicGroupPaymentCalender(musicGroupRegCalender);
         musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectGoodsGroupList(goodsGroups);
         musicGroupSubjectGoodsAndInfo.setMusicGroup(musicGroup);
-        if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER_PLUS)) {
+        if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE)) {
             OrganizationCloudTeacherFee cloudTeacherFee = organizationCloudTeacherFeeDao.getByOrganId(musicGroup.getOrganId());
             musicGroupSubjectGoodsAndInfo.setCloudTeacherFee(cloudTeacherFee.getPrice());
             musicGroupSubjectGoodsAndInfo.setCloudTeacherPlusFee(cloudTeacherFee.getPlusPrice());

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

@@ -504,8 +504,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
         int paidNum = musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan.getPaidStudentNum();
         int paidZeroNum = musicOneSubjectClassPlan.getPaidZeroNum() == null ? 0 : musicOneSubjectClassPlan.getPaidZeroNum();
-        if ((musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !buyCloudTeacher) ||
-                (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER_PLUS) && !buyCloudTeacherPlus)
+        if ((musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) && !buyCloudTeacher) ||
+                (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) && !buyCloudTeacherPlus)
         ) {
             paidZeroFlag = true;
             if (studentRegistration.getNoneNeedCloudTeacher().equals(1)) {
@@ -1217,7 +1217,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             studentRegistrationDao.update(studentRegistration);
 
             //减去缴费人数(器乐收费,0元时不减缴费人数)
-            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER_PLUS)) {
+            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE)) {
                 if (studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
                     musicOneSubjectClassPlan.setPaidZeroNum(musicOneSubjectClassPlan.getPaidZeroNum() - 1);
                     musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);

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

@@ -36,6 +36,7 @@
         <result column="teaching_content_" property="teachingContent"/>
         <result column="note_" property="note"/>
         <result column="organ_id_" property="organId"/>
+        <result column="member_flag_" property="memberFlag"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
@@ -85,6 +86,7 @@
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="complaint_status_" property="complaintStatus"/>
         <result column="student_id_" property="studentId"/>
+        <result column="member_flag_" property="memberFlag"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto" id="studentCourseScheduleRecord">
@@ -157,7 +159,8 @@
         cs.teaching_content_,
         cs.note_,
         cs.organ_id_,
-        cs.new_course_id_
+        cs.new_course_id_,
+        cs.member_flag_
     </sql>
 
     <!-- 根据主键查询一条记录 -->
@@ -178,15 +181,15 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CourseSchedule" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO course_schedule
-        (id_,group_type_,music_group_id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,
+        (group_type_,music_group_id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,
         teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_,student_num_,leave_student_num_,
-        schoole_id_,is_lock_,note_,teaching_content_,organ_id_)
-        VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},
+        schoole_id_,is_lock_,note_,teaching_content_,organ_id_,member_flag_)
+        VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},
         #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},
         #{endClassTime},#{teacherId},#{teacherId},now(),now(),
         #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{name},
         #{teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{studentNum},#{leaveStudentNum},
-        #{schoolId},#{isLock},#{note},#{teachingContent},#{organId})
+        #{schoolId},#{isLock},#{note},#{teachingContent},#{organId},#{memberFlag})
     </insert>
 
     <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id"
@@ -194,7 +197,7 @@
         INSERT INTO course_schedule
         (group_type_,music_group_id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,
         teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_,student_num_,leave_student_num_,
-        schoole_id_,is_lock_,note_,teaching_content_,organ_id_)
+        schoole_id_,is_lock_,note_,teaching_content_,organ_id_,member_flag_)
         VALUE
         <foreach collection="list" item="course" separator=",">
             (#{course.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.musicGroupId},
@@ -202,7 +205,7 @@
             #{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},
             #{course.teacherId},now(),now(),#{course.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             #{course.name},#{course.teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.studentNum},
-            #{course.leaveStudentNum},#{course.schoolId},#{course.isLock},#{course.note},#{course.teachingContent},#{course.organId})
+            #{course.leaveStudentNum},#{course.schoolId},#{course.isLock},#{course.note},#{course.teachingContent},#{course.organId},#{course.memberFlag})
         </foreach>
     </insert>
 
@@ -210,6 +213,9 @@
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseSchedule">
         UPDATE course_schedule
         <set>
+            <if test="course.memberFlag != null">
+                member_flag_ = #{course.memberFlag},
+            </if>
             <if test="organId != null">
                 organ_id_ = #{organId},
             </if>
@@ -3531,14 +3537,16 @@
     </select>
 
     <select id="queryRemainCourseTypeDuration" resultMap="RemainCourseTypeDurationDto">
-		SELECT a.course_type_,SUM(remain_minutes_) remain_minutes_ FROM 
+		SELECT a.course_type_,SUM(remain_minutes_) remain_minutes_,SUM(temp_merged_course_num_) temp_merged_course_num_ FROM
 		(SELECT cs.type_ course_type_,SUM(TIMESTAMPDIFF(MINUTE,STR_TO_DATE(concat(cs.class_date_,' ',cs.start_class_time_),'%Y-%m-%d %H:%i:%s'),
-        STR_TO_DATE(concat(cs.class_date_,' ',cs.end_class_time_),'%Y-%m-%d %H:%i:%s'))) remain_minutes_
-		from course_schedule cs where FIND_IN_SET(cs.class_group_id_,#{classgroupId}) and cs.status_ = 'NOT_START' and (cs.new_course_id_ is null or cs.new_course_id_ = 0) group by cs.type_
-		UNION all
+        STR_TO_DATE(concat(cs.class_date_,' ',cs.end_class_time_),'%Y-%m-%d %H:%i:%s'))) remain_minutes_,COUNT(cs.id_) temp_merged_course_num_
+		FROM course_schedule cs WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIdList}) AND cs.status_ = 'NOT_START'
+		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = 0) AND cs.member_flag_ = #{memberFlag} GROUP BY cs.type_
+		UNION ALL
 		SELECT ncs.type_ course_type_,SUM(TIMESTAMPDIFF(MINUTE,STR_TO_DATE(concat(ncs.class_date_,' ',ncs.start_class_time_),'%Y-%m-%d %H:%i:%s'),
-        STR_TO_DATE(concat(ncs.class_date_,' ',ncs.end_class_time_),'%Y-%m-%d %H:%i:%s'))) remain_minutes_ FROM course_schedule cs LEFT JOIN course_schedule ncs ON ncs.id_ = cs.new_course_id_ 
-		  WHERE FIND_IN_SET(cs.class_group_id_,#{classgroupId}) and cs.new_course_id_ &gt; 0 AND ncs.status_ = 'NOT_START' GROUP BY ncs.type_) a
+        STR_TO_DATE(concat(ncs.class_date_,' ',ncs.end_class_time_),'%Y-%m-%d %H:%i:%s'))) remain_minutes_,COUNT(cs.id_) temp_merged_course_num_
+		FROM course_schedule cs LEFT JOIN course_schedule ncs ON ncs.id_ = cs.new_course_id_
+		WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIdList}) AND cs.new_course_id_ &gt; 0 AND ncs.status_ = 'NOT_START' AND cs.member_flag_ = #{memberFlag} GROUP BY ncs.type_) a
 		group BY a.course_type_
     </select>
 

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

@@ -11,8 +11,6 @@
 		<result column="name_" property="name" />
 		<result column="intro_" property="intro" />
 		<result column="icon_" property="icon" />
-		<result column="trial_flag_" property="trialFlag" />
-		<result column="trial_date_" property="trialDate" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 	</resultMap>
@@ -28,19 +26,13 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MemberRankSetting" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO member_rank_setting (name_,intro_,icon_,trial_flag_,trial_date_,create_time_,update_time_)
-		VALUES(#{name},#{intro},#{icon},#{trialFlag},#{trialDate},NOW(),NOW())
+		INSERT INTO member_rank_setting (name_,intro_,icon_,create_time_,update_time_)
+		VALUES(#{name},#{intro},#{icon},NOW(),NOW())
 	</insert>
 
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MemberRankSetting">
 		UPDATE member_rank_setting
 		<set>
-		<if test="trialFlag != null">
-			trial_flag_ = #{trialFlag},
-		</if>
-		<if test="trialDate != null">
-			trial_date_ = #{trialDate},
-		</if>
 		<if test="name != null">
 			name_ = #{name},
 		</if>

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

@@ -32,6 +32,7 @@
         <result column="attribute2_" property="attribute2"/>
         <result column="student_ids_" property="studentIds"/>
         <result column="member_payment_amount_" property="memberPaymentAmount"/>
+        <result column="original_member_payment_amount_" property="originalMemberPaymentAmount"/>
         <result column="member_rank_setting_id_" property="memberRankSettingId"/>
         <result column="member_valid_date_" property="memberValidDate"/>
     </resultMap>
@@ -52,12 +53,12 @@
         INSERT INTO music_group_payment_calender
         (music_group_id_,music_group_organization_course_settings_id_,pay_user_type_,reject_reason_,start_payment_date_,deadline_payment_date_,status_,expect_num_,
         actual_num_,memo_,is_give_music_network_,create_time_,update_time_,payment_valid_start_date_,payment_valid_end_date_,
-        payment_pattern_,payment_type_,payment_amount_,batch_no_,audit_memo_,operator_,attribute1_,attribute2_,student_ids_,member_payment_amount_,member_rank_setting_id_,member_valid_date_)
+        payment_pattern_,payment_type_,payment_amount_,batch_no_,audit_memo_,operator_,attribute1_,attribute2_,student_ids_,member_payment_amount_,member_rank_setting_id_,member_valid_date_,original_member_payment_amount_)
         VALUES(#{musicGroupId},#{musicGroupOrganizationCourseSettingId},#{payUserType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{rejectReason},#{startPaymentDate},#{deadlinePaymentDate},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{expectNum},#{actualNum},#{memo},#{isGiveMusicNetwork},now(),now(),
         #{paymentValidStartDate},#{paymentValidEndDate},#{paymentPattern},#{paymentType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        #{paymentAmount},#{batchNo},#{auditMemo},#{operator},#{attribute1},#{attribute2},#{studentIds},#{memberPaymentAmount},#{memberRankSettingId},#{memberValidDate})
+        #{paymentAmount},#{batchNo},#{auditMemo},#{operator},#{attribute1},#{attribute2},#{studentIds},#{memberPaymentAmount},#{memberRankSettingId},#{memberValidDate},#{originalMemberPaymentAmount})
     </insert>
 
     <insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender" useGeneratedKeys="true"
@@ -65,13 +66,13 @@
         INSERT INTO music_group_payment_calender
         (music_group_id_,music_group_organization_course_settings_id_,pay_user_type_,reject_reason_,start_payment_date_,deadline_payment_date_,status_,expect_num_,
         actual_num_,memo_,is_give_music_network_,create_time_,update_time_,payment_valid_start_date_,payment_valid_end_date_,payment_pattern_,payment_amount_,
-        payment_type_,batch_no_,audit_memo_,operator_,attribute1_,attribute2_,student_ids_,member_payment_amount_,member_rank_setting_id_,member_valid_date_)
+        payment_type_,batch_no_,audit_memo_,operator_,attribute1_,attribute2_,student_ids_,member_payment_amount_,member_rank_setting_id_,member_valid_date_,original_member_payment_amount_)
         VALUES
         <foreach collection="list" item="item" index="index" separator=",">
         (#{item.musicGroupId},#{item.musicGroupOrganizationCourseSettingId},#{item.payUserType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.rejectReason},#{item.startPaymentDate},#{item.deadlinePaymentDate},#{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{item.expectNum},#{item.actualNum},#{item.memo},#{item.isGiveMusicNetwork},now(),now(),
         #{item.paymentValidStartDate},#{item.paymentValidEndDate},#{item.paymentPattern},#{item.paymentAmount},#{item.paymentType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        #{item.batchNo},#{item.auditMemo},#{item.operator},#{item.attribute1},#{item.attribute2},#{item.studentIds},#{item.memberPaymentAmount},#{item.memberRankSettingId},#{item.memberValidDate})
+        #{item.batchNo},#{item.auditMemo},#{item.operator},#{item.attribute1},#{item.attribute2},#{item.studentIds},#{item.memberPaymentAmount},#{item.memberRankSettingId},#{item.memberValidDate},#{item.originalMemberPaymentAmount})
         </foreach>
     </insert>
 
@@ -79,6 +80,9 @@
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender">
         UPDATE music_group_payment_calender
         <set>
+            <if test="originalMemberPaymentAmount != null">
+                original_member_payment_amount_ = #{originalMemberPaymentAmount},
+            </if>
             <if test="memberPaymentAmount != null">
                 member_payment_amount_ = #{memberPaymentAmount},
             </if>
@@ -160,6 +164,9 @@
 	    <foreach collection="list" item="item" index="index" open="" close="" separator=";">
 	        UPDATE music_group_payment_calender
 	        <set>
+                <if test="item.originalMemberPaymentAmount != null">
+                    original_member_payment_amount_ = #{item.originalMemberPaymentAmount},
+                </if>
                 <if test="item.memberPaymentAmount != null">
                     member_payment_amount_ = #{item.memberPaymentAmount},
                 </if>
@@ -461,6 +468,8 @@
         <result property="auditMemo" column="audit_memo_"/>
         <result property="paymentAmount" column="payment_amount_"/>
         <result property="isGiveMusicNetwork" column="is_give_music_network_"/>
+        <result property="memberPaymentAmount" column="member_payment_amount_"/>
+        <result property="originalMemberPaymentAmount" column="original_member_payment_amount_"/>
     </resultMap>
     <sql id="MusicGroupPaymentCalenderAuditDtoSql">
         <where>
@@ -495,6 +504,8 @@
         CASE WHEN MAX(mgpc.payment_type_) = 'SPAN_GROUP_CLASS_ADJUST' THEN MAX(mgsca.master_class_course_times_) ELSE SUM(mgpccs.course_total_minuties_) END course_total_minuties_,
         CASE WHEN MAX(mgpc.payment_type_) = 'SPAN_GROUP_CLASS_ADJUST' THEN MAX(mgpc.payment_amount_) ELSE SUM(mgpccs.course_original_price_) END course_original_price_,
         SUM(mgpccs.course_current_price_) course_current_price_,
+        SUM(mgpc.member_payment_amount_) member_payment_amount_,
+        SUM(mgpc.original_member_payment_amount_) original_member_payment_amount_,
         MAX(mg.name_) music_group_name_,MAX(mg.organ_id_) organ_id_,MAX(mgpc.payment_pattern_)payment_pattern_
         FROM music_group_payment_calender mgpc
         LEFT JOIN music_group mg ON mg.id_ = mgpc.music_group_id_
@@ -628,6 +639,5 @@
         <if test="batchNo != null and batchNo != ''">
             AND batch_no_ != #{batchNo}
         </if>
-
     </select>
 </mapper>

+ 89 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentStudentMemberCourseDetailMapper.xml

@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentMemberCourseDetailDao">
+
+    <resultMap
+            type="com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentMemberCourseDetail"
+            id="MusicGroupPaymentStudentMemberCourseDetail">
+        <result column="id_" property="id"/>
+        <result column="music_group_payment_calender_id_" property="musicGroupPaymentCalenderId"/>
+        <result column="music_group_payment_calender_detail_id_"
+                property="musicGroupPaymentCalenderDetailId"/>
+        <result column="user_id_" property="userId"/>
+        <result column="course_detail_" property="courseDetail"/>
+        <result column="member_course_minutes_" property="memberCourseMinutes"/>
+        <result column="used_course_minutes_" property="usedCourseMinutes"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="MusicGroupPaymentStudentMemberCourseDetail">
+        SELECT *
+        FROM music_group_payment_student_member_course_detail
+        WHERE id_ =
+              #{id}
+    </select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="MusicGroupPaymentStudentMemberCourseDetail">
+        SELECT *
+        FROM music_group_payment_student_member_course_detail
+        ORDER BY id_
+    </select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert"
+            parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentMemberCourseDetail"
+            useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+        INSERT INTO music_group_payment_student_member_course_detail
+        (music_group_payment_calender_id_,music_group_payment_calender_detail_id_,user_id_,member_course_minutes_,used_course_minutes_,create_time_,update_time_)
+        VALUES(#{musicGroupPaymentCalenderId},#{musicGroupPaymentCalenderDetailId},#{userId},#{memberCourseMinutes},#{usedCourseMinutes},NOW(),NOW())
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update"
+            parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentMemberCourseDetail">
+        UPDATE music_group_payment_student_member_course_detail
+        <set>
+            <if test="usedCourseMinutes != null">
+                used_course_minutes_ = #{usedCourseMinutes},
+            </if>
+            <if test="memberCourseMinutes != null">
+                member_course_minutes_ = #{memberCourseMinutes},
+            </if>
+            <if test="userId != null">
+                user_id_ = #{userId},
+            </if>
+            <if test="musicGroupPaymentCalenderDetailId != null">
+                music_group_payment_calender_detail_id_ = #{musicGroupPaymentCalenderDetailId},
+            </if>
+            <if test="musicGroupPaymentCalenderId != null">
+                music_group_payment_calender_id_ = #{musicGroupPaymentCalenderId},
+            </if>
+                update_time_ = NOW()
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+        DELETE
+        FROM music_group_payment_student_member_course_detail
+        WHERE id_ = #{id}
+    </delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="MusicGroupPaymentStudentMemberCourseDetail"
+            parameterType="map">
+        SELECT * FROM music_group_payment_student_member_course_detail ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*)
+        FROM music_group_payment_student_member_course_detail
+    </select>
+</mapper>

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

@@ -359,8 +359,8 @@ public class ClassGroupController extends BaseController {
     @ApiOperation(value = "获取班级剩余课程类型对应的时长(分钟)")
     @GetMapping("/queryRemainCourseTypeDuration")
     @PreAuthorize("@pcs.hasPermissions('classGroup/queryRemainCourseTypeDuration')")
-    public HttpResponseResult queryRemainCourseTypeDuration(String classGroupIdList) {
-        return succeed(classGroupService.queryRemainCourseTypeDuration(classGroupIdList));
+    public HttpResponseResult queryRemainCourseTypeDuration(String classGroupIdList,Integer memberFlag) {
+        return succeed(classGroupService.queryRemainCourseTypeDuration(classGroupIdList,memberFlag));
     }
 
     @ApiOperation(value = "进行中乐团-修改-班级详情-学员班级调整-班级剩余课次")

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

@@ -295,7 +295,7 @@ public class StudentRegistrationController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = null;
-            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER)) {
+            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE)) {
                 String[] header = {"学员编号", "学员姓名", "性别", "联系电话", "年级班级", "选报声部1", "选报声部2", "是否服从调剂", "乐器准备方式", "练习系统"};
                 String[] body = {"userId", "userName", "gender ? '男' : '女'", "phone", "currentGrade", "subjectFirstName", "subjectSecondName", "isAllowAdjust ? '是' : '否'", "kitPurchaseMethod", "cloudTeacherMethod"};
                 workbook = POIUtil.exportExcel(header, body, studentPreRegistration.getRows());