From 78dd1d860b5731ac76622a9b4fac8247f0271a14 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 11 Oct 2019 13:11:00 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[=E6=B6=88=E8=B4=B9=E5=8D=A1][=E4=BF=AE?= =?UTF-8?q?=E6=94=B9]:=E6=9C=89=E4=BB=B7=E5=8D=A1=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=97=A0=E5=88=86=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/domain/po/WxMerchant.java | 3 -- .../com/iformall/domain/po/WxPayAccount.java | 1 + .../service/impl/WxCardSpendServiceImpl.java | 22 +++++++------ .../service/impl/WxOrderServiceImpl.java | 33 ++++++++++++++++--- 4 files changed, 42 insertions(+), 17 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java index b19287119..9c2d7f7ac 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java @@ -7,7 +7,6 @@ import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.vo.WxShopVo; import com.iformall.enums.EnumBusiness; import com.iformall.enums.EnumSubBusiness; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -26,8 +25,6 @@ public class WxMerchant extends BaseEntity { protected Long id; - @ApiModelProperty(name = "ids", value = "商户ID数组") - @TableField(exist = false) private List userids; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java index 638c817ec..6f4973de0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java @@ -44,5 +44,6 @@ public class WxPayAccount extends BaseEntity { return notifyUrl + "/subsidyPay"; } + public boolean isShare() { return share > 0; } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java index 4432ac727..02316e683 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -241,16 +241,18 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { } } - // 9. 分账 - try { - shareForCardPay(record.getTenantId(), record.getCardId(), record.getOrderId(), record.getId()); - } catch (MallinkException e) { - logger.error(e.getMessage()); - if(ErrorCode.PROFIT_SHARING_NUM_UP_LIMIT.getCode() == e.getErrorCode()) { - // 分账已到20次限制,后面只记录,无法分账 - logger.error("分账已到20次限制,后面只记录,无法分账"); - } else { - throw new MallinkException(e.getErrorCode(), e.getMessage()); + if (payAccount.isShare()) { + // 9. 分账 + try { + shareForCardPay(record.getTenantId(), record.getCardId(), record.getOrderId(), record.getId()); + } catch (MallinkException e) { + logger.error(e.getMessage()); + if (ErrorCode.PROFIT_SHARING_NUM_UP_LIMIT.getCode() == e.getErrorCode()) { + // 分账已到20次限制,后面只记录,无法分账 + logger.error("分账已到20次限制,后面只记录,无法分账"); + } else { + throw new MallinkException(e.getErrorCode(), e.getMessage()); + } } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index b7b352d12..8c6e585fc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -705,6 +705,7 @@ public class WxOrderServiceImpl implements WxOrderService { cardInfo.setRemainingAmount(coupon.getPrice()); if (!coupon.checkIsFree()) { + // 有价卡 try { WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.setTenantId(user.getTenantId()); @@ -714,12 +715,36 @@ public class WxOrderServiceImpl implements WxOrderService { } catch (Exception e) { logger.error("payOrder not found:" + e.getMessage()); } - fee = payOrder.getPayAmount() - payOrder.getShareAmount(); cardInfo.setTransactionId(payOrder.getTransactionId()); - cardInfo.setShareFeeAmount(payOrder.getShareAmount()); - cardInfo.setRemainingShareFeeAmount(payOrder.getShareAmount()); - cardInfo.setRateAmount(payOrder.getRateAmount()); + if (payOrder.getShareAmount() != null) { + // 开启分账 + fee = payOrder.getPayAmount() - payOrder.getShareAmount(); + cardInfo.setShareFeeAmount(payOrder.getShareAmount()); + cardInfo.setRemainingShareFeeAmount(payOrder.getShareAmount()); + cardInfo.setRateAmount(payOrder.getRateAmount()); + } else { + // 未开启分账 + WxPayAccount payAccount = null; + WxPayAccount payAccountQ = new WxPayAccount(); + payAccountQ.setTenantId(cardInfo.getTenantId()); + try { + payAccount = wxPayAccountMapper.selectOne(new QueryWrapper<>(payAccountQ)); + fee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRate(), false); + Integer shareAmount = payOrder.getPayAmount() - fee; + cardInfo.setShareFeeAmount(shareAmount); + cardInfo.setRemainingShareFeeAmount(shareAmount); + if(payAccount.getRealRate() != null) { + int iRealChargeFee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRealRate(), true); + if(fee > iRealChargeFee) { + cardInfo.setRateAmount(fee - iRealChargeFee); + } + } + } catch (Exception e) { + logger.error("获取payAccount error: " + cardInfo.getTenantId()); + } + } } else { + // 免费卡 cardInfo.setShareFeeAmount(0); cardInfo.setRemainingShareFeeAmount(0); cardInfo.setRateAmount(0); From f1502c812b8fc430e96a4a21e233f892b52cc9f0 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 11 Oct 2019 13:28:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[=E6=B6=88=E8=B4=B9=E5=8D=A1][=E4=BF=AE?= =?UTF-8?q?=E6=94=B9]:=E6=9C=89=E4=BB=B7=E5=8D=A1=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=97=A0=E5=88=86=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/iformall/domain/po/WxPayAccount.java | 2 +- .../com/iformall/service/impl/WxCardSpendServiceImpl.java | 2 +- .../java/com/iformall/service/impl/WxPayOrderServiceImpl.java | 4 ++-- .../java/com/iformall/service/impl/WxSubsidyServiceImpl.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java index 6f4973de0..694d07d35 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java @@ -44,6 +44,6 @@ public class WxPayAccount extends BaseEntity { return notifyUrl + "/subsidyPay"; } - public boolean isShare() { return share > 0; } + public boolean checkShare() { return share > 0; } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java index 02316e683..8efabe9e1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -241,7 +241,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { } } - if (payAccount.isShare()) { + if (payAccount.checkShare()) { // 9. 分账 try { shareForCardPay(record.getTenantId(), record.getCardId(), record.getOrderId(), record.getId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 2c88f4ac7..7acd45999 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -169,7 +169,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); } WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); - if (payAccount.getShare().intValue() > 0) { + if (payAccount.checkShare()) { isShare = EnumPayShare.YES; } @@ -433,7 +433,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); } WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); - if (payAccount.getShare().intValue() > 0) { + if (payAccount.checkShare()) { isShare = EnumPayShare.YES; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxSubsidyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxSubsidyServiceImpl.java index 66fa7d8d3..06db1696d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxSubsidyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxSubsidyServiceImpl.java @@ -91,7 +91,7 @@ public class WxSubsidyServiceImpl implements WxSubsidyService { WxAppinfo appInfo = wxAppinfoService.getCAppInfo(user.getTenantId()); // 2. 获取payAccount WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); - if (payAccount.getShare().intValue() > 0) { + if (payAccount.checkShare()) { isShare = EnumPayShare.YES; } // 3. 补贴订单