| | |
| | | import com.xiaopeng.api.dto.account.UseUserCouponDto; |
| | | import com.xiaopeng.api.dto.automaticPilot.PushOrderDto; |
| | | import com.xiaopeng.api.dto.automaticPilot.VehicleEventDTO; |
| | | import com.xiaopeng.api.dto.frdXfipEvent.XpFrdXfipEventCouponLineDTO; |
| | | import com.xiaopeng.api.dto.frdXfipEvent.XpFrdXfipEventIngestContentDTO; |
| | | import com.xiaopeng.api.dto.frdXfipEvent.XpFrdXfipEventIngestReqDTO; |
| | | import com.xiaopeng.api.dto.map.OrderRouteAndFareDto; |
| | | import com.xiaopeng.api.dto.map.RouteAndFareDto; |
| | | import com.xiaopeng.api.dto.operation.LonLatDto; |
| | |
| | | import com.xiaopeng.api.feignClient.account.XpAppUserCouponClient; |
| | | import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient; |
| | | import com.xiaopeng.api.feignClient.automaticPilot.VehicleBuriedPointClient; |
| | | import com.xiaopeng.api.feignClient.frdXfipEvent.XpFrdXfipEventClient; |
| | | import com.xiaopeng.api.feignClient.maintenance.XpTaskRuleClient; |
| | | import com.xiaopeng.api.feignClient.map.XpMapClient; |
| | | import com.xiaopeng.api.feignClient.operation.*; |
| | |
| | | import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType; |
| | | import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderStatus; |
| | | import com.xiaopeng.api.vo.automaticPilot.protobuf.TaskActionType; |
| | | import com.xiaopeng.api.vo.frdXfipEvent.XpFrdXfipEventIngestRespVO; |
| | | import com.xiaopeng.api.vo.operation.NearestNextVo; |
| | | import com.xiaopeng.api.vo.operation.RouteVo; |
| | | import com.xiaopeng.api.vo.order.*; |
| | |
| | | |
| | | @Resource |
| | | private XpPayFrontClient xpPayFrontClient; |
| | | |
| | | @Resource |
| | | private XpFrdXfipEventClient xpFrdXfipEventClient; |
| | | |
| | | @Value("${robotaxi.appId:xp_robotaxi_api}") |
| | | private String appid; |
| | |
| | | creditOrderCreateDto.setPayType("13"); |
| | | creditOrderCreateDto.setPayCallbackUrl(""); |
| | | |
| | | creditOrderCreateDto.setBusinessExtendData("{\"mainOrderId\":\"" +order.getOrderNumber() + "\"}"); |
| | | |
| | | |
| | | |
| | | // 信用下单 |
| | | ArrayList<CreditOrderCreateDto.PostPayment> postPayments = new ArrayList<>(1); |
| | |
| | | order.setPayType(3); |
| | | order.setAuthOrderId(data.getAuthOrderId()); |
| | | order.setBusinessOrderId(creditOrderCreateDto.getBusinessOrderId()); |
| | | order.setMainOrderId(order.getOrderNumber()); |
| | | |
| | | return R.ok(resultMap); |
| | | } |
| | |
| | | CreditPrecreateDto creditPrecreateDto = new CreditPrecreateDto(); |
| | | creditPrecreateDto.setUid(uid); |
| | | creditPrecreateDto.setBizId("xp-robotaxi"); |
| | | creditPrecreateDto.setBizOrderId(""); |
| | | creditPrecreateDto.setBizOrderId(OrderCodeUtil.getOrderCode("MMZF")); |
| | | creditPrecreateDto.setPayScene(99); |
| | | creditPrecreateDto.setAmount(order.getOrderMoney().multiply(new BigDecimal(100)).intValue()); |
| | | creditPrecreateDto.setCategory("009001"); |
| | |
| | | businessExtend.put("notifyUrl", ""); |
| | | creditPrecreateDto.setBusinessExtend(businessExtend); |
| | | |
| | | creditPrecreateDto.setExtBusinessData2("{\"mainOrderId\":\"" +order.getOrderNumber() + "\"}"); |
| | | |
| | | R<CreditPrecreateVo> creditPrecreateVoR = xpPayFrontClient.precreate(creditPrecreateDto); |
| | | if (creditPrecreateVoR.getCode()==200) { |
| | | CreditPrecreateVo data = creditPrecreateVoR.getData(); |
| | | resultMap.put("status", 2); |
| | | resultMap.put("value", data); |
| | | |
| | | order.setPayType(1); |
| | | order.setBusinessOrderId(creditPrecreateDto.getBizOrderId()); |
| | | order.setMainOrderId(order.getOrderNumber()); |
| | | this.updateById(order); |
| | | |
| | | return R.ok(resultMap); |
| | | } |
| | | } |
| | |
| | | postPayments.add(postPayment); |
| | | creditOrderWxPayDto.setPostPayments(postPayments); |
| | | R<CreditOrderWxPayVo> creditOrderWxPayVoR = xpPayFrontClient.creditOrderWxPay(creditOrderWxPayDto); |
| | | }else if(creditOrderQueryVo.getCreditOrderStatus().equals("CREATED") || creditOrderQueryVo.getCreditOrderStatus().equals("DOING")){ |
| | | |
| | | } |
| | | } |
| | | |
| | | }else { |
| | | // 微信支付也需要查询下 |
| | | PayOrderQueryDto queryDto = new PayOrderQueryDto(); |
| | | queryDto.setBizId("xp-robotaxi"); |
| | | queryDto.setBizOrderId(order.getBusinessOrderId()); |
| | | R<PayOrderQueryVo> payOrderQueryVoR = xpPayFrontClient.queryPayOrder(queryDto); |
| | | if(payOrderQueryVoR.getCode()==200){ |
| | | PayOrderQueryVo payOrderQueryVo = payOrderQueryVoR.getData(); |
| | | if(payOrderQueryVo.getPayStatus()==1){ |
| | | // 支付成功 |
| | | order.setStatus(9); |
| | | order.setAppUserId(null); |
| | | order.setAuthOrderId(payOrderQueryVo.getPayOrderId()); |
| | | |
| | | if(payOrderQueryVo.getPayType()==13){ |
| | | order.setPayType(3); |
| | | } |
| | | |
| | | this.updateById(order); |
| | | |
| | | // 财务推送 |
| | | xpFrdXfipEventPush(order,payOrderQueryVo.getAmount(),payOrderQueryVo.getPayOrderId()); |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | OrderStatusFromOrderIdVo orderStatusFromOrderIdVo = new OrderStatusFromOrderIdVo(); |
| | |
| | | R<CreditOrderWxPayVo> creditOrderWxPayVoR = xpPayFrontClient.creditOrderWxPay(dto); |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 对接财务数据推送 |
| | | * @param order |
| | | */ |
| | | @Override |
| | | public void xpFrdXfipEventPush(XpOrder order,Long payFee,String orderId) { |
| | | |
| | | if(order.getFrdXfipEvenetStatus()==1){ |
| | | return; |
| | | } |
| | | |
| | | XpFrdXfipEventIngestReqDTO xpFrdXfipEventIngestReqDTO = new XpFrdXfipEventIngestReqDTO(); |
| | | xpFrdXfipEventIngestReqDTO.setEventId("RT_04"); |
| | | xpFrdXfipEventIngestReqDTO.setBusinessLine("RT"); |
| | | xpFrdXfipEventIngestReqDTO.setReqId(OrderCodeUtil.getOrderCode("FRDXFOPEVENT")); |
| | | |
| | | XpFrdXfipEventIngestContentDTO xpFrdXfipEventIngestContentDTO = new XpFrdXfipEventIngestContentDTO(); |
| | | xpFrdXfipEventIngestContentDTO.setCompanyCode("8000"); |
| | | xpFrdXfipEventIngestContentDTO.setOrderType("SELF_OPERATED"); |
| | | xpFrdXfipEventIngestContentDTO.setBusinessOrderNo(order.getMainOrderId()); |
| | | xpFrdXfipEventIngestContentDTO.setSubOrderNo(order.getBusinessOrderId()); |
| | | xpFrdXfipEventIngestContentDTO.setPaymentType("POST_PAY"); |
| | | xpFrdXfipEventIngestContentDTO.setOrderStatus("结算完成"); |
| | | xpFrdXfipEventIngestContentDTO.setSettlementDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); |
| | | xpFrdXfipEventIngestContentDTO.setMaterialNo("XE2000398"); |
| | | xpFrdXfipEventIngestContentDTO.setBusinessPartnerCode("5004901"); |
| | | xpFrdXfipEventIngestContentDTO.setCurrency("CNY"); |
| | | |
| | | xpFrdXfipEventIngestContentDTO.setConfirmedRevenueAmount(order.getOrderMoney()); |
| | | xpFrdXfipEventIngestContentDTO.setCashCollectedAmount(new BigDecimal(payFee).divide(BigDecimal.valueOf(100), 2,RoundingMode.HALF_UP)); |
| | | |
| | | xpFrdXfipEventIngestContentDTO.setCouponConsumedTotal(order.getCouponMoney()==null?BigDecimal.ZERO:order.getCouponMoney()); |
| | | |
| | | xpFrdXfipEventIngestContentDTO.setPaymentFlowNo(orderId); |
| | | xpFrdXfipEventIngestContentDTO.setPaymentFlowAmount(new BigDecimal(payFee).divide(BigDecimal.valueOf(100), 2,RoundingMode.HALF_UP)); |
| | | xpFrdXfipEventIngestContentDTO.setPaymentChannel("WECHAT"); |
| | | |
| | | if(order.getCouponId()!=null){ |
| | | ArrayList<XpFrdXfipEventCouponLineDTO> list = new ArrayList<>(1); |
| | | XpFrdXfipEventCouponLineDTO xpFrdXfipEventCouponLineDTO = new XpFrdXfipEventCouponLineDTO(); |
| | | xpFrdXfipEventCouponLineDTO.setCouponId(String.valueOf(order.getCouponId())); |
| | | xpFrdXfipEventCouponLineDTO.setCouponType("ACTIVITY"); |
| | | // xpFrdXfipEventCouponLineDTO.setCouponIssuerCompanyCode("5004901"); |
| | | // xpFrdXfipEventCouponLineDTO.setSelfBorneAmount(order.getCouponMoney()); |
| | | // xpFrdXfipEventCouponLineDTO.setThirdPartyBorneAmount(BigDecimal.ZERO); |
| | | xpFrdXfipEventCouponLineDTO.setCouponDeductionAmount(order.getCouponMoney()); |
| | | xpFrdXfipEventCouponLineDTO.setCouponIssuerCompanyCode("8000"); |
| | | list.add(xpFrdXfipEventCouponLineDTO); |
| | | xpFrdXfipEventIngestContentDTO.setCouponLines(list); |
| | | } |
| | | |
| | | xpFrdXfipEventIngestReqDTO.setContent(xpFrdXfipEventIngestContentDTO); |
| | | R<XpFrdXfipEventIngestRespVO> ingest = xpFrdXfipEventClient.ingest(xpFrdXfipEventIngestReqDTO); |
| | | if(ingest.getCode()==200){ |
| | | XpFrdXfipEventIngestRespVO data = ingest.getData(); |
| | | if(!data.getReceiveStatus().equals("REJECTED")){ |
| | | // 推送成功 |
| | | order.setFrdXfipEvenetStatus(1); |
| | | order.setFrdXfipEvenetId(data.getEventId()); |
| | | }else { |
| | | // 推送失败 |
| | | order.setFrdXfipEvenetStatus(2); |
| | | order.setFrdXfipEvenetId(data.getEventId()); |
| | | } |
| | | log.info("xpFrdXfipEventPush:{}",data); |
| | | }else { |
| | | // 重试1次 |
| | | ingest = xpFrdXfipEventClient.ingest(xpFrdXfipEventIngestReqDTO); |
| | | XpFrdXfipEventIngestRespVO data = ingest.getData(); |
| | | if(ingest.getCode()==200){ |
| | | if(!data.getReceiveStatus().equals("REJECTED")){ |
| | | // 推送成功 |
| | | order.setFrdXfipEvenetStatus(1); |
| | | order.setFrdXfipEvenetId(data.getEventId()); |
| | | }else { |
| | | // 推送失败 |
| | | order.setFrdXfipEvenetStatus(2); |
| | | order.setFrdXfipEvenetId(data.getEventId()); |
| | | } |
| | | log.info("xpFrdXfipEventPush:{}",data); |
| | | }else { |
| | | // 推送失败 |
| | | order.setFrdXfipEvenetStatus(2); |
| | | order.setFrdXfipEvenetId(data.getEventId()); |
| | | } |
| | | log.info("xpFrdXfipEventPush:{}",ingest.getMsg()); |
| | | } |
| | | order.setAppUserId(null); |
| | | updateById(order); |
| | | } |
| | | |
| | | |
| | |
| | | itinerary.setCity(xpOrder.getCityName()); |
| | | itinerary.setStartPoint(xpOrder.getStartAddress()); |
| | | itinerary.setEndPoint(xpOrder.getEndAddress()); |
| | | itinerary.setMileage(xpOrder.getMileageKilometers().toString()); |
| | | itinerary.setMileage(xpOrder.getMileageKilometers()!=null ? xpOrder.getMileageKilometers().toString() :"0"); |
| | | itinerary.setAmount(xpOrder.getOrderMoney()); |
| | | |
| | | xpInvoiceVo.setItinerary(itinerary); |