Authored by chenchao

Merge branch 'dev_支持买家退款' into dev_order

# Conflicts:
#	web/src/main/resources/config.properties
#	web/src/main/webapp/META-INF/autoconf/config.properties
@@ -22,7 +22,10 @@ public class TransferMoneyRequest { @@ -22,7 +22,10 @@ public class TransferMoneyRequest {
22 * <pre> 22 * <pre>
23 * 1:鉴定通过(货款-->卖家); 23 * 1:鉴定通过(货款-->卖家);
24 * 2:鉴定不通过(保证金 --> 买家); 24 * 2:鉴定不通过(保证金 --> 买家);
25 - * 3:有买家时卖家不卖了(保证金 --> 买家) 25 + * 3:有买家时卖家不卖了(保证金 --> 买家);
  26 + * // 20181109 add
  27 + * 4:买家付款后[卖家未发货],取消订单(货款部分-->卖家);
  28 + * 5:买家付款后[卖家已发货],取消订单(货款部分-->卖家);
26 * </pre> 29 * </pre>
27 */ 30 */
28 private int type; 31 private int type;
@@ -41,11 +41,14 @@ import org.apache.commons.lang3.StringUtils; @@ -41,11 +41,14 @@ import org.apache.commons.lang3.StringUtils;
41 import org.slf4j.Logger; 41 import org.slf4j.Logger;
42 import org.slf4j.LoggerFactory; 42 import org.slf4j.LoggerFactory;
43 import org.springframework.beans.factory.annotation.Autowired; 43 import org.springframework.beans.factory.annotation.Autowired;
  44 +import org.springframework.beans.factory.annotation.Value;
44 import org.springframework.stereotype.Service; 45 import org.springframework.stereotype.Service;
45 46
46 import java.math.BigDecimal; 47 import java.math.BigDecimal;
47 import java.util.Date; 48 import java.util.Date;
48 49
  50 +import javax.annotation.PostConstruct;
  51 +
49 52
50 @Service 53 @Service
51 public class PaymentServiceImpl implements IPaymentService { 54 public class PaymentServiceImpl implements IPaymentService {
@@ -101,7 +104,20 @@ public class PaymentServiceImpl implements IPaymentService { @@ -101,7 +104,20 @@ public class PaymentServiceImpl implements IPaymentService {
101 @Autowired 104 @Autowired
102 TradeBillsMapper tradeBillsMapper; 105 TradeBillsMapper tradeBillsMapper;
103 106
104 - 107 + @Value("${order.buyer.cancelWhenSellerDelivery.money}")
  108 + private String buyerCancelDelivery;
  109 + @Value("${order.buyer.cancelWhenSellerUnDelivery.money}")
  110 + private String buyerCancelUnDelivery;
  111 + @Value("${order.buyer.cancelWhenSellerDelivery.sellerGetMoneyRate}")
  112 + private String sellerGetRateDelivery;
  113 + @Value("${order.buyer.cancelWhenSellerUnDelivery.sellerGetMoneyRate}")
  114 + private String sellerGetRateUnDelivery;
  115 +
  116 + private BigDecimal buyerCancelDeliveryMoney;
  117 + private BigDecimal buyerCancelUnDeliveryMoney;
  118 + private BigDecimal sellerGetRateDeliveryMoney;
  119 + private BigDecimal sellerGetRateUnDeliveryMoney;
  120 +
105 /** 121 /**
106 * 获取主场的订单service 122 * 获取主场的订单service
107 * @param codeMeta 123 * @param codeMeta
@@ -407,6 +423,9 @@ public class PaymentServiceImpl implements IPaymentService { @@ -407,6 +423,9 @@ public class PaymentServiceImpl implements IPaymentService {
407 * 1:鉴定通过(货款-->卖家); 423 * 1:鉴定通过(货款-->卖家);
408 * 2:鉴定不通过(保证金 --> 买家); 424 * 2:鉴定不通过(保证金 --> 买家);
409 * 3:有买家时卖家不卖了(保证金 --> 买家) 425 * 3:有买家时卖家不卖了(保证金 --> 买家)
  426 + * // 20181109 add
  427 + * 4:买家付款后[卖家未发货],取消订单(货款部分-->卖家);
  428 + * 5:买家付款后[卖家已发货],取消订单(货款部分-->卖家);
410 * </pre> 429 * </pre>
411 * 430 *
412 * @param request 请求 431 * @param request 请求
@@ -425,7 +444,7 @@ public class PaymentServiceImpl implements IPaymentService { @@ -425,7 +444,7 @@ public class PaymentServiceImpl implements IPaymentService {
425 throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY); 444 throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY);
426 } 445 }
427 // 类型检查 446 // 类型检查
428 - if (transferType < 1 || transferType > 3) { 447 + if (transferType < 1 || transferType > 5) {
429 logger.warn("transferMonErr transferType invalid"); 448 logger.warn("transferMonErr transferType invalid");
430 throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY); 449 throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY);
431 } 450 }
@@ -451,7 +470,8 @@ public class PaymentServiceImpl implements IPaymentService { @@ -451,7 +470,8 @@ public class PaymentServiceImpl implements IPaymentService {
451 } 470 }
452 471
453 long sellerOrderCode = sellerOrder.getOrderCode(); 472 long sellerOrderCode = sellerOrder.getOrderCode();
454 - Integer targetUid = transferType == 1 ? sellerOrder.getUid() : buyerOrder.getUid(); 473 + Integer targetUserType = (transferType == 2 || transferType == 3) ? 1 : 2;
  474 + Integer targetUid = targetUserType == 1 ? buyerOrder.getUid() : sellerOrder.getUid();
455 475
456 if (targetUid == null || targetUid < 1) { 476 if (targetUid == null || targetUid < 1) {
457 logger.warn("transferMonErr uid {} 不合法", targetUid); 477 logger.warn("transferMonErr uid {} 不合法", targetUid);
@@ -488,11 +508,11 @@ public class PaymentServiceImpl implements IPaymentService { @@ -488,11 +508,11 @@ public class PaymentServiceImpl implements IPaymentService {
488 TradeBills record = new TradeBills(); 508 TradeBills record = new TradeBills();
489 record.setUid(targetUid); 509 record.setUid(targetUid);
490 record.setOrderCode(buyerOrderCode); 510 record.setOrderCode(buyerOrderCode);
491 - record.setUserType(transferType == 1 ? 2 : 1); 511 + record.setUserType(targetUserType);
492 record.setPayType(1); 512 record.setPayType(1);
493 record.setTradeType(transferType == 1 ? 2 : 3); 513 record.setTradeType(transferType == 1 ? 2 : 3);
494 record.setIncomeOutcome(1); 514 record.setIncomeOutcome(1);
495 - record.setTradeStatus(transferType == 1 ? 0 : 1); 515 + record.setTradeStatus(0);
496 record.setCreateTime(now); 516 record.setCreateTime(now);
497 517
498 logger.info("transferMon参数检查成功!"); 518 logger.info("transferMon参数检查成功!");
@@ -590,7 +610,7 @@ public class PaymentServiceImpl implements IPaymentService { @@ -590,7 +610,7 @@ public class PaymentServiceImpl implements IPaymentService {
590 throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY); 610 throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY);
591 } 611 }
592 // 类型检查 612 // 类型检查
593 - if (transferType < 1 || transferType > 3) { 613 + if (transferType < 1 || transferType > 5) {
594 logger.warn("transferMonErr transferType invalid"); 614 logger.warn("transferMonErr transferType invalid");
595 throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY); 615 throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY);
596 } 616 }
@@ -900,6 +920,13 @@ public class PaymentServiceImpl implements IPaymentService { @@ -900,6 +920,13 @@ public class PaymentServiceImpl implements IPaymentService {
900 920
901 921
902 private BigDecimal calcTransferAmount(Integer sellerUid, Integer skup, int transferType) { 922 private BigDecimal calcTransferAmount(Integer sellerUid, Integer skup, int transferType) {
  923 + if (transferType == 4) {
  924 + return sellerGetRateUnDeliveryMoney;
  925 + }
  926 + if (transferType == 5) {
  927 + return sellerGetRateDeliveryMoney;
  928 + }
  929 +
903 SellerOrderMeta meta = sellerOrderMetaMapper.selectByMetaKey(sellerUid, skup, "fee"); 930 SellerOrderMeta meta = sellerOrderMetaMapper.selectByMetaKey(sellerUid, skup, "fee");
904 if (meta == null) { 931 if (meta == null) {
905 logger.warn("查询SellerOrderMeta无数据, sellerUid is {}, skup is {}", sellerUid, skup); 932 logger.warn("查询SellerOrderMeta无数据, sellerUid is {}, skup is {}", sellerUid, skup);
@@ -1021,12 +1048,33 @@ public class PaymentServiceImpl implements IPaymentService { @@ -1021,12 +1048,33 @@ public class PaymentServiceImpl implements IPaymentService {
1021 CommonAlarmEventPublisher.publish(name, type, content); 1048 CommonAlarmEventPublisher.publish(name, type, content);
1022 } 1049 }
1023 1050
1024 -  
1025 -  
1026 -  
1027 -  
1028 -  
1029 -  
1030 - 1051 + @PostConstruct
  1052 + private void init() {
  1053 + try {
  1054 + buyerCancelDeliveryMoney = new BigDecimal(buyerCancelUnDelivery);
  1055 + buyerCancelUnDeliveryMoney = new BigDecimal(buyerCancelUnDelivery);
  1056 + sellerGetRateDeliveryMoney = buyerCancelDeliveryMoney.multiply(new BigDecimal(sellerGetRateDelivery))
  1057 + .setScale(2, BigDecimal.ROUND_HALF_DOWN);
  1058 + sellerGetRateUnDeliveryMoney = buyerCancelUnDeliveryMoney.multiply(new BigDecimal(sellerGetRateUnDelivery))
  1059 + .setScale(2, BigDecimal.ROUND_HALF_DOWN);
  1060 + } catch (Exception e) {
  1061 + logger.error("买家取消罚款金额相关参数配置错误!", e);
  1062 + throw new Error("买家取消罚款金额相关参数配置错误!");
  1063 + }
  1064 + if (buyerCancelDeliveryMoney.compareTo(BigDecimal.ZERO) < 0) {
  1065 + throw new Error("buyerCancelDeliveryMoney买家取消(货已寄出)罚款金额不能为负数");
  1066 + }
  1067 + if (buyerCancelUnDeliveryMoney.compareTo(BigDecimal.ZERO) < 0) {
  1068 + throw new Error("buyerCancelUnDeliveryMoney买家取消(货未寄出)罚款金额不能为负数");
  1069 + }
  1070 + if (sellerGetRateDeliveryMoney.compareTo(BigDecimal.ZERO) < 0
  1071 + || sellerGetRateDeliveryMoney.compareTo(BigDecimal.ONE) > 0) {
  1072 + throw new Error("sellerGetRateDeliveryMoney买家取消(货已寄出)卖家获得赔偿比率必须在[0,1]");
  1073 + }
  1074 + if (sellerGetRateUnDeliveryMoney.compareTo(BigDecimal.ZERO) < 0
  1075 + || sellerGetRateUnDeliveryMoney.compareTo(BigDecimal.ONE) > 0) {
  1076 + throw new Error("sellerGetRateUnDeliveryMoney买家取消(货未寄出)卖家获得赔偿比率必须在[0,1]");
  1077 + }
  1078 + }
1031 1079
1032 } 1080 }
@@ -95,7 +95,16 @@ order.seller.appraiseFee=0.1 @@ -95,7 +95,16 @@ order.seller.appraiseFee=0.1
95 order.seller.goodsPaymentRate=0.05 95 order.seller.goodsPaymentRate=0.05
96 order.seller.earnestMoneyRate=0.2 96 order.seller.earnestMoneyRate=0.2
97 order.seller.payChannelRate=0.0006 97 order.seller.payChannelRate=0.0006
  98 +
98 order.buyer.compensate.before_seller_deliver=38 99 order.buyer.compensate.before_seller_deliver=38
99 order.buyer.compensate.before_depot_receive=68 100 order.buyer.compensate.before_depot_receive=68
  101 +
  102 +order.buyer.cancelWhenSellerDelivery.money=68
  103 +order.buyer.cancelWhenSellerUnDelivery.money=38
  104 +order.buyer.cancelWhenSellerDelivery.sellerGetMoneyRate=0.8
  105 +order.buyer.cancelWhenSellerUnDelivery.sellerGetMoneyRate=0.8
  106 +
  107 +
  108 +
100 uic.url=http://java-yoho-uic.test3.ingress.dev.yohocorp.com/uic 109 uic.url=http://java-yoho-uic.test3.ingress.dev.yohocorp.com/uic
101 yoho.message.controller.url=http://message-controller.yohoops.org/yoho-message-controller 110 yoho.message.controller.url=http://message-controller.yohoops.org/yoho-message-controller
@@ -63,8 +63,16 @@ order.seller.appraiseFee=${order.seller.appraiseFee} @@ -63,8 +63,16 @@ order.seller.appraiseFee=${order.seller.appraiseFee}
63 order.seller.goodsPaymentRate=${order.seller.goodsPaymentRate} 63 order.seller.goodsPaymentRate=${order.seller.goodsPaymentRate}
64 order.seller.earnestMoneyRate=${order.seller.earnestMoneyRate} 64 order.seller.earnestMoneyRate=${order.seller.earnestMoneyRate}
65 order.seller.payChannelRate=${order.seller.payChannelRate} 65 order.seller.payChannelRate=${order.seller.payChannelRate}
  66 +
66 order.buyer.compensate.before_depot_receive=${order.buyer.compensate.before_depot_receive} 67 order.buyer.compensate.before_depot_receive=${order.buyer.compensate.before_depot_receive}
67 order.buyer.compensate.before_seller_deliver=${order.buyer.compensate.before_seller_deliver} 68 order.buyer.compensate.before_seller_deliver=${order.buyer.compensate.before_seller_deliver}
  69 +
  70 +order.buyer.cancelWhenSellerDelivery.money=${order.buyer.cancelWhenSellerDelivery.money}
  71 +order.buyer.cancelWhenSellerUnDelivery.money=${order.buyer.cancelWhenSellerUnDelivery.money}
  72 +order.buyer.cancelWhenSellerDelivery.sellerGetMoneyRate=${order.buyer.cancelWhenSellerDelivery.sellerGetMoneyRate}
  73 +order.buyer.cancelWhenSellerUnDelivery.sellerGetMoneyRate=${order.buyer.cancelWhenSellerUnDelivery.sellerGetMoneyRate}
  74 +
  75 +
68 erp-gateway.url=${erp-gateway.url} 76 erp-gateway.url=${erp-gateway.url}
69 uic.url=${uic.url} 77 uic.url=${uic.url}
70 yoho.message.controller.url=${yoho.message.controller.url} 78 yoho.message.controller.url=${yoho.message.controller.url}