diff --git a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java index 3c15443..9593453 100644 --- a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java @@ -283,6 +283,26 @@ public class OrderServiceImpl implements OrderService { rentOrder.setAmount(rentCarOrderAmount); rentOrder.setCreatedAt(LocalDateTime.now()); rentOrder.setPaymentMethod(paymentType); + + // 起支付返回预支付信息 + UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = null; + + //发起支付 + if(StringUtils.equalsIgnoreCase(userInfoDTO.getMiniProgramType(), MiniProgramTypeEnum.WECHAT.getType())){ + RentCarRuleDTO rentCarRuleDTO = carInteg.getRentCarRuleByCarRuleId(orderMainPO.getRentCarRuleId()); + PaymentRequest paymentRequest = new PaymentRequest(); + paymentRequest.setCompanyId(orderMainPO.getOperatorId()); + paymentRequest.setOutTradeNo(rentOrder.getPaymentId()); + paymentRequest.setOpenId(userInfoDTO.getWechatOpenid()); + paymentRequest.setAttach(orderMainPO.getOperatorId().toString()); + paymentRequest.setSpbillCreateIp("127.0.0.1"); + paymentRequest.setBody(rentCarRuleDTO.getRuleName()); +// paymentRequest.setTotalFee(rentCarOrderAmount.multiply(new BigDecimal(100)).intValue()); + paymentRequest.setTotalFee(10); + unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest); + // TODO 其他支付类型 + } + orderSubRepo.save(rentOrder); LocalDateTime nowTime = LocalDateTime.now(); @@ -297,11 +317,11 @@ public class OrderServiceImpl implements OrderService { updateWrapper.set(OrderMainPO::getRenewalTimes, orderMainPO.getRenewalTimes()+1); updateWrapper.set(OrderMainPO::getEndRentTime, newEndRentTime); updateWrapper.set(OrderMainPO::getOrderAmount, orderMainPO.getOrderAmount().add(rentCarOrderAmount)); + updateWrapper.set(OrderMainPO::getOrderStatus, OrderStatusEnum.RERENT_WAIT_PAY.getCode()); updateWrapper.eq(OrderMainPO::getOrderNo, rentCarOrderReq.getOrderNo()); orderMainRepo.update(updateWrapper); - // TODO 发起支付返回预支付信息 - UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = new UnifiedPaymentInfoDTO(); + //返回订单信息 OrderDTO orderDTO = getOrderInfoByOrderNo(rentCarOrderReq.getOrderNo()); @@ -365,7 +385,7 @@ public class OrderServiceImpl implements OrderService { log.info("开始取消订单"); OrderMainPO orderMainPO = queryOrderMainPoByOrderNo(payOrderReq.getOrderNo(), "0"); if(Objects.nonNull(orderMainPO)){ - if(!OrderStatusEnum.WAIT_PAY.getCode().equalsIgnoreCase(orderMainPO.getOrderStatus())&&OrderStatusEnum.RERENT_WAIT_PAY.getCode().equalsIgnoreCase(orderMainPO.getOrderStatus())){ + if(!OrderStatusEnum.WAIT_PAY.getCode().equalsIgnoreCase(orderMainPO.getOrderStatus())){ throw new BizException("订单非待支付状态,不能取消"); } @@ -443,19 +463,38 @@ public class OrderServiceImpl implements OrderService { rentOrder.setSuborderType(SubOrderTypeEnum.OVERDUE.getCode()); rentOrder.setAmount(overDueAmount); rentOrder.setCreatedAt(LocalDateTime.now()); + rentOrder.setPayStatus(PayStatusEnum.USERPAYING.getCode()); rentOrder.setPaymentMethod(paymentType); + // 发起支付返回预支付信息 + UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = null; + + //发起支付 + if(StringUtils.equalsIgnoreCase(userInfoDTO.getMiniProgramType(), MiniProgramTypeEnum.WECHAT.getType())){ + RentCarRuleDTO rentCarRuleDTO = carInteg.getRentCarRuleByCarRuleId(orderMainPO.getRentCarRuleId()); + PaymentRequest paymentRequest = new PaymentRequest(); + paymentRequest.setCompanyId(orderMainPO.getOperatorId()); + paymentRequest.setOutTradeNo(rentOrder.getPaymentId()); + paymentRequest.setOpenId(userInfoDTO.getWechatOpenid()); + paymentRequest.setAttach(orderMainPO.getOperatorId().toString()); + paymentRequest.setSpbillCreateIp("127.0.0.1"); + paymentRequest.setBody(rentCarRuleDTO.getRuleName()); +// paymentRequest.setTotalFee(overDueAmount.multiply(new BigDecimal(100)).intValue()); + paymentRequest.setTotalFee(10); + unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest); + // TODO 其他支付类型 + } + orderSubRepo.save(rentOrder); //更新订单状态及信息 LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - //TODO 这里应该是支付以后再将状态改为租车中,这里先改为租车中便于演示流程 - updateWrapper.set(OrderMainPO::getOrderStatus, OrderStatusEnum.RENT_ING.getCode()); + //将订单状态改为续租待或逾期待支付状态 + updateWrapper.set(OrderMainPO::getOrderStatus, OrderStatusEnum.RERENT_WAIT_PAY.getCode()); updateWrapper.set(OrderMainPO::getOrderAmount, orderMainPO.getOrderAmount().add(overDueAmount)); updateWrapper.eq(OrderMainPO::getOrderNo, rentCarOrderReq.getOrderNo()); orderMainRepo.update(updateWrapper); - // TODO 发起支付返回预支付信息 - UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = new UnifiedPaymentInfoDTO(); + //返回订单信息 OrderDTO orderDTO = getOrderInfoByOrderNo(rentCarOrderReq.getOrderNo());