Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
99c3a5a6e3

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

@@ -43,6 +43,9 @@ public class StudentPaymentOrder {
 	@ApiModelProperty(value = "实际金额",required = true)
 	private BigDecimal actualAmount;
 	
+	@ApiModelProperty(value = "余额付款金额",required = true)
+	private BigDecimal balancePaymentAmount;
+	
 	/** 交易流水号 */
 	@ApiModelProperty(value = "交易流水号",required = true)
 	private String transNo;
@@ -221,6 +224,14 @@ public class StudentPaymentOrder {
 		this.actualAmount = actualAmount;
 	}
 
+	public BigDecimal getBalancePaymentAmount() {
+		return balancePaymentAmount;
+	}
+
+	public void setBalancePaymentAmount(BigDecimal balancePaymentAmount) {
+		this.balancePaymentAmount = balancePaymentAmount;
+	}
+
 	public DealStatusEnum getStatus() {
 		return status;
 	}

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

@@ -748,50 +748,72 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (amount == null || amount.doubleValue() == 0) {
             amount = musicGroupStudentFee.getCourseFee();
         }
+
+        Date date = new Date();
+        StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+        studentPaymentOrder.setGroupType(GroupType.MUSIC);
+        studentPaymentOrder.setUserId(userId);
+        studentPaymentOrder.setOrderNo(idGeneratorService.generatorId("RENEW") + "");
+        studentPaymentOrder.setType(OrderTypeEnum.RENEW);
+        studentPaymentOrder.setExpectAmount(amount);
+        studentPaymentOrder.setActualAmount(amount);
+        studentPaymentOrder.setStatus(DealStatusEnum.ING);
+        studentPaymentOrder.setMusicGroupId(musicGroupId);
+        studentPaymentOrder.setCreateTime(date);
+        studentPaymentOrder.setUpdateTime(date);
+        studentPaymentOrderService.insert(studentPaymentOrder);
+
+        ArrayList<StudentPaymentOrderDetail> studentPaymentOrderDetailList = new ArrayList<>();
+        StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
+        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
+        studentPaymentOrderDetail.setPrice(amount);
+        studentPaymentOrderDetail.setCreateTime(date);
+        studentPaymentOrderDetail.setUpdateTime(date);
+        studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+        studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
+
+        studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
         
-        if(isUseBalancePayment){
+        if(isUseBalancePayment || amount.doubleValue() == 0){
         	SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(userId);
         	if(userCashAccount == null){
         		throw new BizException("用户账户找不到");
         	}
         	if(userCashAccount.getBalance().subtract(amount).doubleValue() > 0){
+        		// 更新订单信息
+        		studentPaymentOrder.setBalancePaymentAmount(amount);
+                studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
+                studentPaymentOrder.setUpdateTime(date);
+                studentPaymentOrderService.update(studentPaymentOrder);
+                
         		sysUserCashAccountService.updateBalance(userId, amount.negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,"乐团续费");
+        		
+        		//更新下次续费时间
+        		musicGroupStudentFee.setUpdateTime(date);
+                musicGroupStudentFee.setLatestPaidTime(date);
+                musicGroupStudentFee.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
+                musicGroupStudentFee.setTemporaryCourseFee(new BigDecimal(0));
+                musicGroupStudentFee.setNextPaymentDate(musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId));
+                musicGroupStudentFeeDao.update(musicGroupStudentFee);
+                
         		return null;
         	}else{
-        		if(userCashAccount.getBalance().doubleValue() > 0){
-            		sysUserCashAccountService.updateBalance(userId, userCashAccount.getBalance().negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,"乐团续费");
-            		amount = amount.subtract(userCashAccount.getBalance());
-        		}
+				if (userCashAccount.getBalance().doubleValue() > 0) {
+					sysUserCashAccountService.updateBalance(userId, userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐团续费");
+					amount = amount.subtract(userCashAccount.getBalance());
+					studentPaymentOrder.setBalancePaymentAmount(userCashAccount.getBalance());
+				} else {
+					studentPaymentOrder.setBalancePaymentAmount(new BigDecimal(0));
+				}
         	}
         }
 
         try {
             Map<String, Object> payMap = payService.getPayMap(amount, idGeneratorService.generatorId("payment") + "", "https://pay.dayaedu.com/api/yqpay/notify",
                     "http://dev.dayaedu.com", "测试订单", "测试订单");
-
-            Date date = new Date();
-            StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
-            studentPaymentOrder.setGroupType(GroupType.MUSIC);
-            studentPaymentOrder.setUserId(userId);
-            studentPaymentOrder.setOrderNo(idGeneratorService.generatorId("RENEW") + "");
-            studentPaymentOrder.setType(OrderTypeEnum.RENEW);
-            studentPaymentOrder.setExpectAmount(amount);
-            studentPaymentOrder.setActualAmount(amount);
-            studentPaymentOrder.setStatus(DealStatusEnum.ING);
             studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
-            studentPaymentOrder.setMusicGroupId(musicGroupId);
-            studentPaymentOrderService.insert(studentPaymentOrder);
-
-            ArrayList<StudentPaymentOrderDetail> studentPaymentOrderDetailList = new ArrayList<>();
-            StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
-            studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
-            studentPaymentOrderDetail.setPrice(amount);
-            studentPaymentOrderDetail.setCreateTime(date);
-            studentPaymentOrderDetail.setUpdateTime(date);
-            studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-            studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
-
-            studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
+            studentPaymentOrder.setUpdateTime(date);
+            studentPaymentOrderService.update(studentPaymentOrder);
 
             return payMap;
         } catch (Exception e) {

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

@@ -13,6 +13,7 @@
         <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="expect_amount_" property="expectAmount"/>
         <result column="actual_amount_" property="actualAmount"/>
+        <result column="balance_payment_amount_" property="balancePaymentAmount"/>
         <result column="trans_no_" property="transNo"/>
         <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="memo_" property="memo"/>
@@ -74,8 +75,8 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentOrder" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
         INSERT INTO student_payment_order
-        (id_,group_type_,user_id_,type_,expect_amount_,actual_amount_,trans_no_,status_,memo_,create_time_,update_time_,payment_channel_,payment_business_channel_,payment_account_no_,order_no_,music_group_id_,class_group_id_)
-        VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{userId},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{expectAmount},#{actualAmount},#{transNo},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{memo},now(),now(),#{paymentChannel},#{paymentBusinessChannel},#{paymentAccountNo},#{orderNo},#{musicGroupId},#{classGroupId})
+        (id_,group_type_,user_id_,type_,expect_amount_,actual_amount_,balance_payment_amount_,trans_no_,status_,memo_,create_time_,update_time_,payment_channel_,payment_business_channel_,payment_account_no_,order_no_,music_group_id_,class_group_id_)
+        VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{userId},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{expectAmount},#{actualAmount},#{balancePaymentAmount},#{transNo},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{memo},now(),now(),#{paymentChannel},#{paymentBusinessChannel},#{paymentAccountNo},#{orderNo},#{musicGroupId},#{classGroupId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -121,6 +122,9 @@
             <if test="actualAmount != null">
                 actual_amount_ = #{actualAmount},
             </if>
+            <if test="balancePaymentAmount != null">
+                balance_payment_amount_ = #{balancePaymentAmount},
+            </if>
             <if test="type != null">
                 type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>