Browse Source

退款逻辑处理

wanghui 7 years ago
parent
commit
6aa0f2d28f

+ 2 - 0
src/main/java/com/goafanti/common/constant/ErrorConstants.java

@@ -130,5 +130,7 @@ public class ErrorConstants {
 	
 	public static final String PAY_BEYOND_SIGN						= "PAY_BEYOND_SIGN";
 	
+	public static final String REFUND_BEYOND_SIGN					= "REFUND_BEYOND_SIGN";
+	
 	public static final String BILL_ALREADY_EXPIRE					= "BILL_ALREADY_EXPIRE";
 }

+ 10 - 3
src/main/java/com/goafanti/order/service/impl/OrderServiceImpl.java

@@ -361,7 +361,14 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			if(tOrder.getActuallyTotalAmount().doubleValue() <= 0)
 				flag = false;
 			if(!flag) throw new BusinessException(new Error(ErrorConstants.NOT_ACCORD_WITH_NEXT,"申请退款"));
-			tOrder.setLiquidationStatus(LiquidationState.COMPLETE_REFUND.getCode());
+			int boundary = tOrder.getActuallyTotalAmount().add(changeAmount).compareTo(tOrder.getSignTotalAmount());
+			if(boundary == 0) {
+				tOrder.setLiquidationStatus(LiquidationState.COMPLETE_REFUND.getCode()); //完成退款
+			}else if(boundary == 1){
+				tOrder.setLiquidationStatus(LiquidationState.AGREE_REFUND.getCode()); //需要再退款
+			}else if(boundary == -1){
+				throw new BusinessException(new Error(ErrorConstants.REFUND_BEYOND_SIGN,"退款"));
+			}
 		}
 	}
 	
@@ -924,7 +931,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			tOrder.setSignTotalAmount(new BigDecimal(signTotalAmount));
 			tOrder.setOrderStage(OrderStage.SIGNED.getCode());
 			tOrder.setOrderStatus(OrderState.ALREADY_SIGN.getCode());
-			tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
+			tOrder.setProjectStage(ProjectStage.NOT_SATISFY_CONDITION.getCode());
 			tOrder.setApproval(Integer.valueOf(approval));
 			tOrder.setUpdateTime(new Date());
 			try {
@@ -1508,7 +1515,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		TOrder tOrder = tOrderMapper.selectByPrimaryKey(orderNo);
 		if(tOrder.getLiquidationStatus() == LiquidationState.AGREE_REFUND.getCode()){
 			addFundRecord(orderNo, "测试用户", DEFAULT_PLATFORM_ID, TokenManager.getUserId(), "", 
-					TransactionSubject.REFUND,PayChannel.UNIONPAY, new BigDecimal(refundAmount), TransactionMode.OFFLINE, AuditState.WAIT_AUDIT);
+					TransactionSubject.REFUND,PayChannel.UNIONPAY, new BigDecimal(refundAmount).multiply(new BigDecimal(-1)), TransactionMode.OFFLINE, AuditState.WAIT_AUDIT);
 			tOrder.setUpdateTime(new Date());
 			tOrderMapper.updateByPrimaryKeySelective(tOrder);
 		}else{

+ 2 - 0
src/main/resources/props/error.properties

@@ -117,4 +117,6 @@ ORDER_NOT_EXIST = \u8BA2\u5355\u4E0D\u5B58\u5728{0}
 
 PAY_BEYOND_SIGN = \u652F\u4ED8\u91D1\u989D\u8D85\u8FC7\u5408\u540C\u4EF7\u683C
 
+REFUND_BEYOND_SIGN = \u9000\u6B3E\u91D1\u989D\u8D85\u8FC7\u5408\u540C\u4EF7\u683C
+
 BILL_ALREADY_EXPIRE = \u8BE5\u6D41\u6C34\u5DF2\u8FC7\u671F