| | |
| | | @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)); |
| | |
| | | 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); |
| | | } |
| | |
| | | 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; |
| | |
| | | } |
| | | |
| | | 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(){//弃用 |
| | |
| | | |
| | | 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)); |