Browse Source

Merge branch 'apply_multi_order'

yonge 4 years ago
parent
commit
aef28bc702
18 changed files with 544 additions and 333 deletions
  1. 30 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  2. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupSubjectGoodsAndInfoDto.java
  3. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrder.java
  4. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java
  5. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/DealStatusEnum.java
  6. 0 10
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSubjectPlanService.java
  7. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java
  8. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  9. 18 23
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  10. 100 35
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  11. 34 57
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  12. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  13. 145 172
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  14. 2 2
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml
  15. 93 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  16. 0 1
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  17. 50 21
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  18. 13 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

+ 30 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -1,21 +1,28 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.dto.*;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.OrderByTypeExportDto;
+import com.ym.mec.biz.dal.dto.OrderStatisDto;
+import com.ym.mec.biz.dal.dto.SporadicChargeInfoDto;
+import com.ym.mec.biz.dal.dto.StudentPaymentOrderDto;
+import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
+import com.ym.mec.biz.dal.dto.StudentVipDouble11Dto;
+import com.ym.mec.biz.dal.dto.UserGoodsDto;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
-import org.apache.ibatis.annotations.Param;
-
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
 
 public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrder> {
 
@@ -88,6 +95,14 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      * @return
      */
     StudentPaymentOrder findOrderByOrderNo(@Param("orderNo") String orderNo);
+    
+    /**
+     * 根据批次号查询
+     * @param batchNo 批次号
+     * @param status 状态
+     * @return
+     */
+    List<StudentPaymentOrder> queryByBatchNo(@Param("batchNo") String batchNo, @Param("status") DealStatusEnum status);
 
     /**
      * 查询指定交易状态的乐团报名的订单信息
@@ -405,4 +420,11 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      * @return
      */
     StudentPaymentOrder getUserReplacementIngOrder(@Param("userId") Integer userId, @Param("replacementId") Integer replacementId);
+    
+    /**
+     * 批量更新
+     * @param studentPaymentOrderList
+     * @return
+     */
+    int batchUpdate(@Param("studentPaymentOrderList") List<StudentPaymentOrder> studentPaymentOrderList);
 }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupSubjectGoodsAndInfoDto.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dto;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -12,6 +13,7 @@ import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 
 /**
  * 乐团报名缴费相关信息
@@ -47,6 +49,8 @@ public class MusicGroupSubjectGoodsAndInfoDto {
     
     @ApiModelProperty(value = "会员权益",required = false)
     private List<MemberPrivilegesItem> memberPrivilegesItemList;
+    
+    private List<StudentPaymentOrderDetail> studentPaymentOrderDetailList;
 
     public Map getCourseScheduleInfo() {
         return CourseScheduleInfo;
@@ -127,4 +131,12 @@ public class MusicGroupSubjectGoodsAndInfoDto {
 	public void setMemberPrivilegesItemList(List<MemberPrivilegesItem> memberPrivilegesItemList) {
 		this.memberPrivilegesItemList = memberPrivilegesItemList;
 	}
+
+	public List<StudentPaymentOrderDetail> getStudentPaymentOrderDetailList() {
+		return studentPaymentOrderDetailList;
+	}
+
+	public void setStudentPaymentOrderDetailList(List<StudentPaymentOrderDetail> studentPaymentOrderDetailList) {
+		this.studentPaymentOrderDetailList = studentPaymentOrderDetailList;
+	}
 }

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

@@ -119,6 +119,8 @@ public class StudentPaymentOrder {
 
 	//课程优惠金额
 	private BigDecimal courseRemitFee;
+	
+	private String batchNo;
 
 	public String getReceiveStatus() {
 		return receiveStatus;
@@ -364,4 +366,12 @@ public class StudentPaymentOrder {
 	public void setCourseRemitFee(BigDecimal courseRemitFee) {
 		this.courseRemitFee = courseRemitFee;
 	}
+
+	public String getBatchNo() {
+		return batchNo;
+	}
+
+	public void setBatchNo(String batchNo) {
+		this.batchNo = batchNo;
+	}
 }

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

@@ -138,6 +138,8 @@ public class StudentRegistration {
 
     @ApiModelProperty(value = "会员截止时间",required = true)
     private Date membershipEndTime;
+    
+    private Long musicGroupPaymentCalenderId;
 
     public Date getMembershipEndTime() {
         return membershipEndTime;
@@ -489,4 +491,12 @@ public class StudentRegistration {
     public void setNoneNeedCloudTeacher(Integer noneNeedCloudTeacher) {
         this.noneNeedCloudTeacher = noneNeedCloudTeacher;
     }
+
+	public Long getMusicGroupPaymentCalenderId() {
+		return musicGroupPaymentCalenderId;
+	}
+
+	public void setMusicGroupPaymentCalenderId(Long musicGroupPaymentCalenderId) {
+		this.musicGroupPaymentCalenderId = musicGroupPaymentCalenderId;
+	}
 }

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

@@ -6,7 +6,6 @@ import com.ym.mec.common.enums.BaseEnum;
  * '交易状态(1,交易中;2,成功交易;3,交易失败,4交易关闭;)',
  */
 public enum DealStatusEnum implements BaseEnum<String, DealStatusEnum> {
-	WAIT_PAY("WAIT_PAY", "等待支付"),
 	ING("ING", "交易中"),
 	SUCCESS("SUCCESS", "成功交易"),
 	FAILED("FAILED", "交易失败"),

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

@@ -66,16 +66,6 @@ public interface MusicGroupSubjectPlanService extends BaseService<Integer, Music
     MusicGroupSubjectPlan findSubjectPlan(String musicGroupId, Integer subjectId);
 
     /**
-     * 中途添加的学生的缴费信息
-     *
-     * @param musicGroupId
-     * @param subjectId
-     * @return
-     */
-    MusicGroupSubjectGoodsAndInfoDto getStudentGoodsAndInfo(String musicGroupId, Integer subjectId, StudentRegistration studentRegistration);
-
-
-    /**
      * 获取声部的乐器、辅件(包含折扣)
      * @param subjectId
      * @param type

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

@@ -61,6 +61,14 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
      * @return
      */
     StudentPaymentOrder findOrderByOrderNo(String orderNo);
+    
+    /**
+     * 根据批次号查询
+     * @param batchNo 批次号
+     * @param status 状态
+     * @return
+     */
+    List<StudentPaymentOrder> queryByBatchNo(String batchNo, DealStatusEnum status);
 
     /**
      * 查找支付成功和支付中订单
@@ -173,7 +181,8 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
      */
     StudentPaymentOrder getUserReplacementIngOrder(Integer userId, Integer replacementId);
 
-
     void callOrderCallBack(StudentPaymentOrder order) throws Exception;
+    
+    int batchUpdate(List<StudentPaymentOrder> studentPaymentOrderList);
 
 }

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

@@ -445,5 +445,10 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      */
     StudentRegistration getStudentRegister(String musicGroupId, Integer studentId);
 
-
+    /**
+     * 云教练收费:审核中的记录审核失败
+     * @param studentRegistration
+     * @return
+     */
+    Boolean setCloudTeacherToFailed(StudentRegistration studentRegistration);
 }

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

@@ -6,15 +6,13 @@ import java.math.BigDecimal;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Objects;
 
-import com.ym.mec.auth.api.enums.CertificateTypeEnum;
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.util.http.HttpUtil;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -32,6 +30,13 @@ import org.springframework.util.CollectionUtils;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.api.enums.CertificateTypeEnum;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dao.SysUserContractsDao;
 import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.entity.CooperationOrgan.OwnershipType;
 import com.ym.mec.biz.dal.entity.Goods;
@@ -48,6 +53,7 @@ import com.ym.mec.biz.dal.entity.SysUserContracts;
 import com.ym.mec.biz.dal.entity.SysUserContracts.ContractType;
 import com.ym.mec.biz.dal.entity.SysUserTsign;
 import com.ym.mec.biz.dal.entity.VipGroup;
+import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
@@ -62,6 +68,8 @@ import com.ym.mec.biz.service.SubjectService;
 import com.ym.mec.biz.service.SysUserContractsService;
 import com.ym.mec.biz.service.SysUserTsignService;
 import com.ym.mec.biz.service.VipGroupService;
+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.thirdparty.eseal.ESealPlugin;
 import com.ym.mec.thirdparty.storage.StoragePluginContext;
@@ -811,22 +819,9 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		double depositFee = 0d;
 		if (kitGroupPurchaseTypeEnum == KitGroupPurchaseTypeEnum.LEASE) {
-			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService
-					.findMusicGroupApplyOrderByStatus(userId, musicGroupId, DealStatusEnum.WAIT_PAY);
-
-			if (studentPaymentOrder == null) {
-				MusicGroupSubjectGoodsGroup musicGroupSubjectPlan = musicGroupSubjectGoodsGroupService.query(musicGroupId, subjectId, goodsIds);
-				if (musicGroupSubjectPlan != null) {
-					depositFee = musicGroupSubjectPlan.getDepositFee().doubleValue();
-				}
-			} else {
-
-				List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.findApplyOrderGoods(studentPaymentOrder.getId());
-				for (StudentPaymentOrderDetail detail : orderDetailList) {
-					if (detail.getType() == OrderDetailTypeEnum.MUSICAL) {
-						depositFee = detail.getPrice().doubleValue();
-					}
-				}
+			MusicGroupSubjectGoodsGroup musicGroupSubjectPlan = musicGroupSubjectGoodsGroupService.query(musicGroupId, subjectId, goodsIds);
+			if (musicGroupSubjectPlan != null) {
+				depositFee = musicGroupSubjectPlan.getDepositFee().doubleValue();
 			}
 		}
 		params.put("depositFee", depositFee);

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

@@ -653,6 +653,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (studentRegistration == null) {
             throw new BizException("报名信息有误,请核查");
         }
+        
+        MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.getMusicGroupRegCalender(studentRegistration.getMusicGroupId());
+        if(musicGroupRegCalender == null){
+        	throw new BizException("缴费信息不存在");
+        }
 
         Integer userId = studentRegistration.getUserId();
 
@@ -715,6 +720,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
 
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
+        
+        studentRegistration.setMusicGroupPaymentCalenderId(musicGroupRegCalender.getId());
         studentRegistration.setOrganId(musicGroup.getOrganId());
         studentRegistration.setPayingStatus(1);
 
@@ -723,10 +730,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         CloudTeacherOrder cloudTeacherOrder = null;
         //云教练/云教练+
         if (registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus()) {
-            MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.getMusicGroupRegCalender(studentRegistration.getMusicGroupId());
-            if(musicGroupRegCalender == null){
-            	throw new BizException("缴费信息不存在");
-            }
             BigDecimal cloudTeacherPrice = BigDecimal.ZERO;
 			if (musicGroupRegCalender.getMemberRankSettingId() != null) {
 				cloudTeacherPrice = musicGroupRegCalender.getMemberPaymentAmount();
@@ -791,6 +794,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 sysUserCashAccountService.updateBalance(userId, balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐团报名");
             }
         }
+        studentPaymentOrder.setBatchNo(musicGroupRegCalender.getId() + "");
         studentPaymentOrder.setPaymentChannel("BALANCE");
         studentPaymentOrder.setRemitFee(remitFee);
         studentPaymentOrder.setCourseRemitFee(courseRemitFee);
@@ -878,6 +882,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (ApplyOrder == null) {
             throw new BizException("没有支付中订单,请在我的订单中查看订单状态");
         }
+
+    	MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.getMusicGroupRegCalender(studentRegistration.getMusicGroupId());
+        if(musicGroupRegCalender == null){
+        	throw new BizException("缴费信息不存在");
+        }
+        
         //手动关闭订单
         ApplyOrder.setStatus(DealStatusEnum.FAILED);
         ApplyOrder.setMemo("用户手动关闭");
@@ -942,6 +952,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
 
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
+        
+        studentRegistration.setMusicGroupPaymentCalenderId(musicGroupRegCalender.getId());
         studentRegistration.setOrganId(musicGroup.getOrganId());
         studentRegistration.setPayingStatus(1);
 
@@ -952,10 +964,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //云教练/云教练+
         if (registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus()) {
         	
-        	MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.getMusicGroupRegCalender(studentRegistration.getMusicGroupId());
-            if(musicGroupRegCalender == null){
-            	throw new BizException("缴费信息不存在");
-            }
             BigDecimal cloudTeacherPrice = BigDecimal.ZERO;
 			if (musicGroupRegCalender.getMemberRankSettingId() != null) {
 				cloudTeacherPrice = musicGroupRegCalender.getMemberPaymentAmount();
@@ -1021,6 +1029,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 sysUserCashAccountService.updateBalance(userId, balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐团报名");
             }
         }
+        studentPaymentOrder.setBatchNo(musicGroupRegCalender.getId() + "");
         studentPaymentOrder.setPaymentChannel("BALANCE");
         studentPaymentOrder.setRemitFee(remitFee);
         studentPaymentOrder.setCourseRemitFee(courseRemitFee);
@@ -1939,9 +1948,20 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             musicGroupPaymentStudentCourseDetailDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
 
             BigDecimal amount = new BigDecimal(0);
+            
+            List<StudentPaymentOrder> studentPaymentOrderList = new ArrayList<StudentPaymentOrder>();
+            
+			if (studentRegistration.getMusicGroupPaymentCalenderId() == null) {
+				StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, SUCCESS);
+				if (studentPaymentOrder != null) {
+					studentPaymentOrderList.add(studentPaymentOrder);
+				}
+			} else {
+				studentPaymentOrderList = studentPaymentOrderService.queryByBatchNo(studentRegistration.getMusicGroupPaymentCalenderId() + "",
+						DealStatusEnum.SUCCESS);
+			}
 
-            StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, SUCCESS);
-
+            
             boolean hasPaid = studentRegistration.getMusicGroupStatus().equals(StudentMusicGroupStatusEnum.NORMAL);
             // 缴费人数更新
             MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
@@ -1949,12 +1969,18 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 musicGroupSubjectPlan.setUpdateTime(date);
                 //减去缴费人数(器乐收费,0元时不减缴费人数)
                 if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE) {
-                    if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
-                        musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
-                        musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
-                    } else if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() == null) {
-                        musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
-                    }
+                    
+                	for(StudentPaymentOrder studentPaymentOrder : studentPaymentOrderList){
+                		if (studentPaymentOrder != null && "200".equals(studentPaymentOrder.getPaymentAccountNo())) {
+                            musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
+                            musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
+                            break;
+                        } else if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() == null) {
+                            musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
+                            break;
+                        }
+                	}
+                	
                 } else {
                     musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
                 }
@@ -2001,15 +2027,23 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 amount = amount.add(surplusCourseFee);
             }
 
-            if (studentPaymentOrder != null) {
-                List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.findApplyOrderGoods(studentPaymentOrder.getId());
+            if (studentPaymentOrderList.size() > 0) {
+            	
+            	BigDecimal remitFee = BigDecimal.ZERO;
+            			
+            	for(StudentPaymentOrder studentPaymentOrder : studentPaymentOrderList){
+            		remitFee = studentPaymentOrder.getRemitFee() == null ? BigDecimal.ZERO : studentPaymentOrder.getRemitFee();
+            	}
+            	
+            	List<Long> paymentOrderIdList = studentPaymentOrderList.stream().map(t -> t.getId()).collect(Collectors.toList());
+
+                List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.getWithIds(paymentOrderIdList);
 
                 SubjectChange studentLastChange = null;
                 if (isRefundInstrumentFee || isRefundTeachingAssistantsFee) {
                     studentLastChange = subjectChangeDao.getStudentLastChange(userId, musicGroupId);
                 }
-
-                BigDecimal remitFee = studentPaymentOrder.getRemitFee() == null ? BigDecimal.ZERO : studentPaymentOrder.getRemitFee();
+                
                 for (StudentPaymentOrderDetail detail : orderDetailList) {
                     if (remitFee.compareTo(detail.getPrice()) >= 0) {
                         remitFee = remitFee.subtract(detail.getPrice());
@@ -2036,6 +2070,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 if (studentLastChange != null) {
                     amount = amount.add(studentLastChange.getChangeMusicalPrice()).add(studentLastChange.getChangeAccessoriesPrice());
                 }
+            
             }
 
             //退乐保费用
@@ -2104,7 +2139,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (studentRegistration == null) {
             throw new BizException("用户注册信息不存在");
         }
-        boolean hasPaid = studentRegistration.getMusicGroupStatus().equals(StudentMusicGroupStatusEnum.NORMAL);
 
         Date date = new Date();
 
@@ -2193,8 +2227,20 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupPaymentStudentCourseDetailDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
 
         BigDecimal amount = new BigDecimal(0);
-
-        StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, SUCCESS);
+        
+        List<StudentPaymentOrder> studentPaymentOrderList = new ArrayList<StudentPaymentOrder>();
+        
+		if (studentRegistration.getMusicGroupPaymentCalenderId() == null) {
+			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, SUCCESS);
+			if (studentPaymentOrder != null) {
+				studentPaymentOrderList.add(studentPaymentOrder);
+			}
+		} else {
+			studentPaymentOrderList = studentPaymentOrderService.queryByBatchNo(studentRegistration.getMusicGroupPaymentCalenderId() + "",
+					DealStatusEnum.SUCCESS);
+		}
+		
+        boolean hasPaid = studentRegistration.getMusicGroupStatus().equals(StudentMusicGroupStatusEnum.NORMAL);
 
         // 判断乐器是否是租赁
         MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
@@ -2202,12 +2248,17 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             musicGroupSubjectPlan.setUpdateTime(date);
             //减去缴费人数(器乐收费,0元时不减缴费人数)
             if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE) {
-                if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
-                    musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
-                    musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
-                } else if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() == null) {
-                    musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
-                }
+            	
+            	for(StudentPaymentOrder studentPaymentOrder : studentPaymentOrderList){
+            		if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
+                        musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
+                        musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
+                        break;
+                    } else if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() == null) {
+                        musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
+                        break;
+                    }
+            	}
             } else {
                 musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
             }
@@ -2253,16 +2304,23 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             amount = amount.add(surplusCourseFee);
         }
 
-        if (studentPaymentOrder != null) {
-            List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.findApplyOrderGoods(studentPaymentOrder.getId());
+        if (studentPaymentOrderList.size() > 0) {
+        	
+        	BigDecimal remitFee = BigDecimal.ZERO;
+			
+        	for(StudentPaymentOrder studentPaymentOrder : studentPaymentOrderList){
+        		remitFee = studentPaymentOrder.getRemitFee() == null ? BigDecimal.ZERO : studentPaymentOrder.getRemitFee();
+        	}
+        	
+        	List<Long> paymentOrderIdList = studentPaymentOrderList.stream().map(t -> t.getId()).collect(Collectors.toList());
+
+            List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.getWithIds(paymentOrderIdList);
 
             SubjectChange studentLastChange = null;
             if (isRefundInstrumentFee || isRefundTeachingAssistantsFee) {
                 studentLastChange = subjectChangeDao.getStudentLastChange(userId, musicGroupId);
             }
 
-            BigDecimal remitFee = studentPaymentOrder.getRemitFee() == null ? BigDecimal.ZERO : studentPaymentOrder.getRemitFee();
-
             for (StudentPaymentOrderDetail detail : orderDetailList) {
                 if (remitFee.compareTo(detail.getPrice()) >= 0) {
                     remitFee = remitFee.subtract(detail.getPrice());
@@ -2351,11 +2409,17 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         studentPaymentOrder.setGroupType(GroupType.MUSIC);
         studentPaymentOrder.setUserId(userId);
         studentPaymentOrder.setOrderNo(orderNo);
-        studentPaymentOrder.setType(OrderTypeEnum.RENEW);
+        
+		if (calender.getPaymentType() == PaymentType.ADD_STUDENT) {
+			studentPaymentOrder.setType(OrderTypeEnum.APPLY);
+		} else {
+			studentPaymentOrder.setType(OrderTypeEnum.RENEW);
+		}
         studentPaymentOrder.setExpectAmount(amount);
         studentPaymentOrder.setActualAmount(amount);
         studentPaymentOrder.setStatus(DealStatusEnum.ING);
         studentPaymentOrder.setMusicGroupId(calender.getMusicGroupId());
+        studentPaymentOrder.setBatchNo(calender.getId() + "");
         studentPaymentOrder.setCreateTime(date);
         studentPaymentOrder.setUpdateTime(date);
         studentPaymentOrder.setVersion(0);
@@ -2494,6 +2558,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             if (paymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.ADD_STUDENT) {
                 studentRegistration.setPaymentStatus(YES);
                 studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
+                studentRegistration.setMusicGroupPaymentCalenderId(paymentCalender.getId());
                 studentRegistrationDao.update(studentRegistration);
                 
                 //统计变更学员数
@@ -3131,7 +3196,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //有已付费,在储备中的人,不容许到储备中
         int payAndCheckNum = studentRegistrationDao.countPayAndCheckNum(musicGroupId);
         if(payAndCheckNum > 0){
-            throw new BizException("有已付费,审核中的学生,请处理后再开团");
+            throw new BizException("有订单审核中的学生,请处理后再进行下一步");
         }
 
         //新建团:(乐团合作单位没有进行中 、暂停、关闭 的乐团)

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

@@ -1,23 +1,41 @@
 package com.ym.mec.biz.service.impl;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.MusicGroupGoodsAndDiscountDto;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.*;
+import javax.annotation.Resource;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 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.biz.dal.dao.ChargeTypeSubjectMapperDao;
+import com.ym.mec.biz.dal.dao.GoodsDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderCourseSettingsDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
+import com.ym.mec.biz.dal.dao.OrganizationCloudTeacherFeeDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
+import com.ym.mec.biz.dal.dto.MusicGroupGoodsAndDiscountDto;
 import com.ym.mec.biz.dal.dto.MusicGroupRegRespDto;
 import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
+import com.ym.mec.biz.dal.entity.ChargeTypeSubjectMapper;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.OrganizationCloudTeacherFee;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GoodsType;
 import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.biz.service.MemberRankPrivilegesService;
 import com.ym.mec.biz.service.MusicGroupService;
@@ -64,6 +82,9 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
 
 	@Autowired
 	private MemberRankPrivilegesService memberRankPrivilegesService;
+	
+    @Resource
+    private SysUserFeignService sysUserFeignService;
 
     @Override
     public BaseDAO<Integer, MusicGroupSubjectPlan> getDAO() {
@@ -156,6 +177,14 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
 				musicGroupSubjectGoodsAndInfo.setMemberPrivilegesItemList(memberRankPrivilegesService.queryByMemberRankId(1));
 			}
 		}
+		
+		// 查询已购买内容
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser != null){
+        	Integer userId = sysUser.getId();
+        	musicGroupSubjectGoodsAndInfo.setStudentPaymentOrderDetailList(studentPaymentOrderDetailDao.findUserApplyOrder(userId, musicGroupId, DealStatusEnum.SUCCESS));
+        }
+        
         return musicGroupSubjectGoodsAndInfo;
     }
 
@@ -205,58 +234,6 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
     }
 
     @Override
-    public MusicGroupSubjectGoodsAndInfoDto getStudentGoodsAndInfo(String musicGroupId, Integer subjectId, StudentRegistration studentRegistration) {
-        MusicGroup musicGroup = musicGroupService.get(musicGroupId);
-
-        //课程形态
-        Map<String, Object> courseForm = JSON.parseObject(musicGroup.getCourseForm(), Map.class);
-
-        //乐团计划及收费信息
-        MusicGroupSubjectPlan musicOneSubjectClassPlan = this.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
-        musicOneSubjectClassPlan.setFee(studentRegistration.getTemporaryCourseFee());
-        musicOneSubjectClassPlan.setDepositFee(studentRegistration.getTemporaryCourseFee());
-
-        //乐团乐器及辅件信息
-        List<MusicGroupSubjectGoodsGroup> goodsGroups = new ArrayList<>();
-
-        List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailDao.findUserApplyOrder(studentRegistration.getUserId(), musicGroupId, DealStatusEnum.WAIT_PAY);
-        for (StudentPaymentOrderDetail orderDetail : orderDetails) {
-            if (orderDetail == null || orderDetail.getGoodsIdList() == null || orderDetail.getGoodsIdList().isEmpty())
-                continue;
-            MusicGroupSubjectGoodsGroup musicGroupSubjectGoodsGroup = new MusicGroupSubjectGoodsGroup();
-            if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL)) {
-                musicGroupSubjectGoodsGroup.setName("乐器");
-                musicGroupSubjectGoodsGroup.setType(GoodsType.INSTRUMENT);
-            } else {
-                musicGroupSubjectGoodsGroup.setName("辅件");
-                musicGroupSubjectGoodsGroup.setType(GoodsType.ACCESSORIES);
-            }
-            if (orderDetail.getKitGroupPurchaseType() != null) {
-                if (orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
-                    musicGroupSubjectGoodsGroup.setDepositFee(orderDetail.getPrice());
-                }
-                String kitGroupPurchaseTypeJson = "{\"" + orderDetail.getKitGroupPurchaseType().getCode() + "\":0}";
-                musicGroupSubjectGoodsGroup.setKitGroupPurchaseTypeJson(kitGroupPurchaseTypeJson);
-            }
-
-            musicGroupSubjectGoodsGroup.setId(orderDetail.getId());
-            musicGroupSubjectGoodsGroup.setGoodsIdList(orderDetail.getGoodsIdList());
-            musicGroupSubjectGoodsGroup.setMusicGroupId(musicGroupId);
-            musicGroupSubjectGoodsGroup.setPrice(orderDetail.getPrice());
-            List<Goods> goodies = goodsService.findGoodsByIds(orderDetail.getGoodsIdList());
-            musicGroupSubjectGoodsGroup.setGoodsList(goodies);
-            goodsGroups.add(musicGroupSubjectGoodsGroup);
-        }
-
-        //获取声部(科目)下其他商品
-        MusicGroupSubjectGoodsAndInfoDto musicGroupSubjectGoodsAndInfo = new MusicGroupSubjectGoodsAndInfoDto();
-        musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectPlan(musicOneSubjectClassPlan);
-        musicGroupSubjectGoodsAndInfo.setCourseScheduleInfo(courseForm);
-        musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectGoodsGroupList(goodsGroups);
-        return musicGroupSubjectGoodsAndInfo;
-    }
-
-    @Override
     public MusicGroupSubjectPlan findSubjectPlan(String musicGroupId, Integer subjectId) {
         return musicGroupSubjectPlanDao.findSubjectPlan(musicGroupId, subjectId);
     }

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

@@ -14,6 +14,7 @@ import java.util.stream.Collectors;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.service.*;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -193,6 +194,11 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
+	public List<StudentPaymentOrder> queryByBatchNo(String batchNo, DealStatusEnum status) {
+		return studentPaymentOrderDao.queryByBatchNo(batchNo, status);
+	}
+
+	@Override
     public int findPayOrderNum() {
         return studentPaymentOrderDao.findPayOrderNum();
     }
@@ -634,4 +640,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     public StudentPaymentOrder getUserReplacementIngOrder(Integer userId, Integer replacementId) {
         return studentPaymentOrderDao.getUserReplacementIngOrder(userId, replacementId);
     }
+
+	@Override
+	public int batchUpdate(List<StudentPaymentOrder> studentPaymentOrderList) {
+		return studentPaymentOrderDao.batchUpdate(studentPaymentOrderList);
+	}
 }

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

@@ -715,159 +715,126 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         StudentRegistration phoneAndMusicGroupId = studentRegistrationDao.getByPhoneAndMusicGroupId(musicGroupId, studentRegistration.getParentsPhone());
         if (phoneAndMusicGroupId != null && phoneAndMusicGroupId.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT && phoneAndMusicGroupId.getMusicGroupStatus() != StudentMusicGroupStatusEnum.APPLY) {
             throw new BizException("该学员已存在");
+        }
+
+        SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        Integer userId;
+        if (sysUser == null) {
+            //新增user
+            sysUser = new SysUser();
+            sysUser.setPhone(studentRegistration.getParentsPhone());
+//            sysUser.setRealName(studentRegistration.getParentsName());
+            sysUser.setUsername(studentRegistration.getName());
+            sysUser.setGender(studentRegistration.getGender());
+            sysUser.setUserType("STUDENT");
+//            sysUser.setIdCardNo(studentRegistration.getIdCardNo());
+            sysUser.setOrganId(musicGroup.getOrganId());
+            sysUser.setBirthdate(studentRegistration.getBirthdate());
+            teacherDao.addSysUser(sysUser);
+            userId = sysUser.getId();
+            studentDao.insert(new Student(userId, studentRegistration.getSubjectId().toString()));
+            //添加用户现金账户
+            sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
+            ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), null));
+            sysUser.setImToken(register.getToken());
+            teacherDao.updateUser(sysUser);
         } else {
-            SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
-            MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-            Integer userId;
-            if (sysUser == null) {
-                //新增user
-                sysUser = new SysUser();
-                sysUser.setPhone(studentRegistration.getParentsPhone());
-//                sysUser.setRealName(studentRegistration.getParentsName());
-                sysUser.setUsername(studentRegistration.getName());
-                sysUser.setGender(studentRegistration.getGender());
-                sysUser.setUserType("STUDENT");
-//                sysUser.setIdCardNo(studentRegistration.getIdCardNo());
-                sysUser.setOrganId(musicGroup.getOrganId());
-                sysUser.setBirthdate(studentRegistration.getBirthdate());
-                teacherDao.addSysUser(sysUser);
-                userId = sysUser.getId();
-                studentDao.insert(new Student(userId, studentRegistration.getSubjectId().toString()));
-                //添加用户现金账户
-                sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
-                ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), null));
-                sysUser.setImToken(register.getToken());
-                teacherDao.updateUser(sysUser);
-            } else {
-                if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
-                    //该学员是否在其他的会员团
-                    boolean hasMemberGroup = studentRegistrationDao.checkHasMemberGroup(musicGroupId,sysUser.getId());
-                    if(hasMemberGroup){
-                        throw new BizException("操作失败:该学员已在其他系统收费乐团中,不可报名该乐团请联系教务老师");
-                    }
-                }
-                StudentRegistration oldReg = studentRegistrationDao.getByUserIdAndMusicGroupId(musicGroupId, sysUser.getId());
-                if (oldReg != null && oldReg.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT && oldReg.getMusicGroupStatus() != StudentMusicGroupStatusEnum.APPLY) {
-                    throw new BizException("该学员已存在,原手机号为" + oldReg.getParentsPhone());
-                }
-                if (oldReg != null) {
-                    phoneAndMusicGroupId = oldReg;
+            if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
+                //该学员是否在其他的会员团
+                boolean hasMemberGroup = studentRegistrationDao.checkHasMemberGroup(musicGroupId,sysUser.getId());
+                if(hasMemberGroup){
+                    throw new BizException("操作失败:该学员已在其他系统收费乐团中,不可报名该乐团请联系教务老师");
                 }
-                if (StringUtils.isNotEmpty(sysUser.getUsername())) {
-                    if (!sysUser.getUsername().equals(studentRegistration.getName())) {
-                        throw new BizException("操作失败:账户已被注册");
-                    }
-                }
-                if (!sysUser.getUserType().contains("STUDENT")) {
-                    sysUser.setUserType(sysUser.getUserType() + ",STUDENT");
+            }
+            StudentRegistration oldReg = studentRegistrationDao.getByUserIdAndMusicGroupId(musicGroupId, sysUser.getId());
+            if (oldReg != null && oldReg.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT && oldReg.getMusicGroupStatus() != StudentMusicGroupStatusEnum.APPLY) {
+                throw new BizException("该学员已存在,原手机号为" + oldReg.getParentsPhone());
+            }
+            if (StringUtils.isNotEmpty(sysUser.getUsername())) {
+                if (!sysUser.getUsername().equals(studentRegistration.getName())) {
+                    throw new BizException("操作失败:账户已被注册");
                 }
-                sysUser.setPhone(studentRegistration.getParentsPhone());
-//                sysUser.setRealName(studentRegistration.getParentsName());
-                sysUser.setUsername(studentRegistration.getName());
-                sysUser.setGender(studentRegistration.getGender());
-                sysUser.setOrganId(musicGroup.getOrganId());
-                sysUser.setBirthdate(studentRegistration.getBirthdate());
-                teacherDao.updateUser(sysUser);
-                userId = sysUser.getId();
-                Student student = studentDao.get(userId);
-                if (student == null) {
-                    studentDao.insert(new Student(userId, studentRegistration.getSubjectId().toString()));
-                } else if (StringUtils.isEmpty(student.getSubjectIdList())) {
-                    student.setSubjectIdList(studentRegistration.getSubjectId().toString());
+            }
+            if (!sysUser.getUserType().contains("STUDENT")) {
+                sysUser.setUserType(sysUser.getUserType() + ",STUDENT");
+            }
+            sysUser.setPhone(studentRegistration.getParentsPhone());
+//            sysUser.setRealName(studentRegistration.getParentsName());
+            sysUser.setUsername(studentRegistration.getName());
+            sysUser.setGender(studentRegistration.getGender());
+            sysUser.setOrganId(musicGroup.getOrganId());
+            sysUser.setBirthdate(studentRegistration.getBirthdate());
+            teacherDao.updateUser(sysUser);
+            userId = sysUser.getId();
+            Student student = studentDao.get(userId);
+            if (student == null) {
+                studentDao.insert(new Student(userId, studentRegistration.getSubjectId().toString()));
+            } else if (StringUtils.isEmpty(student.getSubjectIdList())) {
+                student.setSubjectIdList(studentRegistration.getSubjectId().toString());
+                student.setUpdateTime(date);
+                studentDao.update(student);
+            } else if (StringUtils.isNotEmpty(student.getSubjectIdList())) {
+                String[] split = student.getSubjectIdList().split(",");
+                List<String> list = new ArrayList<>(Arrays.asList(split));
+                if (!list.contains(studentRegistration.getSubjectId().toString())) {
+                    list.add(studentRegistration.getSubjectId().toString());
+                    student.setSubjectIdList(StringUtils.join(list, ","));
                     student.setUpdateTime(date);
                     studentDao.update(student);
-                } else if (StringUtils.isNotEmpty(student.getSubjectIdList())) {
-                    String[] split = student.getSubjectIdList().split(",");
-                    List<String> list = new ArrayList<>(Arrays.asList(split));
-                    if (!list.contains(studentRegistration.getSubjectId().toString())) {
-                        list.add(studentRegistration.getSubjectId().toString());
-                        student.setSubjectIdList(StringUtils.join(list, ","));
-                        student.setUpdateTime(date);
-                        studentDao.update(student);
-                    }
                 }
-                imGroupDao.updateNickname(userId, sysUser.getUsername());
-                imGroupDao.updateUserFriendNickname(userId, sysUser.getUsername());
-            }
-            MusicGroupStudentFee studentFeeDaoByUser = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
-            if (studentFeeDaoByUser != null) {
-                throw new BizException("该学员已存在");
             }
-            Organization organization = organizationDao.get(musicGroup.getOrganId());
-            String studentGrade = studentService.getStudentGrade(organization.getGradeType(), studentRegistration.getCurrentGradeNum());
-            studentRegistration.setCurrentGrade(studentGrade);
-            studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
-            studentRegistration.setUserId(userId);
-            studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
-            studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
-            studentRegistration.setTemporaryCourseFee(studentAddDto.getTemporaryCourseFee());
-            //学生报名表
-            Set<Integer> roleIds = new HashSet<>(1);
-            roleIds.add(SysUserRole.SECTION_MANAGER);
-            Set<Integer> integers = musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId());
-            integers.add(musicGroup.getEducationalTeacherId());
-            sysMessageService.batchSeoMessage(integers, MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_ADD_STUDENT, "", musicGroup.getName(), studentRegistration.getName());
-            //增加报名学生数
-            musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId, studentRegistration.getSubjectId(), 1);
-            //汇总金额
-
-            MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee(musicGroupId,
-                    userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
-                    null, studentAddDto.getTemporaryCourseFee(), null);
-
-            /*if (musicGroup.getFeeType() != null && musicGroup.getFeeType() != MusicGroupPaymentCalender.FeeType.OFFLINE && musicGroupStudentFee.getTemporaryCourseFee().doubleValue() * 100 == 0) {
-                musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
-            }*/
-            musicGroupStudentFeeDao.insert(musicGroupStudentFee);
-
-            StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
+            imGroupDao.updateNickname(userId, sysUser.getUsername());
+            imGroupDao.updateUserFriendNickname(userId, sysUser.getUsername());
+        }
+        MusicGroupStudentFee studentFeeDaoByUser = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
+        if (studentFeeDaoByUser != null) {
+            throw new BizException("该学员已存在");
+        }
+        Organization organization = organizationDao.get(musicGroup.getOrganId());
+        String studentGrade = studentService.getStudentGrade(organization.getGradeType(), studentRegistration.getCurrentGradeNum());
+        studentRegistration.setCurrentGrade(studentGrade);
+        studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
+        studentRegistration.setUserId(userId);
+        studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
+        studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
+        studentRegistration.setTemporaryCourseFee(studentAddDto.getTemporaryCourseFee());
+        
+        //增加报名学生数
+        musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId, studentRegistration.getSubjectId(), 1);
+        //汇总金额
 
-            if (waitPayOrder != null) {
-                waitPayOrder.setStatus(DealStatusEnum.CLOSE);
-                studentPaymentOrderService.update(waitPayOrder);
-            }
-            //生成订单
-            StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
-            studentPaymentOrder.setUserId(userId);
-            studentPaymentOrder.setGroupType(GroupType.MUSIC);
-            studentPaymentOrder.setType(OrderTypeEnum.APPLY);
-            studentPaymentOrder.setStatus(DealStatusEnum.WAIT_PAY);
-            studentPaymentOrder.setMusicGroupId(musicGroupId);
-            studentPaymentOrder.setClassGroupId(studentAddDto.getSignClassId());
-            studentPaymentOrder.setOrganId(musicGroup.getOrganId());
-            studentPaymentOrder.setRoutingOrganId(musicGroup.getOrganId());
-
-            //生成订单明细
-            List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentAddDto.getStudentPaymentOrderDetails();
-            if (studentPaymentOrderDetails == null) {
-                studentPaymentOrderDetails = new ArrayList<>();
-            }
-            //汇总金额
+        MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee(musicGroupId,
+                userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
+                null, studentAddDto.getTemporaryCourseFee(), null);
 
-            BigDecimal reduce = studentPaymentOrderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-            if (reduce.compareTo(BigDecimal.ZERO) == 0) {
-                studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
-                studentPaymentOrder.setActualAmount(reduce);
-                studentPaymentOrder.setPayTime(date);
-            }
-            studentPaymentOrder.setExpectAmount(reduce);
-            studentPaymentOrderService.insert(studentPaymentOrder);
+        /*if (musicGroup.getFeeType() != null && musicGroup.getFeeType() != MusicGroupPaymentCalender.FeeType.OFFLINE && musicGroupStudentFee.getTemporaryCourseFee().doubleValue() * 100 == 0) {
+            musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
+        }*/
+        musicGroupStudentFeeDao.insert(musicGroupStudentFee);
 
-            //当前学员是否以前存在过当前乐团
-            if (phoneAndMusicGroupId != null) {
-                studentRegistration.setId(phoneAndMusicGroupId.getId());
-                studentRegistrationDao.update(studentRegistration);
-            } else {
-                studentRegistrationDao.insertBasic(studentRegistration);
-            }
-            Student student = studentDao.get(userId);
-            student.setCurrentGradeNum(studentRegistration.getCurrentGradeNum());
-            student.setCurrentClass(studentRegistration.getCurrentClass());
-            studentDao.update(student);
-            //studentRegistrationDao.updateCurrentClass(studentRegistration);
-            imFeignService.update(new ImUserModel(userId.toString(), sysUser.getUsername(), sysUser.getAvatar()));
-            return userId;
+        //当前学员是否以前存在过当前乐团
+        if (phoneAndMusicGroupId != null) {
+            studentRegistration.setId(phoneAndMusicGroupId.getId());
+            studentRegistrationDao.update(studentRegistration);
+        } else {
+            studentRegistrationDao.insertBasic(studentRegistration);
         }
+        Student student = studentDao.get(userId);
+        student.setCurrentGradeNum(studentRegistration.getCurrentGradeNum());
+        student.setCurrentClass(studentRegistration.getCurrentClass());
+        studentDao.update(student);
+        //studentRegistrationDao.updateCurrentClass(studentRegistration);
+        imFeignService.update(new ImUserModel(userId.toString(), sysUser.getUsername(), sysUser.getAvatar()));
+        
+        //学生报名表
+        Set<Integer> roleIds = new HashSet<>(1);
+        roleIds.add(SysUserRole.SECTION_MANAGER);
+        Set<Integer> integers = musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId());
+        integers.add(musicGroup.getEducationalTeacherId());
+        sysMessageService.batchSeoMessage(integers, MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_ADD_STUDENT, "", musicGroup.getName(), studentRegistration.getName());
+        
+        return userId;
     }
 
     @Override
@@ -914,13 +881,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 //修改原有乐团注册信息
                 studentRegistrationDao.update(studentRegistration);
             }
-            Boolean orderFlag = true;
             //用户是否在主乐团
             StudentRegistration registration = studentRegistrationDao.getStudentRegister(newMusicGroupId, studentRegistration.getUserId());
             if (registration != null) {
-                if (registration.getMusicGroupStatus() == StudentMusicGroupStatusEnum.NORMAL) {
-                    orderFlag = false;
-                }
                 //修改剩余课程余额
                 Date date = new Date();
                 registration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
@@ -947,28 +910,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                     musicGroupStudentFeeDao.insert(musicGroupStudentFee);
                 }
             }
-            StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(registration.getUserId(), studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
-
-            if (waitPayOrder != null) {
-                waitPayOrder.setStatus(DealStatusEnum.CLOSE);
-                studentPaymentOrderService.update(waitPayOrder);
-            }
-            if (orderFlag) {
-                //生成订单
-                StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
-                studentPaymentOrder.setUserId(registration.getUserId());
-                studentPaymentOrder.setGroupType(GroupType.MUSIC);
-                studentPaymentOrder.setType(OrderTypeEnum.APPLY);
-                studentPaymentOrder.setMusicGroupId(registration.getMusicGroupId());
-                studentPaymentOrder.setClassGroupId(registration.getClassGroupId());
-                studentPaymentOrder.setOrganId(registration.getOrganId());
-                studentPaymentOrder.setRoutingOrganId(registration.getOrganId());
-                studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
-                studentPaymentOrder.setActualAmount(BigDecimal.ZERO);
-                studentPaymentOrder.setPayTime(new Date());
-                studentPaymentOrder.setExpectAmount(BigDecimal.ZERO);
-                studentPaymentOrderService.insert(studentPaymentOrder);
-            }
             //主班新增余额日志
             if (amount.doubleValue() != 0d && masterTotalPrice.doubleValue() > 0d) {
                 StudentCourseFeeDetail studentCourseFeeDetail = new StudentCourseFeeDetail();
@@ -1121,6 +1062,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 				if (studentRegistration.getNoneNeedCloudTeacher() == 1 || orderTypeList.contains(OrderDetailTypeEnum.CLOUD_TEACHER)
 						|| orderTypeList.contains(OrderDetailTypeEnum.CLOUD_TEACHER_PLUS)) {
 					studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
+					studentRegistration.setNoneNeedCloudTeacher(1);
 				}
 			} else {
 				studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
@@ -1142,10 +1084,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(studentRegistration.getUserId(), studentRegistration.getMusicGroupId());
             //进行中乐团加入学生缴费
             if (studentRegistration.getTemporaryCourseFee() != null) {
-                //关闭待支付订单
-                StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(studentRegistration.getUserId(), studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
-                waitPayOrder.setStatus(DealStatusEnum.CLOSE);
-                studentPaymentOrderService.update(waitPayOrder);
                 musicGroupStudentFee.setLatestPaidTime(nowDate);
                 musicGroupStudentFee.setPaymentStatus(PAID_COMPLETED);
                 musicGroupStudentFee.setTemporaryCourseFee(BigDecimal.ZERO);
@@ -1976,4 +1914,39 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public StudentRegistration getStudentRegister(String musicGroupId, Integer studentId) {
         return studentRegistrationDao.getStudentRegister(musicGroupId,studentId);
     }
+
+	@Override
+    @Transactional(rollbackFor = Exception.class)
+	public Boolean setCloudTeacherToFailed(StudentRegistration studentRegistration) {
+        
+        if(studentRegistration.getPayingStatus() != 2){
+        	throw new BizException("只有'审核中'的记录才能取消审核");
+        }
+		
+		Date date = new Date();
+		
+		studentRegistration.setPayingStatus(0);
+		studentRegistration.setUpdateTime(date);
+		update(studentRegistration);
+		
+		List<StudentPaymentOrder> studentPaymentOrderList = studentPaymentOrderService.queryByCondition(GroupType.MUSIC, studentRegistration.getMusicGroupId(), studentRegistration.getUserId(), DealStatusEnum.ING, OrderTypeEnum.APPLY);
+		
+		List<StudentPaymentOrder> updateList = new ArrayList<StudentPaymentOrder>();
+		
+		if(studentPaymentOrderList != null && studentPaymentOrderList.size() > 0){
+			for(StudentPaymentOrder studentPaymentOrder : studentPaymentOrderList){
+				if(StringUtils.equals("205", studentPaymentOrder.getPaymentAccountNo())){
+					studentPaymentOrder.setStatus(DealStatusEnum.CLOSE);
+					studentPaymentOrder.setMemo("云教练审核拒绝");
+					updateList.add(studentPaymentOrder);
+				}
+			}
+		}
+		
+		if(updateList.size() > 0){
+			studentPaymentOrderService.batchUpdate(updateList);
+		}
+		
+		return true;
+	}
 }

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

@@ -140,8 +140,8 @@
     <!-- 查询用户注册订单详情 -->
     <select id="findUserApplyOrder" resultMap="StudentPaymentOrderDetail">
         SELECT spod.*
-        FROM student_payment_order spo
-                 LEFT JOIN student_payment_order_detail spod ON spo.id_ = spod.payment_order_id_
+        FROM student_payment_order_detail spod
+                 LEFT JOIN student_payment_order spo ON spo.id_ = spod.payment_order_id_
         WHERE spo.user_id_ = #{userId}
           AND spo.music_group_id_ = #{musicGroupId}
           AND spo.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}

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

@@ -193,6 +193,91 @@
         </set>
         WHERE id_ = #{id} AND version_ = #{version}
     </update>
+    
+    <update id="batchUpdate" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentOrder">
+		<foreach collection="studentPaymentOrderList" item="studentPaymentOrder" separator=";">
+	        UPDATE student_payment_order
+	        <set>
+	            <if test="studentPaymentOrder.receiveStatus != null and studentPaymentOrder.receiveStatus != ''">
+	                receive_status_ = #{studentPaymentOrder.receiveStatus},
+	            </if>
+	            <if test="studentPaymentOrder.status != null">
+	                status_ = #{studentPaymentOrder.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+	            </if>
+	            <if test="studentPaymentOrder.groupType != null">
+	                group_type_ = #{studentPaymentOrder.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+	            </if>
+	            <if test="studentPaymentOrder.orderNo != null">
+	                order_no_ = #{studentPaymentOrder.orderNo},
+	            </if>
+	            <if test="studentPaymentOrder.classGroupId != null">
+	                class_group_id_ = #{studentPaymentOrder.classGroupId},
+	            </if>
+	            <if test="studentPaymentOrder.expectAmount != null">
+	                expect_amount_ = #{studentPaymentOrder.expectAmount},
+	            </if>
+	            <if test="studentPaymentOrder.memo != null">
+	                memo_ = #{studentPaymentOrder.memo},
+	            </if>
+	            <if test="studentPaymentOrder.paymentChannel != null">
+	                payment_channel_ = #{studentPaymentOrder.paymentChannel},
+	            </if>
+	            <if test="studentPaymentOrder.userId != null">
+	                user_id_ = #{studentPaymentOrder.userId},
+	            </if>
+	            <if test="studentPaymentOrder.paymentAccountNo != null">
+	                payment_account_no_ = #{studentPaymentOrder.paymentAccountNo},
+	            </if>
+	            <if test="studentPaymentOrder.merNos != null">
+	                mer_nos_ = #{studentPaymentOrder.merNos},
+	            </if>
+	            <if test="studentPaymentOrder.paymentBusinessChannel != null">
+	                payment_business_channel_ = #{studentPaymentOrder.paymentBusinessChannel},
+	            </if>
+	            <if test="studentPaymentOrder.transNo != null">
+	                trans_no_ = #{studentPaymentOrder.transNo},
+	            </if>
+	            <if test="studentPaymentOrder.actualAmount != null">
+	                actual_amount_ = #{studentPaymentOrder.actualAmount},
+	            </if>
+	            <if test="studentPaymentOrder.comAmount != null">
+	                com_amount_ = #{studentPaymentOrder.comAmount},
+	            </if>
+	            <if test="studentPaymentOrder.perAmount != null">
+	                per_amount_ = #{studentPaymentOrder.perAmount},
+	            </if>
+	            <if test="studentPaymentOrder.balancePaymentAmount != null">
+	                balance_payment_amount_ = #{studentPaymentOrder.balancePaymentAmount},
+	            </if>
+	            <if test="studentPaymentOrder.remitFee != null">
+	                remit_fee_ = #{studentPaymentOrder.remitFee},
+	            </if>
+	            <if test="studentPaymentOrder.courseRemitFee != null">
+	                course_remit_fee_ = #{studentPaymentOrder.courseRemitFee},
+	            </if>
+	            <if test="studentPaymentOrder.type != null">
+	                type_ = #{studentPaymentOrder.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+	            </if>
+	            <if test="studentPaymentOrder.musicGroupId != null">
+	                music_group_id_ = #{studentPaymentOrder.musicGroupId},
+	            </if>
+	            <if test="studentPaymentOrder.organId != null">
+	                organ_id_ = #{studentPaymentOrder.organId},
+	            </if>
+	            <if test="studentPaymentOrder.routingOrganId != null">
+	                routing_organ_id_ = #{studentPaymentOrder.routingOrganId},
+	            </if>
+	            <if test="studentPaymentOrder.payTime != null">
+	                pay_time_ = #{studentPaymentOrder.payTime},
+	            </if>
+	            <if test="studentPaymentOrder.version != null">
+	                version_ = version_+1,
+	            </if>
+	            update_time_ = NOW()
+	        </set>
+	        WHERE id_ = #{studentPaymentOrder.id} AND version_ = #{studentPaymentOrder.version}
+		</foreach>
+    </update>
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
@@ -349,6 +434,13 @@
         ORDER BY id_ DESC
         LIMIT 1
     </select>
+    
+    <select id="queryByBatchNo" resultMap="StudentPaymentOrder" parameterType="map">
+        SELECT *
+        FROM student_payment_order
+        WHERE batch_no_ = #{batchNo}
+          AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+    </select>
 
     <!-- 根据订单号查询订单 -->
     <select id="findOrderByOrderNo" resultMap="StudentPaymentOrder">
@@ -371,7 +463,7 @@
         <![CDATA[
         SELECT COUNT(*)
         FROM student_payment_order
-        WHERE FIND_IN_SET(status_, 'SUCCESS,ING,WAIT_PAY')
+        WHERE FIND_IN_SET(status_, 'SUCCESS,ING')
         ]]>
     </select>
 

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

@@ -1527,7 +1527,6 @@
         SELECT COUNT(*)
         FROM student_registration
         WHERE music_group_id_ = #{musicGroupId}
-          AND payment_status_ =2
           AND paying_status_ = 2
           AND music_group_status_ = 'NORMAL'
     </select>

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

@@ -9,6 +9,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 
@@ -35,11 +36,14 @@ import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatus
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.entity.StudentPreRegistration;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
 import com.ym.mec.biz.service.MusicGroupService;
@@ -146,13 +150,6 @@ public class MusicGroupController extends BaseController {
             @ApiImplicitParam(name = "subjectId", value = "声部编号", required = true, dataType = "Integer")})
     public HttpResponseResult getSubjectGoodsAndInfo(String musicGroupId, Integer subjectId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser != null && sysUser.getId() > 0) {
-            Integer userId = sysUser.getId();
-            StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-            if (studentRegistration != null && studentRegistration.getTemporaryCourseFee() != null) {
-                return succeed(musicGroupSubjectPlanService.getStudentGoodsAndInfo(musicGroupId, subjectId, studentRegistration));
-            }
-        }
         return succeed(musicGroupSubjectPlanService.getSubjectGoodsAndInfo(musicGroupId, subjectId));
     }
 
@@ -176,11 +173,45 @@ public class MusicGroupController extends BaseController {
         if (studentRegistration == null) {
             return failed(HttpStatus.CONTINUE, "乐团报名信息不存在");
         }
-        if (studentRegistration.getPaymentStatus() != null && studentRegistration.getPaymentStatus() == PaymentStatusEnum.YES) {
-            return failed(HttpStatus.PROCESSING, "您已缴费,请等待乐团开启");
-        }
-
-        if (studentRegistration.getPaymentStatus() != PaymentStatusEnum.OPEN) {
+        
+        // 判断是否可以继续购买
+        List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = studentPaymentOrderDetailService.findUserApplyOrder(userId, musicGroupId, DealStatusEnum.SUCCESS);
+        if(studentPaymentOrderDetailList != null && studentPaymentOrderDetailList.size() > 0){
+        	List<OrderDetailTypeEnum> typeList = studentPaymentOrderDetailList.stream().map(t -> t.getType()).collect(Collectors.toList());
+        	//判断是否所有类型都购买完
+			if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE) {
+				if ((typeList.contains(OrderDetailTypeEnum.MUSICAL) || typeList.contains(OrderDetailTypeEnum.ACCESSORIES))
+						&& (typeList.contains(OrderDetailTypeEnum.CLOUD_TEACHER) || typeList.contains(OrderDetailTypeEnum.COURSE)
+								|| typeList.contains(OrderDetailTypeEnum.HIGH_ONLINE_COURSE) || typeList.contains(OrderDetailTypeEnum.SINGLE)
+								|| typeList.contains(OrderDetailTypeEnum.MIX) || typeList.contains(OrderDetailTypeEnum.HIGH)
+								|| typeList.contains(OrderDetailTypeEnum.VIP) || typeList.contains(OrderDetailTypeEnum.DEMO)
+								|| typeList.contains(OrderDetailTypeEnum.COMPREHENSIVE) || typeList.contains(OrderDetailTypeEnum.ENLIGHTENMENT)
+								|| typeList.contains(OrderDetailTypeEnum.TRAINING_SINGLE) || typeList.contains(OrderDetailTypeEnum.TRAINING_MIX)
+								|| typeList.contains(OrderDetailTypeEnum.HIGH_ONLINE) || typeList.contains(OrderDetailTypeEnum.MUSIC_NETWORK) || typeList
+									.contains(OrderDetailTypeEnum.CLASSROOM))) {
+					return failed(HttpStatus.PROCESSING, "您已缴费,请等待乐团开启");
+				}
+			} else {
+				if (typeList.contains(OrderDetailTypeEnum.MUSICAL)
+						&& typeList.contains(OrderDetailTypeEnum.ACCESSORIES)
+						&& (typeList.contains(OrderDetailTypeEnum.CLOUD_TEACHER) || typeList.contains(OrderDetailTypeEnum.COURSE)
+								|| typeList.contains(OrderDetailTypeEnum.HIGH_ONLINE_COURSE) || typeList.contains(OrderDetailTypeEnum.SINGLE)
+								|| typeList.contains(OrderDetailTypeEnum.MIX) || typeList.contains(OrderDetailTypeEnum.HIGH)
+								|| typeList.contains(OrderDetailTypeEnum.VIP) || typeList.contains(OrderDetailTypeEnum.DEMO)
+								|| typeList.contains(OrderDetailTypeEnum.COMPREHENSIVE) || typeList.contains(OrderDetailTypeEnum.ENLIGHTENMENT)
+								|| typeList.contains(OrderDetailTypeEnum.TRAINING_SINGLE) || typeList.contains(OrderDetailTypeEnum.TRAINING_MIX)
+								|| typeList.contains(OrderDetailTypeEnum.HIGH_ONLINE) || typeList.contains(OrderDetailTypeEnum.MUSIC_NETWORK) || typeList
+									.contains(OrderDetailTypeEnum.CLASSROOM))) {
+					return failed(HttpStatus.PROCESSING, "您已缴费,请等待乐团开启");
+				}
+			}
+        }
+        
+        /*if (studentRegistration.getPaymentStatus() != null && studentRegistration.getPaymentStatus() == PaymentStatusEnum.YES) {
+            
+        }*/
+
+        if (studentRegistration.getPaymentStatus() == PaymentStatusEnum.NO) {
             return failed("乐团还未开启缴费,请等待通知");
         }
         if (musicGroup.getStatus() != MusicGroupStatusEnum.APPLY &&
@@ -299,13 +330,12 @@ public class MusicGroupController extends BaseController {
 
         Integer userId = studentRegistration.getUserId();
 
-        StudentPaymentOrder ApplyOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.SUCCESS);
-        StudentPaymentOrder waitPay = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
-        if (ApplyOrder != null && waitPay == null) {
+        /*StudentPaymentOrder ApplyOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.SUCCESS);
+        if (ApplyOrder != null) {
             return failed("您已支付成功,请勿重复支付");
-        }
+        }*/
         //判断用户是否已存在订单
-        ApplyOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.ING);
+        StudentPaymentOrder ApplyOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.ING);
         if (ApplyOrder != null) {
             return failed(HttpStatus.CONTINUE, "您有待支付的订单");
         }
@@ -333,11 +363,10 @@ public class MusicGroupController extends BaseController {
             return failed(err + "不可缴费,请联系教务老师");
         }
         Integer userId = studentRegistration.getUserId();
-        StudentPaymentOrder ApplyOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.SUCCESS);
-        StudentPaymentOrder waitPay = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
-        if (ApplyOrder != null && waitPay == null) {
+        /*StudentPaymentOrder ApplyOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.SUCCESS);
+        if (ApplyOrder != null) {
             return failed("您已支付成功,请勿重复支付");
-        }
+        }*/
         Map payMap = musicGroupService.rePay(registerPayDto);
         if (payMap.containsKey("hasPaidZero")) {
             return failed(HttpStatus.RESET_CONTENT, payMap, "报名审核中");

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

@@ -451,4 +451,17 @@ public class StudentRegistrationController extends BaseController {
             return succeed(studentRegistrationService.setNoneCloudTeacher(id));
         }
     }
+
+
+    @ApiOperation(value = "云教练审核失败")
+    @PostMapping("/setCloudTeacherToFailed")
+    @PreAuthorize("@pcs.hasPermissions('studentRegistration/setCloudTeacherToFailed')")
+    public HttpResponseResult<Boolean> setCloudTeacherToFailed(Long id) {
+        StudentRegistration studentRegistration = studentRegistrationService.get(id);
+        
+        if(studentRegistration == null){
+        	return failed("参数提交错误");
+        }
+        return studentRegistrationService.setCloudTeacherToFailed(studentRegistration) ? succeed() : failed();
+    }
 }