From a4b592d7de38d36362aa06f1fc1e8bd790456586 Mon Sep 17 00:00:00 2001 From: Lixiaodi <xiaodi.li@yoho.cn> Date: Thu, 22 Nov 2018 10:41:56 +0800 Subject: [PATCH] 修改记账分总账分账 --- order/src/main/java/com/yohoufo/order/service/MerchantOrderPaymentService.java | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/order/src/main/java/com/yohoufo/order/service/MerchantOrderPaymentService.java b/order/src/main/java/com/yohoufo/order/service/MerchantOrderPaymentService.java index 63ead4d..9c68417 100644 --- a/order/src/main/java/com/yohoufo/order/service/MerchantOrderPaymentService.java +++ b/order/src/main/java/com/yohoufo/order/service/MerchantOrderPaymentService.java @@ -157,6 +157,9 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService { swd.setType(SellerWalletDetail.Type.RE_CHARGE.getValue()); swd.setCreateTime(TimeUtils.getTimeStampSecond()); swd.setUpdateTime(0); + swd.setAvailAmount(orderInfo.getAmount()); + swd.setLockAmount(BigDecimal.ZERO); + swd.setIsSet(1); JSONObject att = new JSONObject(); att.put("payment", orderInfo.getPayment()); swd.setAttachValue(att.toJSONString()); @@ -389,7 +392,7 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService { // 支付保证金:明细记录+orders_pay记录 public void useEarnestAddWalletDetail(SellerWallet sw, List<OrderInfo> orderList) { for(OrderInfo oi : orderList) { - SellerWalletDetail swd = addWalletDetail(sw, oi.getOrderCode(), oi.getAmount(), 1, SellerWalletDetail.Type.PUBLISH); + SellerWalletDetail swd = addWalletDetail(sw, oi.getOrderCode(), oi.getAmount(), SellerWalletDetail.Type.PUBLISH); addOrdersPay(swd); } } @@ -403,7 +406,7 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService { } else { t = SellerWalletDetail.Type.SUBTRACT_PRICE; } - SellerWalletDetail swd = addWalletDetail(sw, oi.getOrderCode(), oi.getAmount(), 1, t); + SellerWalletDetail swd = addWalletDetail(sw, oi.getOrderCode(), oi.getAmount(), t); changePriceUpdateOrdersPay(swd); } } @@ -411,7 +414,7 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService { // 下架商品(卖家+系统):明细记录+退款表记录 public void unshelveAddWalletDetail(SellerWallet sw, List<OrderInfo> orderList, SellerWalletDetail.Type type) { for(OrderInfo oi : orderList) { - SellerWalletDetail swd = addWalletDetail(sw, oi.getOrderCode(), oi.getAmount(), 1, type); + SellerWalletDetail swd = addWalletDetail(sw, oi.getOrderCode(), oi.getAmount(), type); addRefundRecord(swd, oi.getAmount()); } } @@ -465,6 +468,9 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService { swd.setIsBatch(0); swd.setCreateTime(TimeUtils.getTimeStampSecond()); swd.setUpdateTime(0); + swd.setAvailAmount(BigDecimal.ZERO); + swd.setLockAmount(BigDecimal.ZERO); + swd.setIsSet(1); logger.info("商家退出,退还保证金,钱包归零处理,增加扣减明细,bean={}", swd); sellerWalletDetailMapper.insert(swd); @@ -472,7 +478,7 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService { } // 增加:明细 - private SellerWalletDetail addWalletDetail(SellerWallet sw, long orderCode, BigDecimal amount, Integer isBatch, SellerWalletDetail.Type type) { + private SellerWalletDetail addWalletDetail(SellerWallet sw, long orderCode, BigDecimal amount, SellerWalletDetail.Type type) { Integer uid = sw.getUid(); SellerWalletDetail swd = new SellerWalletDetail(); swd.setOrderCode(orderCode); @@ -480,7 +486,7 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService { swd.setUid(uid); swd.setWalletId(sw.getId()); swd.setAmount(amount); - swd.setIsBatch(isBatch); + swd.setIsBatch(1); swd.setCreateTime(TimeUtils.getTimeStampSecond()); swd.setUpdateTime(0); logger.info("增加保证金明细({}),bean={}", type.getName(), swd); @@ -511,34 +517,39 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService { return null; } - sw.setAmount(null); - sw.setLockAmount(null); + BigDecimal beforeAvailAmount = sw.getAmount(); + BigDecimal beforeLockAmount = sw.getLockAmount(); + BigDecimal availAmount = null; + BigDecimal lockAmount = null; // 减去保证金 if (type == SellerWalletDetail.Type.PUBLISH || type == SellerWalletDetail.Type.ADD_PRICE || type == SellerWalletDetail.Type.SUBTRACT_PRICE) { - sw.setAmount(money.multiply(new BigDecimal("-1"))); - sw.setLockAmount(money); + availAmount = money.multiply(new BigDecimal("-1")); + lockAmount = money; } else if (type == SellerWalletDetail.Type.SELLER_OFF || type == SellerWalletDetail.Type.SYSTEM_OFF || type == SellerWalletDetail.Type.APPRAISE_OK || type == SellerWalletDetail.Type.BUYER_CANCEL_DELIVERY || type == SellerWalletDetail.Type.BUYER_CANCEL_NO_DELIVERY) { // 增加保证金 - sw.setAmount(money); - sw.setLockAmount(money.multiply(new BigDecimal("-1"))); + availAmount = money; + lockAmount = money.multiply(new BigDecimal("-1")); } else if (type == SellerWalletDetail.Type.SELLER_CANCEL || type == SellerWalletDetail.Type.SELLER_OVER_TIME || type == SellerWalletDetail.Type.APPRAISE_FAIL) { // 处罚保证金 - sw.setLockAmount(money.multiply(new BigDecimal("-1"))); + lockAmount = money.multiply(new BigDecimal("-1")); } + + sw.setAmount(availAmount); + sw.setLockAmount(lockAmount); sw.setUpdateTime(TimeUtils.getTimeStampSecond()); logger.info("{}修改钱包表余额,bean={}", sw); if (sellerWalletMapper.addMoney(sw) == 0) { - logger.error(message + "失败,(并发)更新表返回0,uid={}", uid); - CommonAlarmEventPublisher.publish(message + "失败", "ufo.order.changePrice", "(并发)更新表返回0,uid=" + uid + ", 金额为:"+ money); + logger.error(message + "失败,(并发)更新表返回0,bean={}", sw); + CommonAlarmEventPublisher.publish(message + "失败", "ufo.order.changePrice", "(并发)更新表返回0,uid=" + uid + ", bean为:"+ sw); return null; } logger.info("{}修改钱包表余额成功,bean={}", sw); @@ -550,9 +561,14 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService { swd.setWalletId(sw.getId()); swd.setAmount(money); swd.setIsBatch(0); - swd.setAttachValue(attach); swd.setCreateTime(TimeUtils.getTimeStampSecond()); swd.setUpdateTime(0); + ////////////////////////// + swd.setAttachValue(attach); + swd.setAvailAmount(availAmount == null ? beforeAvailAmount : beforeAvailAmount.add(availAmount)); + swd.setLockAmount(lockAmount == null ? beforeLockAmount : beforeLockAmount.add(lockAmount)); + swd.setIsSet(0); + ///////////////////////// logger.info("增加钱包明细汇总记录,bean={}", swd); sellerWalletDetailMapper.insert(swd); logger.info("增加钱包明细汇总记录成功,bean={}", swd); -- libgit2 0.24.0