瀏覽代碼

Merge branch 'master' into review-zjh

周箭河 5 年之前
父節點
當前提交
7e416312ee
共有 20 個文件被更改,包括 258 次插入107 次删除
  1. 1 1
      codegen/src/main/java/com/yonge/crud/CodegenApplication.java
  2. 1 1
      codegen/src/main/resources/generateConfigration.xml
  3. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDao.java
  4. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java
  5. 15 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/DegreeRegistration.java
  6. 33 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/DegreeQueryInfo.java
  7. 22 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java
  8. 13 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  9. 14 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  10. 29 24
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  12. 11 5
      mec-biz/src/main/resources/config/mybatis/DegreeRegistrationMapper.xml
  13. 6 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml
  14. 7 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml
  15. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  16. 3 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  17. 1 0
      mec-student/src/main/java/com/ym/mec/student/controller/DegreeController.java
  18. 34 0
      mec-web/src/main/java/com/ym/mec/web/controller/DegreeController.java
  19. 54 0
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  20. 1 32
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduDegreeController.java

+ 1 - 1
codegen/src/main/java/com/yonge/crud/CodegenApplication.java

@@ -28,7 +28,7 @@ public class CodegenApplication {
 		 */
 
 		// "src/generateConfigration.xml"
-		GenerateConfiguration genConfig = toObject("src/main/resources/generateConfigration.xml", GenerateConfiguration.class);
+		GenerateConfiguration genConfig = toObject("codegen/src/main/resources/generateConfigration.xml", GenerateConfiguration.class);
 
 		Configuration config = genConfig.getDbConfiguration();
 

+ 1 - 1
codegen/src/main/resources/generateConfigration.xml

@@ -4,7 +4,7 @@
 		<driverClass>com.mysql.jdbc.Driver</driverClass>
 		<url>jdbc:mysql://47.99.212.176:3306/edu_saas</url>
 		<username>edu_saas</username>
-		<password>edu_saas</password>
+		<password>dayaDataOnline@2019</password>
 		<catalog>edu_saas</catalog>
 		<schema>edu_saas</schema>
 	</dbConfiguration>

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

@@ -93,4 +93,6 @@ public interface MusicGroupPaymentCalenderDao extends BaseDAO<Long, MusicGroupPa
      * @return
      */
     MusicGroupPaymentCalender getLastStartOne(@Param("musicGroupId") String musicGroupId);
+
+    int queryIntersectionByDate(@Param("musicGroupId") String musicGroupId, @Param("startTime") String startTime, @Param("endTime") String endTime);
 }

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

@@ -127,4 +127,12 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
 	 * @return
 	 */
 	Set<Integer> queryStudentIds(Long calenderId);
+
+	/**
+	 * 查询进行中的缴费
+	 * @param musicGroupId
+	 * @param userId
+	 * @return
+	 */
+    Integer countOpenPayment(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
 }

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

@@ -78,7 +78,7 @@ public class DegreeRegistration {
     /**
      * 考级费用
      */
-    @ApiModelProperty(value = "收费标准",required = false)
+    @ApiModelProperty(value = "考级费用",required = false)
     private BigDecimal money;
 
     /**
@@ -108,6 +108,12 @@ public class DegreeRegistration {
      */
     private Integer status;
 
+
+    /**
+     * 0-未支付 1-支付中 2-支付中
+     */
+    private String statusStr;
+
     /**
      *  是否重新支付
      */
@@ -265,4 +271,12 @@ public class DegreeRegistration {
     public void setTheoryCert(String theoryCert) {
         this.theoryCert = theoryCert;
     }
+
+    public String getStatusStr() {
+        return statusStr;
+    }
+
+    public void setStatusStr(String statusStr) {
+        this.statusStr = statusStr;
+    }
 }

+ 33 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/page/DegreeQueryInfo.java

@@ -106,10 +106,15 @@ public class DegreeQueryInfo extends QueryInfo {
      */
     private Date updateTime;
 
-    /**
-     * 0-未支付 1-支付中 2-支付中
-     */
-    private Integer status;
+
+    @ApiModelProperty(value = "开始日期(不包含时分秒)",required = false)
+    private String startTime;
+
+    @ApiModelProperty(value = "结束日期",required = false)
+    private String endTime;
+
+    @ApiModelProperty(value = "状态 reg-报名 pay-已缴费",required = false)
+    private String status;
 
 
     public Integer getId() {
@@ -224,14 +229,6 @@ public class DegreeQueryInfo extends QueryInfo {
         this.updateTime = updateTime;
     }
 
-    public Integer getStatus() {
-        return status;
-    }
-
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-
     public String getLevel() {
         return level;
     }
@@ -255,4 +252,28 @@ public class DegreeQueryInfo extends QueryInfo {
     public void setTheoryCert(String theoryCert) {
         this.theoryCert = theoryCert;
     }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
 }

+ 22 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java

@@ -1,15 +1,27 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.ym.mec.biz.dal.dao.DegreeRegistrationDao;
 import com.ym.mec.biz.dal.dao.SporadicChargeInfoDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.PageInfoDegree;
-import com.ym.mec.biz.dal.dto.PageInfoOrder;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.entity.DegreeRegistration;
+import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.biz.dal.page.DegreeQueryInfo;
 import com.ym.mec.biz.service.DegreeRegistrationService;
 import com.ym.mec.biz.service.PayService;
@@ -19,13 +31,6 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.*;
 
 @Service
 public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, DegreeRegistration> implements DegreeRegistrationService {
@@ -59,12 +64,15 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         Date nowDate = new Date();
         //获取收费项价格
         SporadicChargeInfo chargeInfo = sporadicChargeInfoDao.get(degreeRegistration.getSporadicId());
-        if (chargeInfo == null) {
+        if (chargeInfo == null || chargeInfo.getDelFlag().equals(1) || chargeInfo.getOpenFlag().equals(1)) {
             throw new BizException("你选的考试级别不存在");
         }
-        if (chargeInfo.getTitle().equals("二级") && StringUtils.isBlank(degreeRegistration.getTheoryCert())) {
-            throw new BizException(chargeInfo.getTitle() + "考试必须上传证书");
-        }
+
+		if (!chargeInfo.getTitle().equals("一级") && !chargeInfo.getTitle().equals("二级") && StringUtils.equals("免考", degreeRegistration.getTheoryLevel())
+				&& StringUtils.isBlank(degreeRegistration.getTheoryCert())) {
+			throw new BizException("报考级别为“" + chargeInfo.getTitle() + "”且乐理级别是“免考”时,必须上传证书");
+		}
+
         degreeRegistration.setLevel(chargeInfo.getTitle());
         BigDecimal theoryMoney = BigDecimal.ZERO;
         switch (degreeRegistration.getTheoryLevel()) {

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

@@ -121,21 +121,25 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		if(calenderDetails.size() == 0){
 			return "操作失败,没有可以开启缴费的学员";
 		}
-		Long musicGroupPaymentCalenderId = calenderDetails.get(0).getMusicGroupPaymentCalenderId();
-		MusicGroupPaymentCalender calender = musicGroupPaymentCalenderDao.get(musicGroupPaymentCalenderId);
-		Date startPaymentDate = calender.getStartPaymentDate();
-		Date deadlinePaymentDate = calender.getDeadlinePaymentDate();
+//		Long musicGroupPaymentCalenderId = calenderDetails.get(0).getMusicGroupPaymentCalenderId();
+//		MusicGroupPaymentCalender calender = musicGroupPaymentCalenderDao.get(musicGroupPaymentCalenderId);
+//		Date startPaymentDate = calender.getStartPaymentDate();
+//		Date deadlinePaymentDate = calender.getDeadlinePaymentDate();
 		int length = ids.split(",").length;
 		Date date = new Date();
 		Iterator<MusicGroupPaymentCalenderDetail> iterator = calenderDetails.iterator();
 		MusicGroupPaymentCalenderDetail next;
 		while(iterator.hasNext()){
 			next = iterator.next();
-			int count1 = musicGroupPaymentCalenderDao.queryIntersectionByPaymentDate(next.getMusicGroupId(),startPaymentDate,deadlinePaymentDate);
+			Integer countOpenPayment = musicGroupPaymentCalenderDetailDao.countOpenPayment(next.getMusicGroupId(), next.getUserId());
+			if(countOpenPayment > 0){
+				iterator.remove();
+			}
+			/*int count1 = musicGroupPaymentCalenderDao.queryIntersectionByPaymentDate(next.getMusicGroupId(),startPaymentDate,deadlinePaymentDate);
 			int count = musicGroupPaymentCalenderDetailDao.queryIntersectionByPaymentDate(next.getMusicGroupId(),next.getUserId());
 			if(count > 0 || count1 > 0){
 				iterator.remove();
-			}
+			}*/
 		}
 		if(calenderDetails.size() == 0){
 			return "操作失败,学员有未完成的订单";
@@ -193,11 +197,12 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		}
 		MusicGroupPaymentCalenderDetail userLastCalenderDetail = musicGroupPaymentCalenderDetailDao.getUserLastCalenderDetail(calender.getMusicGroupId(), userId);
 		if(userLastCalenderDetail != null){
-			throw new BizException("数据已存在");
+			throw new BizException("缴费信息已存在");
 		}
 		Date date = new Date();
+		Integer countOpenPayment = musicGroupPaymentCalenderDetailDao.countOpenPayment(calender.getMusicGroupId(), userId);
 		MusicGroupStudentFee studentFee = musicGroupStudentFeeDao.findByUser(userId, calender.getMusicGroupId());
-		if(studentFee.getPaymentStatus() != PAID_COMPLETED){
+		if(countOpenPayment > 0){
 			throw new BizException("操作失败: 学员有未完成的缴费");
 		}
 		calender.setUpdateTime(date);

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

@@ -69,8 +69,12 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			musicGroupPaymentCalender.setDeadlinePaymentDate(DateUtil.addDays(musicGroupPaymentCalender.getStartPaymentDate(), 3));
 		}
 		// 判断缴费开始时间、结束时间是否被其他缴费记录占用
-		int count = musicGroupPaymentCalenderDao.queryIntersectionByPaymentDate(musicGroupId, musicGroupPaymentCalender.getStartPaymentDate(),
-				musicGroupPaymentCalender.getDeadlinePaymentDate());
+//		int count = musicGroupPaymentCalenderDao.queryIntersectionByPaymentDate(musicGroupId, musicGroupPaymentCalender.getStartPaymentDate(),
+//				musicGroupPaymentCalender.getDeadlinePaymentDate());
+
+		String format = DateUtil.format(musicGroupPaymentCalender.getStartPaymentDate(), DateUtil.DEFAULT_PATTERN);
+		String format1 = DateUtil.format(musicGroupPaymentCalender.getDeadlinePaymentDate(), DateUtil.DEFAULT_PATTERN);
+		int count = musicGroupPaymentCalenderDao.queryIntersectionByDate(musicGroupId, format,format1);
 		if (count > 0) {
 			throw new BizException("缴费时间存在冲突,请修改缴费开始日期");
 		}
@@ -351,16 +355,19 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		}
 		Date date = new Date();
 		// 判断缴费开始时间、结束时间是否被其他缴费记录占用
-		int count = musicGroupPaymentCalenderDao.queryIntersectionByPaymentDate(calender.getMusicGroupId(), startTime,endTime);
-		if (count > 1) {
+//		int count = musicGroupPaymentCalenderDao.queryIntersectionByPaymentDate(calender.getMusicGroupId(), startTime,endTime);
+		String format = DateUtil.format(startTime, DateUtil.DEFAULT_PATTERN);
+		String format1 = DateUtil.format(endTime, DateUtil.DEFAULT_PATTERN);
+		int count = musicGroupPaymentCalenderDao.queryIntersectionByDate(calender.getMusicGroupId(), format,format1);
+		if (count > 0) {
 			throw new BizException("缴费时间存在冲突,请修改缴费开始日期");
 		}
 		calender.setStartPaymentDate(startTime);
 		calender.setDeadlinePaymentDate(endTime);
 		calender.setUpdateTime(date);
-		if (date.after(endTime)) {
+		if (endTime.before(date) && !DateUtil.isSameDay(date,endTime)) {
 			calender.setPaymentStatus(PaymentStatusEnum.YES);
-		} else if (date.after(startTime)) {
+		} else if (date.after(startTime) || DateUtil.isSameDay(date,endTime)) {
 			calender.setPaymentStatus(PaymentStatusEnum.OPEN);
 			//修改Fee缴费状态为未缴费
 			musicGroupStudentFeeDao.updatePaymentStatus(calender.getId(),"NON_PAYMENT");
@@ -476,4 +483,4 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			}
 		}
 	}
-}
+}

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

@@ -210,34 +210,39 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 }
                 //原来乐团的注册学生
                 List<StudentRegistration> musicGroupStudentRegistrationList = studentRegistrationDao.findStudentListByIdList(e.getRegisterIdList());
-                for (StudentRegistration studentRegistration : musicGroupStudentRegistrationList) {
-                    studentRegistration.setId(null);
-                    studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
-                    studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
-                    studentRegistration.setMusicGroupId(musicGroupId);
-                    studentRegistration.setSubjectId(e.getSubjectId());
-                    studentRegistration.setActualSubjectId(e.getSubjectId());
-                    studentRegistration.setTemporaryCourseFee(null);
-                }
-                studentRegistrationList.addAll(musicGroupStudentRegistrationList);
 
                 for (MusicGroupSubjectPlan musicGroupSubjectPlan : musicGroupSubjectPlans) {
                     if (!musicGroupSubjectPlan.getSubjectId().equals(e.getSubjectId())) continue;
                     musicGroupSubjectPlan.setExpectedStudentNum(e.getRegisterIdList().size());
                     musicGroupSubjectPlan.setApplyStudentNum(e.getRegisterIdList().size());
+                    if (musicGroupSubjectPlan.getFee().compareTo(BigDecimal.ZERO) == 0) {
+                        musicGroupSubjectPlan.setPaidStudentNum(e.getRegisterIdList().size());
+                    }
+
+                    for (StudentRegistration studentRegistration : musicGroupStudentRegistrationList) {
+                        studentRegistration.setId(null);
+                        if (musicGroupSubjectPlan.getFee().compareTo(BigDecimal.ZERO) == 0) {
+                            studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
+                            studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
+                        } else {
+                            studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
+                            studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
+                        }
+                        studentRegistration.setMusicGroupId(musicGroupId);
+                        studentRegistration.setSubjectId(e.getSubjectId());
+                        studentRegistration.setActualSubjectId(e.getSubjectId());
+                        studentRegistration.setTemporaryCourseFee(null);
+                    }
                 }
+
+                studentRegistrationList.addAll(musicGroupStudentRegistrationList);
             });
             musicGroup.setStatus(MusicGroupStatusEnum.PAY);
             //是否是免费团
             if (musicGroupSubjectPlans != null && musicGroupSubjectPlans.size() > 0) {
-                int size = musicGroupSubjectPlans.stream().filter(e -> e.getFee().compareTo(BigDecimal.ZERO) == 1).collect(Collectors.toList()).size();
+                int size = (int) musicGroupSubjectPlans.stream().filter(e -> e.getFee().compareTo(BigDecimal.ZERO) > 0).count();
                 if (size < 1) {
                     musicGroup.setStatus(MusicGroupStatusEnum.PREPARE);
-                    if (studentRegistrationList.size() > 0) {
-                        //修改为已缴费
-                        studentRegistrationList.forEach(e -> e.setPaymentStatus(PaymentStatusEnum.YES));
-                    }
-                    musicGroupSubjectPlans.forEach(e -> e.setPaidStudentNum(e.getApplyStudentNum()));
                 }
             }
             if (studentRegistrationList.size() > 0) {
@@ -351,9 +356,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         String receiver = "daya";
         //深圳的零星缴费是在深圳
         String sDaYaOrganIds = sysConfigDao.findConfigValue(SysConfigService.SZ_DA_YA_ORGAN_IDS);
-        if(StringUtils.isNotBlank(sDaYaOrganIds)){
+        if (StringUtils.isNotBlank(sDaYaOrganIds)) {
             List<String> sDaYaOrganIdList = Arrays.asList(sDaYaOrganIds.split(","));
-            if(sDaYaOrganIdList.contains(chargeInfo.getOrganId().toString())){
+            if (sDaYaOrganIdList.contains(chargeInfo.getOrganId().toString())) {
                 receiver = "sdaya";
             }
         }
@@ -1061,7 +1066,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
         List<HighClassGroupDto> highClassGroup = classGroupDao.findHighClassGroup(musicGroupId, classGroupIds);
 
-        if(classGroupIds != null && !classGroupIds.isEmpty()){
+        if (classGroupIds != null && !classGroupIds.isEmpty()) {
             List<Integer> classGroupSet = highClassGroup.stream().map(HighClassGroupDto::getId).collect(Collectors.toList());
             Map<Integer, Long> totalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countTotalNumByClassGroupId(classGroupSet, null));
             highClassGroup.removeIf(next -> totalNumMap.get(next.getId()) != null && totalNumMap.get(next.getId()) > 0);
@@ -1102,9 +1107,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         String baseURL = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
         String url = baseURL + "/#/smallRegister?musicGroupId=" + musicGroupId;
-        classGroupIds =  highClassGroup.stream().map(e->e.getId().toString()).collect(Collectors.joining(","));
-        if(classGroupIds != null && !classGroupIds.isEmpty()){
-            url = baseURL + "/#/smallRegister?musicGroupId=" + musicGroupId+"&classGroupIds="+classGroupIds;
+        classGroupIds = highClassGroup.stream().map(e -> e.getId().toString()).collect(Collectors.joining(","));
+        if (classGroupIds != null && !classGroupIds.isEmpty()) {
+            url = baseURL + "/#/smallRegister?musicGroupId=" + musicGroupId + "&classGroupIds=" + classGroupIds;
         }
         String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
         sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE,
@@ -1434,7 +1439,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             //删除续费周期
             musicGroupStudentFeeDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
             //删除缴费明细
-            musicGroupPaymentCalenderDetailDao.deleteByUserIdAndMusicGroupId(userId,musicGroupId);
+            musicGroupPaymentCalenderDetailDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
             // 退团
             studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.QUIT);
             studentRegistration.setUpdateTime(date);
@@ -1536,7 +1541,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //删除续费周期
         musicGroupStudentFeeDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
         //删除缴费明细
-        musicGroupPaymentCalenderDetailDao.deleteByUserIdAndMusicGroupId(userId,musicGroupId);
+        musicGroupPaymentCalenderDetailDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
 
         // 退团
         studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.QUIT);

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

@@ -2497,7 +2497,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(classGroup.getStudentNum()>0&&(VipGroupStatusEnum.APPLYING.equals(vipGroup.getStatus()))){
 			int i = studentPaymentOrderDao.countGroupOrderWithoutFailed(vipGroupId.toString(), GroupType.VIP);
 			if(i>0){
-				throw new BizException("该课程组学员为购买加入,无法添加学员加入,请走学员购买流程!");
+				throw new BizException("已有学员购买了该课程组,无法添加,请走学员购买流程!");
 			}
 		}
 

+ 11 - 5
mec-biz/src/main/resources/config/mybatis/DegreeRegistrationMapper.xml

@@ -39,8 +39,11 @@
 
     <sql id="queryPageSql">
         <where>
-            <if test="status != null">
-                AND status_= #{status}
+            <if test="status != null and status=='reg'">
+                <![CDATA[AND status_ <= 1]]>
+            </if>
+            <if test="status != null and status=='pay'">
+                AND status_ = 2
             </if>
             <if test="id != null">
                 AND id_ = #{id}
@@ -63,15 +66,18 @@
             <if test="subject != null">
                 AND subject_= #{subject}
             </if>
-            <if test="subject != null">
-                AND subject_= #{subject}
-            </if>
             <if test="mobile != null">
                 AND mobile_= #{mobile}
             </if>
             <if test="level != null">
                 AND level_= #{level}
             </if>
+            <if test="startTime != null">
+                AND DATE_FORMAT(create_time_,"%Y-%m-%d") >= #{startTime}
+            </if>
+            <if test="endTime != null">
+                <![CDATA[AND DATE_FORMAT(create_time_,"%Y-%m-%d") <= #{endTime}]]>
+            </if>
         </where>
     </sql>
 

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

@@ -290,4 +290,10 @@
 	<select id="queryStudentIds" resultType="java.lang.Integer">
 		SELECT user_id_ FROM music_group_payment_calender_detail WHERE music_group_payment_calender_id_ = #{calenderId}
 	</select>
+    <select id="countOpenPayment" resultType="java.lang.Integer">
+		SELECT COUNT(DISTINCT mgpcd.id_) FROM music_group_payment_calender mgpc
+		LEFT JOIN music_group_payment_calender_detail mgpcd ON mgpc.id_ = mgpcd.music_group_payment_calender_id_
+		WHERE mgpcd.user_id_ = #{userId} AND mgpc.music_group_id_ = #{musicGroupId} AND (mgpc.payment_status_ = 1 OR mgpcd.open_ = 1)
+		AND mgpcd.payment_status_ != 'PAID_COMPLETED'
+	</select>
 </mapper>

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

@@ -197,4 +197,11 @@
     <select id="getLastStartOne" resultMap="MusicGroupPaymentCalender">
         SELECT * FROM music_group_payment_calender WHERE music_group_id_ = #{musicGroupId} ORDER BY start_payment_date_ DESC LIMIT 1
     </select>
+    <select id="queryIntersectionByDate" resultType="java.lang.Integer">
+        SELECT COUNT(DISTINCT mgpcd.id_) FROM music_group_payment_calender mgpc
+        LEFT JOIN music_group_payment_calender_detail mgpcd ON mgpc.id_ = mgpcd.music_group_payment_calender_id_
+        WHERE mgpc.music_group_id_ = #{musicGroupId} AND mgpcd.payment_status_ != 'PAID_COMPLETED'
+        AND (DATE_FORMAT(mgpcd.start_payment_date_,'%Y-%m-%d') between #{startTime} AND #{endTime}
+        OR DATE_FORMAT(mgpcd.deadline_payment_date_,'%Y-%m-%d') between #{startTime} AND #{endTime})
+    </select>
 </mapper>

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

@@ -893,11 +893,12 @@
     <select id="queryCanAddStudent" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
         SELECT su.id_ user_id_,su.username_,su.phone_ FROM music_group_student_fee_ mgsf
         LEFT JOIN sys_user su ON su.id_ = mgsf.user_id_
+        LEFT JOIN student_registration sr ON sr.music_group_id_ = mgsf.music_group_id_
         WHERE mgsf.user_id_ NOT IN (
         SELECT DISTINCT mgpcd.user_id_ FROM music_group_payment_calender_detail mgpcd
         LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpcd.music_group_payment_calender_id_
         WHERE mgpc.id_ = #{musicGroupPaymentCalenderId}
-        ) AND mgsf.music_group_id_ = #{musicGroupId}
+        ) AND mgsf.music_group_id_ = #{musicGroupId} AND sr.user_id_ = mgsf.user_id_ AND sr.music_group_status_ != 'APPLY'
     </select>
     <select id="queryHasCourseMap" resultType="java.util.Map">
         SELECT su.id_ 'key',COUNT(DISTINCT su.id_) 'value' FROM sys_user su

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

@@ -625,8 +625,11 @@
     <select id="countGroupOrderWithoutFailed" resultType="int">
         SELECT COUNT(*)
         FROM student_payment_order spo
+        LEFT JOIN class_group_student_mapper cgsm ON spo.music_group_id_=cgsm.music_group_id_ AND spo.user_id_=cgsm.user_id_
         WHERE spo.music_group_id_ = #{groupId}
         AND spo.status_ != 'FAILED'
+        AND cgsm.status_!= 'QUIT'
         AND spo.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler }
+        AND cgsm.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler }
     </select>
 </mapper>

+ 1 - 0
mec-student/src/main/java/com/ym/mec/student/controller/DegreeController.java

@@ -112,6 +112,7 @@ public class DegreeController extends BaseController {
         queryInfo.setOrganId("42");
         queryInfo.setChargeType(SporadicChargeTypeEnum.LEVEL);
         queryInfo.setRows(99);
+        queryInfo.setOpenFlag(0);
         queryInfo.setSort("amount_");
         queryInfo.setOrder("ASC");
         return succeed(sporadicChargeInfoService.queryDetailPage(queryInfo));

+ 34 - 0
mec-web/src/main/java/com/ym/mec/web/controller/DegreeController.java

@@ -0,0 +1,34 @@
+package com.ym.mec.web.controller;
+
+
+import com.ym.mec.biz.dal.page.DegreeQueryInfo;
+import com.ym.mec.biz.service.DegreeRegistrationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("degree")
+@Api(tags = "考级报名服务")
+@RestController
+public class DegreeController extends BaseController { ;
+
+    @Autowired
+    private DegreeRegistrationService degreeRegistrationService;
+
+
+    @ApiOperation(value = "查询收费列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('degree/queryPage')")
+    public HttpResponseResult queryPage(DegreeQueryInfo queryInfo) {
+        queryInfo.setSort("create_time_");
+        queryInfo.setOrder("DESC");
+        return succeed(degreeRegistrationService.getPageList(queryInfo));
+    }
+
+}

+ 54 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -84,6 +84,8 @@ public class ExportController extends BaseController {
     private TeacherAttendanceService teacherAttendanceService;
     @Autowired
     private TeacherCourseRewardService teacherCourseRewardService;
+    @Autowired
+    private DegreeRegistrationService degreeRegistrationService;
 
     @ApiOperation(value = "导出教师考勤列表")
     @PostMapping("export/queryTeacherAttendances")
@@ -1565,4 +1567,56 @@ public class ExportController extends BaseController {
         }
     }
 
+
+    @ApiOperation(value = "考级报名导出")
+    @RequestMapping("export/degreeRegistration")
+    @PreAuthorize("@pcs.hasPermissions('export/degreeRegistration')")
+    public void degreeRegistration(DegreeQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+        queryInfo.setSort("create_time_");
+        queryInfo.setOrder("ASC");
+        queryInfo.setRows(65000);
+        PageInfoDegree<DegreeRegistration> pageList = degreeRegistrationService.getPageList(queryInfo);
+        if (pageList.getTotal() <= 0) {
+            response.setStatus(500);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            return;
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            for (DegreeRegistration row : pageList.getRows()) {
+                if(row.getGender().equals("1")){
+                    row.setGender("男");
+                } else {
+                    row.setGender("女");
+                }
+                if(row.getStatus().equals(2)){
+                    row.setStatusStr("缴费");
+                } else {
+                    row.setStatusStr("报名");
+                }
+            }
+
+            String[] header = {"姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别", "乐理级别", "乐理级别证书", "家长联系电话", "考级费用", "乐理费用", "备注","报名状态","报名时间"};
+            String[] body = {"name", "gender", "idcard", "city", "school", "subject", "level", "theoryLevel", "theoryCert", "mobile", "money", "theoryMoney", "memo","statusStr","createTime"};
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }

+ 1 - 32
mec-web/src/main/java/com/ym/mec/web/controller/education/EduDegreeController.java

@@ -1,59 +1,28 @@
 package com.ym.mec.web.controller.education;
 
-
-import com.ym.mec.biz.dal.dao.DegreeRegistrationDao;
-import com.ym.mec.biz.dal.dao.SporadicChargeInfoDao;
-import com.ym.mec.biz.dal.entity.DegreeRegistration;
-import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.biz.dal.page.DegreeQueryInfo;
-import com.ym.mec.biz.dal.page.SporadicChargeInfoQueryInfo;
 import com.ym.mec.biz.service.DegreeRegistrationService;
-import com.ym.mec.biz.service.SporadicChargeInfoService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.exception.BizException;
-import com.ym.mec.util.idcard.IdcardValidator;
-import com.ym.mec.util.validator.CommonValidator;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Map;
-
 @RequestMapping("eduDegree")
-@Api(tags = "级报名服务")
+@Api(tags = "教务端考级报名服务")
 @RestController
 public class EduDegreeController extends BaseController {
 
     @Autowired
-    private StudentPaymentOrderService studentPaymentOrderService;
-
-    @Autowired
-    private DegreeRegistrationDao degreeRegistrationDao;
-
-    @Autowired
     private DegreeRegistrationService degreeRegistrationService;
 
-    @Autowired
-    private SporadicChargeInfoDao sporadicChargeInfoDao;
-
-    @Autowired
-    private SporadicChargeInfoService sporadicChargeInfoService;
-
 
     @ApiOperation(value = "查询收费列表")
     @GetMapping("/queryPage")
     public HttpResponseResult queryPage(DegreeQueryInfo queryInfo) {
-        queryInfo.setStatus(2);
         queryInfo.setSort("create_time_");
         queryInfo.setOrder("DESC");
         return succeed(degreeRegistrationService.getPageList(queryInfo));