From 24f7f046f8854d63839ad52d0cff34ea45a0f449 Mon Sep 17 00:00:00 2001 From: gongzuming <gongzuming> Date: 星期二, 12 十一月 2024 13:10:17 +0800 Subject: [PATCH] 优化 --- src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java | 69 +++++++++++++++++++++++++++------- 1 files changed, 55 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java b/src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java index 5f9e44a..7fe5f0c 100644 --- a/src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java +++ b/src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java @@ -74,6 +74,12 @@ @Autowired private OrderItemSettlementMapper orderItemSettlementMapper; + @Autowired + private TransferMapper transferMapper; + + @Autowired + private TransferDetailMapper transferDetailMapper; + public Page<OrderSettlementListDTO> selectSettlementList(Page page, OrderSettlementQueryDTO dto){ dto.setStartDate(parseLocalDateTime(dto.getStartDateStr(), true)); dto.setEndDate(parseLocalDateTime(dto.getEndDateStr(), false)); @@ -115,21 +121,30 @@ if(settlement == null){ throw new ValidationException("结算单不存在"); } + String status = settlement.getStatus(); + if(Constants.SETTLEMENT_STATUS.PROCESSING.name().equals(status)){ + throw new ValidationException("结算中,不用重复结算"); + } + if(Constants.SETTLEMENT_STATUS.COMPLETED.name().equals(status)){ + throw new ValidationException("结算成功,不用重复结算"); + } String type = settlement.getType(); + + String name = ""; + if(Constants.SETTLEMENT_TYPE.supplier.name().equals(type)){ + Supplier s = supplierMapper.selectOne(new QueryWrapper<Supplier>() + .eq("user_id", settlement.getUserId())); + name = "供应商" + s.getName(); + } else { + Partner p = partnerMapper.selectOne(new QueryWrapper<Partner>() + .eq("user_id", settlement.getUserId())); + name = "合伙人" + p.getName(); + } UserWechat wechat = wechatMapper.selectOne(new QueryWrapper<UserWechat>() .eq("user_id", settlement.getUserId())); if(wechat == null){ - String msg; - if(Constants.SETTLEMENT_TYPE.supplier.name().equals(type)){ - Supplier s = supplierMapper.selectOne(new QueryWrapper<Supplier>() - .eq("user_id", settlement.getUserId())); - msg = "供应商" + s.getName() + "未绑定账号无法结算"; - } else { - Partner p = partnerMapper.selectOne(new QueryWrapper<Partner>() - .eq("user_id", settlement.getUserId())); - msg = "合伙人" + p.getName() + "未绑定账号无法结算"; - } + String msg = name + "未绑定账号无法结算"; log.error(msg); throw new ValidationException(msg); } @@ -138,8 +153,7 @@ LocalDateTime now = LocalDateTime.now(); String day = format(now, "yyyy-MM-dd"); - String remarks = Constants.SETTLEMENT_TYPE.supplier.name().equals(type) - ? "供应商账单结算" : "合伙人账单结算"; + String remarks = name + "账单结算"; String appId = Constants.SETTLEMENT_TYPE.supplier.name().equals(type) ? PyamentV3Configurer.supplier_app_id : PyamentV3Configurer.partner_app_id; @@ -174,10 +188,37 @@ } settlement.setTransferTime(LocalDateTime.now()); - settlement.setStatus(Constants.SETTLEMENT_STATUS.COMPLETED.name()); + settlement.setStatus(Constants.SETTLEMENT_STATUS.PROCESSING.name()); settlement.update(SecurityUtils.getUserId()); settlementMapper.updateById(settlement); + } + + public void updateSettlementStatus(String transferId){ + Transfer t = transferMapper.selectById(transferId); + if("FINISHED".equals(t.getStatus())){ + OrderSettlement settlement = settlementMapper.selectOne(new QueryWrapper<OrderSettlement>() + .eq("transfer_id", transferId)); + if(settlement == null){ + return; + } + String transferDetailId = settlement.getTransferDetailId(); + TransferDetail td = transferDetailMapper.selectById(transferDetailId); + if(td == null){ + log.warn("未找到对应明细"); + return; + } + String dStatus = td.getStatus(); + if("SUCCESS".equals(dStatus)){ + settlement.setStatus(Constants.SETTLEMENT_STATUS.COMPLETED.name()); + settlement.update("sys"); + settlementMapper.updateById(settlement); + } else if ("FAIL".equals(dStatus)){ + settlement.setStatus(Constants.SETTLEMENT_STATUS.FAILED.name()); + settlement.update("sys"); + settlementMapper.updateById(settlement); + } + } } public void doSettlement(){//弃用 @@ -716,7 +757,7 @@ detail.setOrderId(oi.getOrderId()); detail.setOrderItemId(itemId); - detail.setPrice(oi.getMarkupPartner()); + detail.setPrice(getAmount(oi.getMarkupPartner())); detail.setNum(oi.getNum()); detail.setTotalAmount(detail.getPrice().multiply(new BigDecimal(detail.getNum()))); detail.setCheckFee(new BigDecimal(0)); -- Gitblit v1.9.3