From b3d1411517baca17d92dcfe3a0933cdc342b3145 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 16 五月 2026 11:52:41 +0800
Subject: [PATCH] Merge branch '1.1' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 276 +++++++++++++++++++++++++++++++++---------------------
1 files changed, 169 insertions(+), 107 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index 1232329..5475beb 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -21,10 +21,8 @@
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.dto.order.GetOrderNumDto;
-import com.xiaopeng.api.dto.order.HistoryEndPointsDto;
-import com.xiaopeng.api.dto.order.HistoryStartPointsDto;
-import com.xiaopeng.api.dto.order.PopOrderDto;
+import com.xiaopeng.api.dto.order.*;
+import com.xiaopeng.api.dto.payFront.*;
import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
import com.xiaopeng.api.dto.statistics.DailyCountDTO;
import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO;
@@ -61,6 +59,7 @@
import com.xiaopeng.api.vo.operation.NearestNextVo;
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.api.vo.order.*;
+import com.xiaopeng.api.vo.payFront.*;
import com.xiaopeng.api.vo.order.FareBreakdownVo;
import com.xiaopeng.api.vo.payFront.CreditOrderCreateVo;
import com.xiaopeng.api.vo.payFront.CreditPaySignQueryVo;
@@ -78,6 +77,7 @@
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.DateUtils;
import com.xiaopeng.common.core.utils.GeodesyUtil;
+import com.xiaopeng.common.core.utils.OrderCodeUtil;
import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.common.core.web.domain.BaseModel;
import com.xiaopeng.common.core.web.page.PageInfo;
@@ -3353,105 +3353,110 @@
public R payment(XpOrderPayDto dto, String uid) {
+ XpOrder order = this.getById(dto.getOrderId());
+
HashMap<String, Object> resultMap = new HashMap<>();
// 1.0 免密 //查询是否开通免密
// 1先查用户是否申请 申请了拿到通过的businessOrderId
-// boolean signed = false;
-// CreditPaySignQueryDto creditPaySignQueryDto = new CreditPaySignQueryDto();
-// creditPaySignQueryDto.setUid(Long.valueOf(uid));
-// creditPaySignQueryDto.setBusinessId("xp-robotaxi");
-// creditPaySignQueryDto.setCategory("009001");
-// creditPaySignQueryDto.setBusinessOrderId("");
-// R<CreditPaySignQueryVo> creditPaySignQueryVoR = xpPayFrontClient.queryCreditPaySign(creditPaySignQueryDto);
-// if (creditPaySignQueryVoR.getCode()==200) {
-// CreditPaySignQueryVo data = creditPaySignQueryVoR.getData();
-// // 查看是否有签约的
-// long count = data.getSignList().stream().filter(e -> e.getStatus().equals("VALID")).count();
-// if (count > 0){
-// signed = true;
-// }
-// }
-//
-//
-// if(signed){
-// // y已签约 1.信用下单
-// CreditOrderCreateDto creditOrderCreateDto = new CreditOrderCreateDto();
-// creditOrderCreateDto.setUid(Long.valueOf(uid));
-// creditOrderCreateDto.setBusinessId("xp-robotaxi");
-// creditOrderCreateDto.setCategory("xp_robotaxi_api");
-// creditOrderCreateDto.setBusinessOrderId("");
-// creditOrderCreateDto.setSubject("009001");
-// creditOrderCreateDto.setPayType("13");
-//
-//
-// // 信用下单
-// ArrayList<CreditOrderCreateDto.PostPayment> postPayments = new ArrayList<>(1);
-// CreditOrderCreateDto.PostPayment postPayment = new CreditOrderCreateDto.PostPayment();
-// postPayment.setName("收费标准");
-// postPayment.setDescription("行程价格动态浮动,具体详情可在费用详情或计价规则查看");
-// postPayments.add(postPayment);
-// creditOrderCreateDto.setPostPayments(postPayments);
-// R<CreditOrderCreateVo> creditOrderCreateVoR = xpPayFrontClient.createCreditOrder(creditOrderCreateDto);
-// if(creditOrderCreateVoR.getCode()==200){
-// CreditOrderCreateVo data = creditOrderCreateVoR.getData();
-// resultMap.put("status", 1);
-// resultMap.put("value", data);
-// return R.ok(resultMap);
-// }
-//
-// }else {
-//
-// // 未签约
-// // 调用预下单接口
-// XpOrder order = this.getById(dto.getOrderId());
-// CreditPrecreateDto creditPrecreateDto = new CreditPrecreateDto();
-// creditPrecreateDto.setUid(uid);
-// creditPrecreateDto.setBizId("xp-robotaxi");
-// creditPrecreateDto.setBizOrderId("");
-// creditPrecreateDto.setPayScene(99);
-// creditPrecreateDto.setAmount(order.getOrderMoney().multiply(new BigDecimal(100)).intValue());
-// creditPrecreateDto.setCategory("009001");
-// creditPrecreateDto.setTitle("信用下单");
-// creditPrecreateDto.setDetail("信用下单");
-//
-// HashMap<String, String> businessExtend = new HashMap<>();
-// businessExtend.put("returnUrl", "");
-// businessExtend.put("notifyUrl", "");
-// creditPrecreateDto.setBusinessExtend(businessExtend);
-//
-// R<CreditPrecreateVo> creditPrecreateVoR = xpPayFrontClient.precreate(creditPrecreateDto);
-// if (creditPrecreateVoR.getCode()==200) {
-// CreditPrecreateVo data = creditPrecreateVoR.getData();
-// resultMap.put("status", 2);
-// resultMap.put("value", data);
-// return R.ok(resultMap);
-// }
-// }
+ boolean signed = false;
+ CreditPaySignQueryDto creditPaySignQueryDto = new CreditPaySignQueryDto();
+ creditPaySignQueryDto.setUid(Long.valueOf(uid));
+ creditPaySignQueryDto.setBusinessId("xp-robotaxi");
+ creditPaySignQueryDto.setCategory("009001");
+ creditPaySignQueryDto.setBusinessOrderId(OrderCodeUtil.getOrderCode("MMZF"));
+ R<CreditPaySignQueryVo> creditPaySignQueryVoR = xpPayFrontClient.queryCreditPaySign(creditPaySignQueryDto);
+ if (creditPaySignQueryVoR.getCode()==200) {
+ CreditPaySignQueryVo data = creditPaySignQueryVoR.getData();
+ // 查看是否有签约的
+ long count = data.getSignList().stream().filter(e -> e.getStatus().equals("VALID")).count();
+ if (count > 0){
+ signed = true;
+ }
+ }
+
+
+ if(signed){
+ // y已签约 1.信用下单
+ CreditOrderCreateDto creditOrderCreateDto = new CreditOrderCreateDto();
+ creditOrderCreateDto.setUid(Long.valueOf(uid));
+ creditOrderCreateDto.setBusinessId("xp-robotaxi");
+ creditOrderCreateDto.setCategory("009001");
+ creditOrderCreateDto.setBusinessOrderId("");
+ creditOrderCreateDto.setSubject("小鹏集团|robotaxi");
+ creditOrderCreateDto.setPayType("13");
+
+
+ // 信用下单
+ ArrayList<CreditOrderCreateDto.PostPayment> postPayments = new ArrayList<>(1);
+ CreditOrderCreateDto.PostPayment postPayment = new CreditOrderCreateDto.PostPayment();
+ postPayment.setName("收费标准");
+ postPayment.setDescription("行程价格动态浮动,具体详情可在费用详情或计价规则查看");
+ postPayments.add(postPayment);
+ creditOrderCreateDto.setPostPayments(postPayments);
+ R<CreditOrderCreateVo> creditOrderCreateVoR = xpPayFrontClient.createCreditOrder(creditOrderCreateDto);
+ if(creditOrderCreateVoR.getCode()==200){
+ CreditOrderCreateVo data = creditOrderCreateVoR.getData();
+ resultMap.put("status", 1);
+ resultMap.put("value", data);
+
+ order.setPayType(3);
+ order.setAuthOrderId(data.getAuthOrderId());
+
+ return R.ok(resultMap);
+ }
+
+ }else {
+
+ // 未签约
+ // 调用预下单接口
+ CreditPrecreateDto creditPrecreateDto = new CreditPrecreateDto();
+ creditPrecreateDto.setUid(uid);
+ creditPrecreateDto.setBizId("xp-robotaxi");
+ creditPrecreateDto.setBizOrderId("");
+ creditPrecreateDto.setPayScene(99);
+ creditPrecreateDto.setAmount(order.getOrderMoney().multiply(new BigDecimal(100)).intValue());
+ creditPrecreateDto.setCategory("009001");
+ creditPrecreateDto.setTitle("信用下单");
+ creditPrecreateDto.setDetail("信用下单");
+
+ HashMap<String, String> businessExtend = new HashMap<>();
+ businessExtend.put("returnUrl", "");
+ businessExtend.put("notifyUrl", "");
+ creditPrecreateDto.setBusinessExtend(businessExtend);
+
+ R<CreditPrecreateVo> creditPrecreateVoR = xpPayFrontClient.precreate(creditPrecreateDto);
+ if (creditPrecreateVoR.getCode()==200) {
+ CreditPrecreateVo data = creditPrecreateVoR.getData();
+ resultMap.put("status", 2);
+ resultMap.put("value", data);
+ return R.ok(resultMap);
+ }
+ }
// mvp版本不做支付 使用优惠券抵扣为0元订单处理 处理订单状态即可
- XpOrder order = this.getById(dto.getOrderId());
- order.setStatus(9);
- order.setAppUserId(null);
- if (order.getCouponId() != null) {
- UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
- useUserCouponDto.setUserCouponId(order.getCouponId());
- R<BigDecimal> decimalR = xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
- if (decimalR.getCode() == 200) {
- order.setCouponMoney(decimalR.getData());
- if (order.getCouponMoney().compareTo(order.getOrderMoney()) > 0) {
- order.setPayMoney(BigDecimal.ZERO);
- order.setCouponMoney(order.getOrderMoney());
- } else {
- order.setPayMoney(order.getOrderMoney().subtract(decimalR.getData()));
- }
- }
- }
- baseMapper.updateById(order);
- bootCommonService.setCache_orderStatus(order.getId(), order, null);
- return R.ok();
+// XpOrder order = this.getById(dto.getOrderId());
+// order.setStatus(9);
+// order.setAppUserId(null);
+// if (order.getCouponId() != null) {
+// UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
+// useUserCouponDto.setUserCouponId(order.getCouponId());
+// R<BigDecimal> decimalR = xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
+// if (decimalR.getCode() == 200) {
+// order.setCouponMoney(decimalR.getData());
+// if (order.getCouponMoney().compareTo(order.getOrderMoney()) > 0) {
+// order.setPayMoney(BigDecimal.ZERO);
+// order.setCouponMoney(order.getOrderMoney());
+// } else {
+// order.setPayMoney(order.getOrderMoney().subtract(decimalR.getData()));
+// }
+// }
+// }
+// baseMapper.updateById(order);
+// bootCommonService.setCache_orderStatus(order.getId(), order, null);
+ return R.fail();
}
/**
@@ -3858,13 +3863,13 @@
vo.setVin(vehicle.getVehicleVin());
vo.setPassengerUid(order.getAppUserId());
BaseVehicleUserDto deliver = bluetoothUnlockClient.deliver(vo);
-// if(null == deliver){
-// throw new ServiceException("下发蓝牙token失败");
-// }
-// if(deliver.getCode() != 0){
-// log.error("下发蓝牙token失败:{} {}", deliver.getMsg(), order.getOrderNumber());
-// throw new ServiceException(deliver.getMsg());
-// }
+ if(null == deliver){
+ throw new ServiceException("下发蓝牙token失败");
+ }
+ if(deliver.getCode() != 0){
+ log.error("下发蓝牙token失败:{} {}", deliver.getMsg(), order.getOrderNumber());
+ throw new ServiceException(deliver.getMsg());
+ }
log.info("下发蓝牙token成功:{} {}", deliver.getData(), order.getOrderNumber());
}
@@ -4732,6 +4737,59 @@
return vo;
}
+ /**
+ * 查询订单状态
+ * @param orderId
+ * @return
+ */
+ @Override
+ public OrderStatusFromOrderIdVo queryOrderStatusFromOrderId(Long orderId) {
+
+ XpOrder order = this.getById(orderId);
+ if(order==null){
+ return null;
+ }
+ if(order.getPayType()==3){
+ // 免密查询 如果成功则调用结算
+ CreditOrderQueryDto dto = new CreditOrderQueryDto();
+ dto.setBusinessOrderId(OrderCodeUtil.getOrderCode("MMZF"));
+ dto.setAuthOrderId(order.getAuthOrderId());
+ dto.setPayType("13");
+ R<CreditOrderQueryVo> creditOrderQueryVoR = xpPayFrontClient.queryCreditOrder(dto);
+ if(creditOrderQueryVoR.getCode()==200){
+ CreditOrderQueryVo creditOrderQueryVo = creditOrderQueryVoR.getData();
+ if(creditOrderQueryVo.getCreditOrderStatus().equals("DONE")){
+ // 订单确认 需要吊起扣款
+ CreditOrderWxPayDto creditOrderWxPayDto = new CreditOrderWxPayDto();
+ creditOrderWxPayDto.setBusinessOrderId(OrderCodeUtil.getOrderCode("MMZF"));
+ creditOrderWxPayDto.setAuthOrderId(order.getAuthOrderId());
+ creditOrderWxPayDto.setPayCallbackUrl("13");
+ creditOrderWxPayDto.setTotalAmount( order.getOrderMoney().multiply(BigDecimal.valueOf(100)).longValue());
+ creditOrderWxPayDto.setSubject("小鹏集团|robotaxi");
+ creditOrderWxPayDto.setPayType("13");
+
+ List<CreditOrderCreateDto.PostPayment> postPayments = new ArrayList<>();
+ CreditOrderCreateDto.PostPayment postPayment = new CreditOrderCreateDto.PostPayment();
+ postPayment.setName("收费标准");
+ postPayment.setDescription("行程价格动态浮动,具体详情可在费用详情或计价规则查看");
+ postPayments.add(postPayment);
+ creditOrderWxPayDto.setPostPayments(postPayments);
+ R<CreditOrderWxPayVo> creditOrderWxPayVoR = xpPayFrontClient.creditOrderWxPay(creditOrderWxPayDto);
+ }else if(creditOrderQueryVo.getCreditOrderStatus().equals("CREATED") || creditOrderQueryVo.getCreditOrderStatus().equals("DOING")){
+
+ }
+ }
+
+ }else {
+ // 微信支付也需要查询下
+
+ }
+ OrderStatusFromOrderIdVo orderStatusFromOrderIdVo = new OrderStatusFromOrderIdVo();
+ orderStatusFromOrderIdVo.setOrderId(order.getId());
+ orderStatusFromOrderIdVo.setStatus(order.getStatus());
+ return orderStatusFromOrderIdVo;
+ }
+
/**
* 发票列表
@@ -4741,18 +4799,22 @@
@Override
public List<XpInvoiceVo> invoiceList(XpOrderInvoiceQuery query) {
- // 格式:yyyyMM 转yyyy-MM
- query.setStartTime(query.getStartTime().substring(0, 4) + "-" + query.getStartTime().substring(4, 6));
- query.setEndTime(query.getEndTime().substring(0, 4) + "-" + query.getEndTime().substring(4, 6));
+ DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyyMM");
+ LocalDateTime startTime = YearMonth.parse(query.getStartTime(), monthFormatter)
+ .atDay(1)
+ .atStartOfDay();
+ LocalDateTime endTime = YearMonth.parse(query.getEndTime(), monthFormatter)
+ .atEndOfMonth()
+ .atTime(23, 59, 59);
List<XpOrder> list =null;
// 通过uid 和时间查出来数据 先判断是否传入了分页
if (query.getPageNo()!=null && query.getPageSize()!=null) {
Page<XpOrder> page = new Page<>(query.getPageNo(), query.getPageSize());
- Page<XpOrder> orderPage = this.baseMapper.selectPage(page, new LambdaQueryWrapper<XpOrder>().eq(XpOrder::getAppUserId, Long.valueOf(query.getUid())).ge(XpOrder::getStatus, 9).between(BaseModel::getCreateTime, query.getStartTime(), query.getEndTime()));
+ Page<XpOrder> orderPage = this.baseMapper.selectPage(page, new LambdaQueryWrapper<XpOrder>().eq(XpOrder::getAppUserId, Long.valueOf(query.getUid())).ge(XpOrder::getStatus, 9).between(BaseModel::getCreateTime, startTime, endTime));
list = orderPage.getRecords();
}else {
- list = this.baseMapper.selectList(new LambdaQueryWrapper<XpOrder>().eq(XpOrder::getAppUserId, Long.valueOf(query.getUid())).ge(XpOrder::getStatus, 9).between(BaseModel::getCreateTime, query.getStartTime(), query.getEndTime()));
+ list = this.baseMapper.selectList(new LambdaQueryWrapper<XpOrder>().eq(XpOrder::getAppUserId, Long.valueOf(query.getUid())).ge(XpOrder::getStatus, 9).between(BaseModel::getCreateTime, startTime, endTime));
}
if(list.isEmpty()){
--
Gitblit v1.7.1