From af1bdf94021985a93f7e95854915653b6a2e9580 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 20 四月 2026 11:50:10 +0800
Subject: [PATCH] update
---
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java | 9 +++
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java | 97 ++++++++++++++++++++------------
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/OrderCrossCityOnBehalfWarpper.java | 5 +
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java | 9 +++
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java | 4
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPaymentRecordService.java | 2
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 51 +++++++++++++++++
7 files changed, 136 insertions(+), 41 deletions(-)
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
index eff5bb1..95eb650 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
@@ -97,6 +97,15 @@
orderCrossCityService.payOrderCrossCityCallback(Integer.valueOf(split[0]), orderId, 1);
return buildCbyzxCallbackResponse(0, "success");
}
+ if (outTradeNo.startsWith("onBehalf_")) {
+ String legacyOutTradeNo = outTradeNo.substring("onBehalf_".length());
+ String[] split = legacyOutTradeNo.split("_");
+ if (split.length < 2) {
+ return buildCbyzxCallbackResponse(1, "invalid onBehalf out_trade_no");
+ }
+ orderCrossCityService.payOrderCrossCityCallback(Integer.valueOf(split[0]), orderId, 1);
+ return buildCbyzxCallbackResponse(0, "success");
+ }
if (outTradeNo.startsWith("reassign_")) {
String legacyOutTradeNo = outTradeNo.substring("reassign_".length());
reassignService.payReassign(legacyOutTradeNo, orderId, 1);
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
index a297726..33080fa 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -510,13 +510,13 @@
@ResponseBody
- @RequestMapping(value = "/api/lineSite/queryDriver", method = RequestMethod.POST)
+ @RequestMapping(value = "/api/lineSite/queryDriverList", method = RequestMethod.POST)
@ApiOperation(value = "根据线路id获取其他线路排班数据", tags = {"司机端-跨城"}, notes = "")
@ApiImplicitParams({
@ApiImplicitParam(value = "订单", name = "orderId", required = true, dataType = "String"),
@ApiImplicitParam(value = "查询天(2020-09-03)", name = "day", required = true, dataType = "string")
})
- public ResultUtil<List<LineSiteWarpper>> queryDriver(String orderId){
+ public ResultUtil<List<LineSiteWarpper>> queryDriverList(String orderId){
try {
List<Map<String, Object>> list = reassignService.queryDriver(orderId);
return ResultUtil.success(LineSiteWarpper.getLineSiteWarppers(list));
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java
index df082c6..4846a04 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java
@@ -84,7 +84,6 @@
private String adminUrl;
-
/**
* 获取服务中页面订单详情
* @param orderId
@@ -97,11 +96,11 @@
@ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
- public ResultUtil<OrderWarpper> queryOrderInfo(Integer orderId){
+ public ResultUtil<OrderWarpper> queryOrderInfo(Integer orderId) {
try {
Map<String, Object> map = orderCrossCityService.queryOrderInfo(orderId);
return ResultUtil.success(OrderWarpper.getOrderWarpper(map));
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
return ResultUtil.runErr();
}
@@ -125,16 +124,16 @@
@ApiImplicitParam(value = "备注", name = "remark", required = false, dataType = "string"),
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
- public ResultUtil reassignOrderCrossCityReassign(Reassign reassign, String orderIds, HttpServletRequest request){
+ public ResultUtil reassignOrderCrossCityReassign(Reassign reassign, String orderIds, HttpServletRequest request) {
try {
Integer uid = driverService.getUserIdFormRedis(request);
- if(null == uid){
+ if (null == uid) {
return ResultUtil.tokenErr();
}
return reassignService.saveData_(reassign, orderIds, uid, null);
- }catch (SystemException s){
+ } catch (SystemException s) {
return ResultUtil.error(s.getMsg());
- } catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
return ResultUtil.runErr();
}
@@ -153,11 +152,11 @@
@ApiImplicitParam(value = "跨城订单id", name = "orderId", required = true, dataType = "int"),
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
- public ResultUtil<OrderCrossCityInfoWrapper> queryOrderCrossCityInfo(Integer orderId){
+ public ResultUtil<OrderCrossCityInfoWrapper> queryOrderCrossCityInfo(Integer orderId) {
try {
Map<String, Object> map = orderCrossCityService.queryOrderCrossCityInfo(orderId);
return ResultUtil.success(OrderCrossCityInfoWrapper.getOrderInfoWarpper(map));
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
return ResultUtil.runErr();
}
@@ -175,11 +174,11 @@
@ApiImplicitParam(value = "跨城订单id", name = "orderId", required = true, dataType = "int"),
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
- public ResultUtil setOrderCrossCitySort(Integer orderId){
+ public ResultUtil setOrderCrossCitySort(Integer orderId) {
try {
orderCrossCityService.setOrderCrossCitySort(orderId);
return ResultUtil.success();
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
return ResultUtil.runErr();
}
@@ -198,21 +197,20 @@
@ApiImplicitParams({
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
- public ResultUtil<BaseWarpper> orderCrossCity(OrderCrossCityWarpper orderCrossCityWarpper, HttpServletRequest request){
+ public ResultUtil<BaseWarpper> orderCrossCity(OrderCrossCityWarpper orderCrossCityWarpper, HttpServletRequest request) {
try {
Integer uid = driverService.getUserIdFormRedis(request);
- if(null == uid){
+ if (null == uid) {
return ResultUtil.tokenErr();
}
return orderCrossCityService.orderCrossCity(orderCrossCityWarpper, uid);
- }catch (SystemException se){
+ } catch (SystemException se) {
return ResultUtil.error(se.getMessage());
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
return ResultUtil.runErr();
}
}
-
/**
@@ -222,7 +220,7 @@
*/
@ResponseBody
@PostMapping("/base/order/generatePay")
- public void generatePay(HttpServletRequest request, HttpServletResponse response){
+ public void generatePay(HttpServletRequest request, HttpServletResponse response) {
try {
// Map<String, String> map = icbcPayUtil.generatePayCallback(request);
// if(null != map){
@@ -247,11 +245,10 @@
// }
// }
// }
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
}
-
/**
@@ -272,23 +269,22 @@
@ApiImplicitParam(value = "支付端(1=用户APP端,2=司机APP端,3=用户小程序端)", name = "type", required = true, dataType = "int"),
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
- public ResultUtil payTaxiOrder(Integer payType, Integer orderId, Integer orderType, Integer couponId, Integer type, HttpServletRequest request){
+ public ResultUtil payTaxiOrder(Integer payType, Integer orderId, Integer orderType, Integer couponId, Integer type, HttpServletRequest request) {
try {
Integer uid = driverService.getUserIdFormRedis(request);
- if(null == uid){
+ if (null == uid) {
return ResultUtil.tokenErr();
}
- switch (orderType){
+ switch (orderType) {
case 3:
return orderCrossCityService.payCrossCityOrder(payType, orderId, couponId, type);
}
return ResultUtil.success(new Object());
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
return ResultUtil.runErr();
}
}
-
/**
@@ -297,16 +293,16 @@
*/
@ResponseBody
@PostMapping("/base/wxPayCrossCity")
- public void wxPayCrossCity(HttpServletRequest request, HttpServletResponse response){
+ public void wxPayCrossCity(HttpServletRequest request, HttpServletResponse response) {
try {
Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
- if(null != map){
+ if (null != map) {
System.err.println(JSON.toJSONString(map));
String out_trade_no = map.get("out_trade_no");
String transaction_id = map.get("transaction_id");
String result = map.get("result");
- if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(transaction_id)){
- System.out.println("完成订单微信支付回调"+map);
+ if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(transaction_id)) {
+ System.out.println("完成订单微信支付回调" + map);
PrintWriter out = response.getWriter();
out.write(result);
out.flush();
@@ -322,14 +318,14 @@
// throw new RuntimeException("该订单不存在");
// }
// cloudPay(orderCrossCity.getDriverId(),map.get("total_fee"),map.get("transaction_id"),1);
- switch (type){
+ switch (type) {
case 3:
orderCrossCityService.payOrderCrossCityCallback(id, transaction_id, 1);
break;
}
}
}
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
}
@@ -337,25 +333,25 @@
@ResponseBody
@PostMapping("/base/aliPayCrossCity")
- public void aliPayCrossCity(HttpServletRequest request, HttpServletResponse response){
+ public void aliPayCrossCity(HttpServletRequest request, HttpServletResponse response) {
try {
System.err.println("支付宝回调----->");
Map<String, String> map = payMoneyUtil.alipayCallback(request);
System.err.println(JSON.toJSONString(map));
- if(null != map){
+ if (null != map) {
String out_trade_no = map.get("out_trade_no");
String trade_no = map.get("trade_no");
- if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(trade_no)){
+ if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(trade_no)) {
String[] split = out_trade_no.split("_");
Integer id = Integer.valueOf(split[0]);
Integer type = Integer.valueOf(split[1]);
- switch (type){
+ switch (type) {
case 3:
orderCrossCityService.payOrderCrossCityCallback(id, trade_no, 2);
break;
}
String uid = map.get("passback_params");
- System.out.println("完成订单支付宝支付回调"+map);
+ System.out.println("完成订单支付宝支付回调" + map);
// TODO 司机云闪付 跨城出行支付宝回调支付充值
// OrderCrossCity orderCrossCity = orderCrossCityService.selectById(id);
// if(Objects.isNull(orderCrossCity)){
@@ -369,7 +365,7 @@
out.close();
}
}
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
}
@@ -430,7 +426,7 @@
post.form("file", file);
HttpResponse execute = post.execute();
int status = execute.getStatus();
- if(200 != status){
+ if (200 != status) {
throw new RuntimeException("上传图片异常");
}
// 6. 返回结果
@@ -477,4 +473,31 @@
}
+ /**
+ * 代客下单支付
+ */
+ @ResponseBody
+ @PostMapping("/api/orderCrossCity/orderOnBehalfPay")
+ @ApiOperation(value = "【202601】代客下单支付", tags = {"司机端-服务中"}, notes = "代客下单支付")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ @ApiImplicitParam(value = "crossCityOrderId", name = "crossCityOrderId", required = true, dataType = "int"),
+ @ApiImplicitParam(value = "1微信支付 2乘客 3线下", name = "type", required = true, dataType = "int")
+ })
+ public ResultUtil orderOnBehalfPay(int crossCityOrderId,int type, HttpServletRequest request) {
+ try {
+ // 1. 验证Token获取司机ID
+ Integer driverId = driverService.getUserIdFormRedis(request);
+ if (null == driverId) {
+ return ResultUtil.tokenErr();
+ }
+ return orderCrossCityService.orderOnBehalfPay(crossCityOrderId,type,driverId);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+
+ }
+
+
}
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java
index 7ffd502..824220e 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java
@@ -177,4 +177,13 @@
* @throws Exception
*/
ResultUtil<BaseWarpper> orderCrossCityOnBehalf(OrderCrossCityOnBehalfWarpper warpper, Integer driverId) throws Exception;
+
+ /**
+ * 代客下单支付
+ * @param crossCityOrderId
+ * @param type
+ * @return
+ */
+ ResultUtil orderOnBehalfPay(int crossCityOrderId, int type,Integer driverId) throws Exception;
+
}
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index c55bab2..ea0559b 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -1541,4 +1541,55 @@
baseWarpper.setId(orderCrossCity.getId());
return ResultUtil.success(baseWarpper);
}
+
+ @Override
+ public ResultUtil orderOnBehalfPay(int crossCityOrderId, int type, Integer driverId) throws Exception {
+ OrderCrossCity order = orderCrossCityMapper.selectById(crossCityOrderId);
+ if (order == null) {
+ return ResultUtil.error("订单不存在");
+ }
+ if (!order.getDriverId().equals(driverId)) {
+ return ResultUtil.error("您没有权限支付此订单");
+ }
+ if (order.getState() != 7) {
+ return ResultUtil.error("订单不在待支付,无法完成订单");
+ }
+ if (type == 1) {
+ UserInfo userInfo = userInfoMapper.selectById(order.getUserId());
+ if (userInfo == null) {
+ return ResultUtil.error("乘客不存在");
+ }
+ if (ToolUtil.isEmpty(userInfo.getAppletsOpenId())) {
+ return ResultUtil.errorOpenId("乘客未绑定微信小程序openid,无法发起微信支付");
+ }
+ String outTradeNo = buildCbyzxOnBehalfOutTradeNo(crossCityOrderId);
+ JSONObject response = cbyzxOrderPayHelper.createOrder(
+ order.getUserId(),
+ userInfo.getAppletsOpenId(),
+ outTradeNo,
+ order.getOrderMoney()
+ );
+ if (!cbyzxOrderPayHelper.isCreateSuccess(response)) {
+ return ResultUtil.error(cbyzxOrderPayHelper.extractMessage(response), response);
+ }
+ paymentRecordService.saveData(1, order.getDriverId(), 2, crossCityOrderId, 3, 1, order.getOrderMoney(), outTradeNo, 1);
+ return ResultUtil.success(response);
+ } else if (type == 3) {
+ order.setState(2);
+ orderCrossCityMapper.updateById(order);
+
+
+ //添加交易明细
+ transactionDetailsService.saveData(driverId, "跨城出行订单", order.getOrderMoney(), 2, 1, 2, 3, order.getId());
+ return ResultUtil.success();
+ }
+ return ResultUtil.error("支付失败");
+ }
+
+ /**
+ * 创博优代客支付单号,增加业务前缀便于统一回调路由。
+ */
+ private String buildCbyzxOnBehalfOutTradeNo(Integer orderId) throws Exception {
+ return "onBehalf_" + orderId + "_3_" + UUIDUtil.getRandomCode(5);
+ }
}
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/OrderCrossCityOnBehalfWarpper.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/OrderCrossCityOnBehalfWarpper.java
index 1df8dd7..1757e47 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/OrderCrossCityOnBehalfWarpper.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/OrderCrossCityOnBehalfWarpper.java
@@ -49,7 +49,10 @@
@ApiModelProperty(value = "下车点地址", required = true, dataType = "string")
private String endAddress;
- @ApiModelProperty(value = "其他费用(远程费、高速费、等待费等),>=0,保留两位小数", required = false, dataType = "BigDecimal")
+ @ApiModelProperty(value = "最终费用(2.0改 不传则接口获取 传则使用这个金额)(远程费、高速费、等待费等),>=0,保留两位小数", required = false, dataType = "BigDecimal")
private BigDecimal otherFee;
+ @ApiModelProperty(value = "座位编号(1,3,4)", required = true, dataType = "string")
+ private String seatNumber;
+
}
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPaymentRecordService.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPaymentRecordService.java
index 9882f0b..78e2aba 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPaymentRecordService.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPaymentRecordService.java
@@ -6,6 +6,7 @@
public interface IPaymentRecordService extends IService<PaymentRecord> {
+
/**
* 添加数据
* @param orderId 订单id
@@ -18,7 +19,6 @@
*/
void saveData(Integer category, Integer userId, Integer type, Integer orderId, Integer orderType, Integer payType,
Double amount, String code, Integer state) throws Exception;
-
/**
* 获取数据
--
Gitblit v1.7.1