Ver código fonte

Merge branch 'fix_callback'

周箭河 4 anos atrás
pai
commit
6fd9fabd13

+ 30 - 18
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupSubjectPlan.java

@@ -23,7 +23,7 @@ public class MusicGroupSubjectPlan {
 	/** 乐团编号 */
 	@ApiModelProperty(value = "乐团编号",required = false)
 	private String musicGroupId;
-	
+
 	/** 科目编号 */
 	@ApiModelProperty(value = "科目编号",required = false)
 	private Integer subjectId;
@@ -31,11 +31,11 @@ public class MusicGroupSubjectPlan {
 	/** 科目编号 */
 	@ApiModelProperty(value = "科目名称",required = false)
 	private String subName;
-	
+
 	/** 预计学生数 */
 	@ApiModelProperty(value = "预计学生数",required = false)
 	private Integer expectedStudentNum;
-	
+
 	/** 报名学生数 */
 	@ApiModelProperty(value = "报名学生数",required = false)
 	private Integer applyStudentNum;
@@ -44,6 +44,10 @@ public class MusicGroupSubjectPlan {
 	@ApiModelProperty(value = "已缴费学生数",required = false)
 	private Integer paidStudentNum;
 
+	/** 0元缴费学生数 */
+	@ApiModelProperty(value = "已缴费学生数",required = false)
+	private Integer paidZeroNum = 0;
+
 	/** 未分班学生数 */
 	@ApiModelProperty(value = "未分班学生数",hidden = true)
 	private Integer noClassStudentNum;
@@ -55,13 +59,13 @@ public class MusicGroupSubjectPlan {
 	/** 乐器团购类型(免费、租赁、借用) */
 	@ApiModelProperty(value = "乐器团购类型(免费、租赁、借用)",required = false)
 	private KitGroupPurchaseTypeEnum kitGroupPurchaseType;
-	
+
 	/** 保证金(只有租赁才有) */
 	@ApiModelProperty(value = "保证金(只有租赁才有)",required = false)
 	private BigDecimal depositFee = new BigDecimal(0);
 	/**  */
 	private java.util.Date createTime;
-	
+
 	/**  */
 	private java.util.Date updateTime;
 
@@ -76,39 +80,39 @@ public class MusicGroupSubjectPlan {
 	public void setId(Integer id){
 		this.id = id;
 	}
-	
+
 	public Integer getId(){
 		return this.id;
 	}
-			
+
 	public void setMusicGroupId(String musicGroupId){
 		this.musicGroupId = musicGroupId;
 	}
-	
+
 	public String getMusicGroupId(){
 		return this.musicGroupId;
 	}
-			
+
 	public void setSubjectId(Integer subjectId){
 		this.subjectId = subjectId;
 	}
-	
+
 	public Integer getSubjectId(){
 		return this.subjectId;
 	}
-			
+
 	public void setExpectedStudentNum(Integer expectedStudentNum){
 		this.expectedStudentNum = expectedStudentNum;
 	}
-	
+
 	public Integer getExpectedStudentNum(){
 		return this.expectedStudentNum;
 	}
-			
+
 	public void setApplyStudentNum(Integer applyStudentNum){
 		this.applyStudentNum = applyStudentNum;
 	}
-	
+
 	public Integer getApplyStudentNum(){
 		return this.applyStudentNum;
 	}
@@ -140,15 +144,15 @@ public class MusicGroupSubjectPlan {
 	public void setCreateTime(java.util.Date createTime){
 		this.createTime = createTime;
 	}
-	
+
 	public java.util.Date getCreateTime(){
 		return this.createTime;
 	}
-			
+
 	public void setUpdateTime(java.util.Date updateTime){
 		this.updateTime = updateTime;
 	}
-	
+
 	public java.util.Date getUpdateTime(){
 		return this.updateTime;
 	}
@@ -176,9 +180,17 @@ public class MusicGroupSubjectPlan {
 	public void setVersion(Integer version) {
 		this.version = version;
 	}
-			
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
+
+	public Integer getPaidZeroNum() {
+		return paidZeroNum;
+	}
+
+	public void setPaidZeroNum(Integer paidZeroNum) {
+		this.paidZeroNum = paidZeroNum;
+	}
 }

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

@@ -1764,14 +1764,17 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             BigDecimal amount = new BigDecimal(0);
 
             StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, SUCCESS);
-            BigDecimal orderExpectAmount = studentPaymentOrder == null ? BigDecimal.ZERO : studentPaymentOrder.getExpectAmount();
 
             boolean hasPaid = studentRegistration.getMusicGroupStatus().equals(StudentMusicGroupStatusEnum.NORMAL);
             // 缴费人数更新
             MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
-            if (hasPaid && musicGroupSubjectPlan != null && (!musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) || orderExpectAmount.compareTo(BigDecimal.ZERO) > 0)) {
+            if (hasPaid && musicGroupSubjectPlan != null) {
                 musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
                 musicGroupSubjectPlan.setUpdateTime(date);
+                List<String> orderDetailTypes = studentPaymentOrderDetailDao.getOrderDetailType(studentPaymentOrder.getId());
+                if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !orderDetailTypes.contains("CLOUD_TEACHER")) {
+                    musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
+                }
                 musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
             }
 
@@ -1989,13 +1992,16 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         BigDecimal amount = new BigDecimal(0);
 
         StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, SUCCESS);
-        BigDecimal orderExpectAmount = studentPaymentOrder == null ? BigDecimal.ZERO : studentPaymentOrder.getExpectAmount();
 
         // 判断乐器是否是租赁
         MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
-        if (hasPaid && musicGroupSubjectPlan != null && (!musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) || orderExpectAmount.compareTo(BigDecimal.ZERO) > 0)) {
+        if (hasPaid && musicGroupSubjectPlan != null) {
             musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
             musicGroupSubjectPlan.setUpdateTime(date);
+            List<String> orderDetailTypes = studentPaymentOrderDetailDao.getOrderDetailType(studentPaymentOrder.getId());
+            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !orderDetailTypes.contains("CLOUD_TEACHER")) {
+                musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
+            }
             musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
         }
 

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

@@ -25,6 +25,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.controller.BaseController;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -493,16 +494,19 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
 
-        //增加缴费学生数
+        //增加缴费学生数,0元订单不增加报名人数(没买云教练的)
         boolean updateFlag = false;
         for (int i = 0; i < 10; i++) {
-            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && amount.compareTo(BigDecimal.ZERO) <= 0) { //0元订单不增加报名人数
-                updateFlag = true;
-                break;
-            }
             MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
             int paidNum = musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan.getPaidStudentNum();
+            int paidZeroNum = musicOneSubjectClassPlan.getPaidZeroNum() == null ? 0 : musicOneSubjectClassPlan.getPaidZeroNum();
             musicOneSubjectClassPlan.setPaidStudentNum(paidNum + 1);
+            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !buyCloudTeacher) {
+                if (paidZeroNum > 0) {
+                    throw new BizException("205");
+                }
+                musicOneSubjectClassPlan.setPaidZeroNum(paidZeroNum + 1);
+            }
             if (studentRegistration.getTemporaryCourseFee() == null && musicOneSubjectClassPlan.getPaidStudentNum() > musicOneSubjectClassPlan.getExpectedStudentNum()) {
                 throw new BizException("乐团该声部人数暂时已满,请稍后再试");
             }
@@ -1198,12 +1202,14 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.FAILED)) {
             MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
             //减去缴费人数(器乐收费,0元时不减缴费人数)
-            if (!musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) || studentPaymentOrder.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
-                musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
-                updateCount = musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
-                if (updateCount <= 0) {
-                    throw new BizException("减去缴费人数失败");
-                }
+            List<String> orderDetailTypes = studentPaymentOrderDetailDao.getOrderDetailType(studentPaymentOrder.getId());
+            musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
+            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !orderDetailTypes.contains("CLOUD_TEACHER")) {
+                musicOneSubjectClassPlan.setPaidZeroNum(musicOneSubjectClassPlan.getPaidZeroNum() - 1);
+            }
+            updateCount = musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
+            if (updateCount <= 0) {
+                throw new BizException("减去缴费人数失败");
             }
             if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "报名缴费失败");
@@ -1792,6 +1798,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     public Integer quitAllStudent(String musicGroupId, String remark) {
-        return studentRegistrationDao.quitAllStudent(musicGroupId,remark);
+        return studentRegistrationDao.quitAllStudent(musicGroupId, remark);
     }
 }

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupSubjectPlanMapper.xml

@@ -13,6 +13,7 @@
         <result column="expected_student_num_" property="expectedStudentNum"/>
         <result column="apply_student_num_" property="applyStudentNum"/>
         <result column="paid_student_num_" property="paidStudentNum"/>
+        <result column="paid_zero_num__" property="paidZeroNum"/>
         <result column="fee_" property="fee"/>
         <result column="kit_group_purchase_type_" property="kitGroupPurchaseType"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
@@ -81,6 +82,9 @@
             <if test="paidStudentNum != null">
                 paid_student_num_ = #{paidStudentNum},
             </if>
+            <if test="paidZeroNum != null">
+                paid_zero_num_ = #{paidZeroNum},
+            </if>
             <if test="updateTime != null">
                 update_time_ = NOW(),
             </if>

+ 4 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java

@@ -64,7 +64,7 @@ public class BaseController {
 
 	/**
 	 * 处理一般异常
-	 * 
+	 *
 	 * @param ex
 	 * @param request
 	 * @return
@@ -78,6 +78,9 @@ public class BaseController {
 		logger.error("System Error", ex);
 		// return failed(e.getMessage());
 		if (e instanceof BizException || e instanceof ThirdpartyException) {
+			if(e.getMessage().equals("205")){
+				return failed(HttpStatus.RESET_CONTENT,e.getMessage());
+			}
 			return failed(e.getMessage());
 		} else if (e instanceof AccessDeniedException) {
 			return failed("禁止访问");