From 410e261a251e07b17bba8aa9b098eb21c34de5cb Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 30 七月 2025 16:30:53 +0800 Subject: [PATCH] 添加证联集成 --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentOrderRequest.java | 57 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentInfoCallback.java | 35 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java | 58 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java | 62 + DriverQYTTravel/guns-admin/src/main/resources/application.yml | 119 +++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java | 95 ++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java | 2 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java | 10 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfo.java | 31 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyTravelItineraryRequest.java | 39 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TravelItinerary.java | 64 ++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallback.java | 27 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java | 53 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfo.java | 31 DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java | 47 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java | 595 ++++++++++++++++++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateTravelItineraryRequest.java | 43 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java | 15 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfo.java | 45 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 13 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java | 41 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java | 4 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java | 1 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeRequest.java | 31 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java | 84 +- MessagePushTravel/src/main/java/com/sinata/push/util/echo/DiscardServerHandler.java | 6 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreate.java | 19 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoRequest.java | 23 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoDataRequest.java | 19 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfoData.java | 42 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetTravelItineraryListRequest.java | 47 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfoRequest.java | 39 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ListPage.java | 27 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfoRequest.java | 15 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java | 2 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderInfo.java | 19 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java | 7 37 files changed, 1,802 insertions(+), 65 deletions(-) diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java index 21605f4..4d6a28b 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java @@ -746,6 +746,7 @@ if(null == position){ position = new DriverPosition(); } + position.setDriverId(orderPosition.getDriverId()); position.setPoint(point); mongoTemplate.save(position); //处理业务上的功能 diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index b7aa424..ce50214 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -16,6 +16,8 @@ import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.*; +import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.CreateTravelItineraryRequest; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import org.springframework.beans.factory.annotation.Autowired; @@ -239,7 +241,14 @@ // 是否推广订单 Integer promotion = isPromotion(uid); orderPrivateCar.setPromotion(promotion); - + UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId()); + //调三方订单中心创建行程单 + CreateTravelItineraryRequest request = new CreateTravelItineraryRequest(); + request.setOrderNo("PR" + orderPrivateCar.getId()); + request.setCustomerId(userInfo.getOnconUUID()); + request.setDriverId(driver.getEmpId().toString()); + String travelItinerary = OrderUtil.createTravelItinerary(request); +// orderPrivateCar.set this.updateById(orderPrivateCar); //处理摆渡车的情况 @@ -319,7 +328,7 @@ }).start(); } - + return ResultUtil.success(orderPrivateCar.getId()); } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java index 556a81e..8554b90 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java @@ -146,6 +146,11 @@ */ private Date bindExpireDate; + /** + * 中台用户ID + */ + @TableField("onconUUID") + private String onconUUID; public Integer getBindDriverId() { return bindDriverId; @@ -354,7 +359,15 @@ public void setAppletsOpenId(String appletsOpenId) { this.appletsOpenId = appletsOpenId; } - + + public String getOnconUUID() { + return onconUUID; + } + + public void setOnconUUID(String onconUUID) { + this.onconUUID = onconUUID; + } + @Override public String toString() { return "UserInfo{" + diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java index 72db972..a67412b 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java @@ -509,10 +509,10 @@ public ResultUtil grabOrder(Integer orderId, Integer orderType, Integer uid) throws Exception { //专车和出租是批量下单,所以这里需要将两种类型的抢单操作通过一个锁来一起控制 if(1 == orderType || 2 == orderType){ -// RLock lock = redissonClient.getLock("grabOrder:" + orderId); -// if(!lock.tryLock()){ -// return ResultUtil.error("抢单失败,请稍后重试"); -// } + Boolean lock = redisTemplate.opsForValue().setIfAbsent("grabOrder:" + orderId, "1"); + if(!lock){ + return ResultUtil.error("抢单失败,请稍后重试"); + } try { if(1 == orderType){ return orderPrivateCarService.grabOrder(orderId, uid); @@ -523,7 +523,7 @@ }catch (Exception e){ e.printStackTrace(); }finally { -// lock.unlock(); + redisTemplate.delete("grabOrder:" + orderId); } } switch (orderType){ diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java index 6b0eeaf..e893605 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java @@ -57,7 +57,7 @@ private Map<String, Timer> taskMap = new HashMap<>();//存储定时推送的定时器 - private final String socket_uri = "http://172.21.35.142:6000"; + private final String socket_uri = "http://127.0.0.1:6000"; // qyt 改派重新推单 diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java new file mode 100644 index 0000000..b2f30ba --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java @@ -0,0 +1,595 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.google.gson.Gson; +import com.open.common.util.OpenApiClient; +import com.open.common.util.SystemParameterNames; +import com.stylefeng.guns.modular.system.util.UUIDUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.*; +import lombok.extern.slf4j.Slf4j; + +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author zhibing.pu + * @Date 2025/7/24 9:34 + */ +@Slf4j +public class OrderUtil { + + + public static void main(String[] args) { + //创建行程 +// CreateTravelItineraryRequest request = new CreateTravelItineraryRequest(); +// request.setScene("TRAFFIC"); +// request.setPartnerId("522700"); +// request.setOrderNo("01234567890"); +// request.setCustomerId("11448156"); +// request.setDriverId("11448158"); +// request.setSupplierShopId("981100006005951"); +// request.setServiceType(1); +// String travelItinerary = createTravelItinerary(request); +// System.err.println(travelItinerary);//1950363840206753792 + + //修改行程状态 +// ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); +// request.setScene("TRAFFIC"); +// request.setPartnerId("522700"); +// request.setOrderId("1950363840206753792"); +// request.setStatus(7); +// request.setDriverId("11448158"); +// request.setSupplierShopId("981100006005951"); +// Boolean aBoolean = modifyTravelItinerary(request); + + //订单创建及拉起支付 +// TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData(); +// tradeOrderCreateData.setScene("TRAFFIC"); +// tradeOrderCreateData.setPartnerId("522700"); +// tradeOrderCreateData.setTreatShopId("11448158"); +// tradeOrderCreateData.setOrderAppId("52270015"); +// tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"0\"}"); +// tradeOrderCreateData.setCharge(new BigDecimal("0.01")); +// tradeOrderCreateData.setChannelSource("GRJYCXWXXCX"); +// tradeOrderCreateData.setOrderId("1950363840206753792"); +// tradeOrderCreateData.setOrderNo("01234567890"); +// tradeOrderCreateData.setCustomerId("11448156"); +// tradeOrderCreateData.setPayPartnerId("5400004"); +// tradeOrderCreateData.setPartnerPayId("1950363840206753792"); +// tradeOrderCreateData.setCurrency("RMB"); +// tradeOrderCreateData.setTotalFee("1"); +// tradeOrderCreateData.setRetUrl("pages/advoad-city-search/advoad-message/electronic-wait-pay/electronic-wait-pay"); +// tradeOrderCreateData.setClientIp("127.0.0.1"); +// tradeOrderCreateData.setNeedLoginFlag("N"); +// tradeOrderCreateData.setOrderDesc("出行订单支付"); +// tradeOrderCreateData.setAccessMode("APP"); +// +// List<GoodsInfoRequest> goodsInfo = new ArrayList<>(); +// GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest(); +// goodsInfoRequest.setId("981100006005901"); +// goodsInfoRequest.setSubAppId("wxcbad113185a243e1"); +// goodsInfoRequest.setSubOpenId("oVLur6yFtED8ruXBWUFKXjzXJ_BQ"); +// goodsInfoRequest.setProfitSharing("1"); +// goodsInfoRequest.setAreaInfo("520100"); +// goodsInfoRequest.setPayType("0"); +// goodsInfoRequest.setBusinessType("10408"); +// goodsInfo.add(goodsInfoRequest); +// tradeOrderCreateData.setGoodsInfo(goodsInfo); +// TradeOrderCreate tradeOrderCreate = tradeOrderCreate1(tradeOrderCreateData); +// System.err.println(tradeOrderCreate); + //TradeOrderCreate(orderInfo=OrderInfo(orderId=1950072223939842048, status=null), payInfo=PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=It5FPM1DUjzwIAin7zwiHvUANWKC6I5USCLE8EKoRkg%3D, payId=540000420250729000135600, status=null, payTime=null, payFee=null, paymentInfos=null), sign=525cb843b1eeb5a0451eeb5fbbe02f0f)) + + //查询支付单信息 +// GetPaymentInfoDataRequest getPaymentInfoDataRequest = new GetPaymentInfoDataRequest(); +// getPaymentInfoDataRequest.setPartnerId("5400004"); +// getPaymentInfoDataRequest.setPartnerPayId("1948685426689200128"); +// GetPaymentInfo getPaymentInfo = paymentInfo(getPaymentInfoDataRequest); +// System.err.println(getPaymentInfo); + + //拉起支付 +// TradePayOff1Data tradePayOff1Data = new TradePayOff1Data(); +// tradePayOff1Data.setPartnerId("5400004"); +// tradePayOff1Data.setScene("TRAFFIC"); +// tradePayOff1Data.setPartnerPayId("1948685426689200128"); +// tradePayOff1Data.setCurrency("RMB"); +// tradePayOff1Data.setTotalFee("1"); +// tradePayOff1Data.setRetUrl("/home/"); +// tradePayOff1Data.setClientIp("127.0.0.1"); +// tradePayOff1Data.setNeedLoginFlag("N"); +// tradePayOff1Data.setOrderDesc("出行订单支付"); +// tradePayOff1Data.setAccessMode("APP"); +// List<GoodsInfoRequest> goodsInfo = new ArrayList<>(); +// GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest(); +// goodsInfoRequest.setId("981100006005901"); +// goodsInfoRequest.setSubAppId("wxcbad113185a243e1"); +// goodsInfoRequest.setSubOpenId("oVLur6yFtED8ruXBWUFKXjzXJ_BQ"); +// goodsInfoRequest.setProfitSharing("1"); +// goodsInfoRequest.setAreaInfo("520100"); +// goodsInfoRequest.setPayType("0"); +// goodsInfoRequest.setBusinessType("10408"); +// goodsInfo.add(goodsInfoRequest); +// tradePayOff1Data.setGoodsInfo(goodsInfo); +// PayInfo payInfo = tradePayOff1(tradePayOff1Data); +// System.err.println(payInfo); + //PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=5nUBXayFpfZz%2FXUZiMu9LzeRXmqmlqaCS%2BHfu5udIt4%3D, payId=540000420250725000135549, status=null, payTime=null, payFee=null, paymentInfos=null), sign=8154ba2728280900b122c56352c1c7fe) + + + // (补偿单)拉起支付 +// TradePayOffData tradePayOffData = new TradePayOffData(); +// tradePayOffData.setPartnerId("5400004"); +// tradePayOffData.setScene("TRAFFIC"); +// tradePayOffData.setPartnerPayId("1948685426689200128"); +// tradePayOffData.setCurrency("RMB"); +// tradePayOffData.setTotalFee("1"); +// tradePayOffData.setRetUrl("/home/"); +// tradePayOffData.setClientIp("127.0.0.1"); +// tradePayOffData.setNeedLoginFlag("N"); +// tradePayOffData.setOrderDesc("出行订单支付"); +// tradePayOffData.setAccessMode("APP"); +// List<PaymentInfoRequest> paymentInfoRequests = new ArrayList<>(); +// PaymentInfoRequest paymentInfoRequest = new PaymentInfoRequest(); +// paymentInfoRequest.setPayModeId("501212"); +// paymentInfoRequests.add(paymentInfoRequest); +// tradePayOffData.setPaymentInfos(paymentInfoRequests); +// List<GoodsInfo> goodsInfo = new ArrayList<>(); +// GoodsInfo goodsInfo1 = new GoodsInfo(); +// goodsInfo1.setMerchantCode(""); +// goodsInfo1.setCustId(""); +// goodsInfo1.setCustName(""); +// goodsInfo1.setProfitSharing("1"); +// goodsInfo.add(goodsInfo1); +// tradePayOffData.setGoodsInfo(goodsInfo); +// PayInfo payInfo1 = tradePayOff(tradePayOffData); +// System.err.println(payInfo1); + + //订单创建 +// CreateOrderRequest createOrderRequest = new CreateOrderRequest(); +// createOrderRequest.setTreatShopId("11448158"); +// createOrderRequest.setOrderAppId("52270015"); +// createOrderRequest.setScene("TRAFFIC"); +// createOrderRequest.setPartnerId("522700"); +// createOrderRequest.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"0\"}"); +// createOrderRequest.setCharge(new BigDecimal("0.01")); +// createOrderRequest.setChannelSource("GRJYCXWXXCX"); +// createOrderRequest.setOrderId("1948685426689200128"); +// createOrderRequest.setOrderNo("0123456"); +// createOrderRequest.setCustomerId("11448156"); +// OrderInfo orderInfo = tradeOrderCreate(createOrderRequest); +// System.err.println(orderInfo); + + //行程单列表查询 +// GetTravelItineraryListRequest request = new GetTravelItineraryListRequest(); +// request.setScene("TRAFFIC"); +// request.setPartnerId("522700"); +// request.setCustomerId("11448156"); +// request.setOrderNo("0123456"); +// request.setDriverId("11448158"); +// ListPage<TravelItinerary> travelItineraryList = getTravelItineraryList(request); +// System.err.println(travelItineraryList); + + } + + /** + * 拉起支付 + * + * @param tradePayOff1Data + * @return + */ + public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data) { + TradeRequest request = new TradeRequest<TradePayOff1Data>(); + request.setSceneId("1911676727023968256"); + request.setAppId(QianYunTongProperties.appkey); + request.setConfigVersion(1); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(tradePayOff1Data); + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradePayOff"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + contentMap.put("content", new Gson().toJson(request)); + log.info("【拉起支付】请求地址:" + url); + log.info("【拉起支付】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【拉起支付】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if (!"000000".equals(resCode)) { + log.error("【拉起支付】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【拉起支付】失败:" + jsonObject.getString("resMsg")); + } + JSONObject busiResp = jsonObject.getJSONObject("busiResp"); + PayInfo payInfo = busiResp.getObject("payInfo", PayInfo.class); + return payInfo; + } + + /** + * 创建行程单 + * @param request + * @return 行程单ID + */ + public static String createTravelItinerary(CreateTravelItineraryRequest request){ + request.setScene("TRAFFIC"); + request.setPartnerId("522700"); + request.setSupplierShopId("981100006005951"); + request.setServiceType(1); + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/createTravelItinerary"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + contentMap.put("content", new Gson().toJson(request)); + log.info("【创建行程单】请求地址:" + url); + log.info("【创建行程单】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【创建行程单】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if(!"000000".equals(resCode)){ + log.error("【创建行程单】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【创建行程单】失败:" + jsonObject.getString("resMsg")); + } + return jsonObject.getString("busiResp"); + } + + + + /** + * 修改行程单 + * @param request + */ + public static Boolean modifyTravelItinerary(ModifyTravelItineraryRequest request){ + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/modifyTravelItinerary"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + contentMap.put("content", new Gson().toJson(request)); + log.info("【修改行程单】请求地址:" + url); + log.info("【修改行程单】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【修改行程单】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if(!"000000".equals(resCode)){ + log.error("【修改行程单】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【修改行程单】失败:" + jsonObject.getString("resMsg")); + } + return true; + } + + + /** + * 行程单列表查询 + * @param request + * @return + */ + public static ListPage<TravelItinerary> getTravelItineraryList(GetTravelItineraryListRequest request){ + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/getTravelItineraryList"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + contentMap.put("content", new Gson().toJson(request)); + log.info("【行程单列表查询】请求地址:" + url); + log.info("【行程单列表查询】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【行程单列表查询】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if(!"000000".equals(resCode)){ + log.error("【行程单列表查询】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【行程单列表查询】失败:" + jsonObject.getString("resMsg")); + } + JSONObject busiResp = jsonObject.getJSONObject("busiResp"); + Integer total = busiResp.getInteger("total"); + Integer pageNum = busiResp.getInteger("pageNum"); + Integer pageSize = busiResp.getInteger("pageSize"); + JSONArray list = busiResp.getJSONArray("list"); + List<TravelItinerary> travelItineraryList = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + TravelItinerary object = list.getObject(i, TravelItinerary.class); + travelItineraryList.add(object); + } + ListPage listPage = new ListPage<TravelItinerary>(); + listPage.setTotal(total); + listPage.setPageNum(pageNum); + listPage.setPageSize(pageSize); + listPage.setList(travelItineraryList); + return listPage; + } + + /** + * 订单创建及拉起支付 + * + * @param tradeOrderCreateData + * @return + */ + public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData) { + TradeRequest request = new TradeRequest<TradeOrderCreateData>(); + request.setSceneId("1945688132719169536"); + request.setAppId(QianYunTongProperties.appkey); + request.setConfigVersion(1); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(tradeOrderCreateData); + + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradeOrderCreate"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + contentMap.put("content", new Gson().toJson(request)); + log.info("【订单创建及拉起支付】请求地址:" + url); + log.info("【订单创建及拉起支付】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【订单创建及拉起支付】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if (!"000000".equals(resCode)) { + log.error("【订单创建及拉起支付】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【订单创建及拉起支付】失败:" + jsonObject.getString("resMsg")); + } + TradeOrderCreate busiResp = jsonObject.getObject("busiResp", TradeOrderCreate.class); + return busiResp; + } + + /** + * 订单创建 + * + * @param createOrderRequest + * @return + */ + public static OrderInfo tradeOrderCreate(CreateOrderRequest createOrderRequest) { + TradeRequest request = new TradeRequest<CreateOrderRequest>(); + request.setSceneId(QianYunTongProperties.sceneId); + request.setAppId(QianYunTongProperties.appkey); + request.setConfigVersion(1); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(createOrderRequest); + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradeOrderCreate"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + contentMap.put("content", new Gson().toJson(request)); + log.info("【订单创建】请求地址:" + url); + log.info("【订单创建】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【订单创建】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if (!"000000".equals(resCode)) { + log.error("【订单创建】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【订单创建】失败:" + jsonObject.getString("resMsg")); + } + JSONObject busiResp = jsonObject.getJSONObject("busiResp"); + OrderInfo orderInfo = busiResp.getObject("orderInfo", OrderInfo.class); + return orderInfo; + } + + /** + * (补偿单)拉起支付 + * + * @param tradePayOffData + * @return + */ + public static PayInfo tradePayOff(TradePayOffData tradePayOffData) { + TradeRequest request = new TradeRequest<TradePayOffData>(); + request.setSceneId("1774717104844095488"); + request.setAppId(QianYunTongProperties.appkey); + request.setConfigVersion(1); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(tradePayOffData); + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradePayOff"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + contentMap.put("content", new Gson().toJson(request)); + log.info("【(补偿单)拉起支付】请求地址:" + url); + log.info("【(补偿单)拉起支付】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【(补偿单)拉起支付】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if (!"000000".equals(resCode)) { + log.error("【(补偿单)拉起支付】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【(补偿单)拉起支付】失败:" + jsonObject.getString("resMsg")); + } + JSONObject busiResp = jsonObject.getJSONObject("busiResp"); + PayInfo payInfo = busiResp.getObject("payInfo", PayInfo.class); + return payInfo; + } + + + /** + * 查询支付单信息 + * @param getPaymentInfoDataRequest + * @return + */ + public static GetPaymentInfo paymentInfo(GetPaymentInfoDataRequest getPaymentInfoDataRequest){ + GetPaymentInfoRequest request = new GetPaymentInfoRequest(); + request.setRequstType("POST"); + request.setBusType(1); + request.setData(getPaymentInfoDataRequest); + + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/paymentInfo"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + contentMap.put("content", new Gson().toJson(request)); + log.info("【查询支付单信息】请求地址:" + url); + log.info("【查询支付单信息】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【查询支付单信息】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("retCode"); + if(!"0".equals(resCode)){ + log.error("【查询支付单信息】失败:" + jsonObject.getString("retMsg")); + throw new RuntimeException("【查询支付单信息】失败:" + jsonObject.getString("retMsg")); + } + JSONObject object = jsonObject.getJSONObject("object"); + String retCode = object.getString("retCode"); + if(!"000000".equals(retCode)){ + log.error("【查询支付单信息】失败:" + jsonObject.getString("retMsg")); + throw new RuntimeException("【查询支付单信息】失败:" + jsonObject.getString("retMsg")); + } + GetPaymentInfo payInfo = object.getObject("data", GetPaymentInfo.class); + return payInfo; + } + + + /** + * (补偿单)支付成功通知 + * @param request + * @return + */ + public static OrderInfo paymentOrder(PaymentOrderRequest request){ + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/paymentOrder"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + contentMap.put("content", new Gson().toJson(request)); + log.info("【(补偿单)支付成功通知】请求地址:" + url); + log.info("【(补偿单)支付成功通知】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【(补偿单)支付成功通知】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if(!"0".equals(resCode)){ + log.error("【(补偿单)支付成功通知】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【(补偿单)支付成功通知】失败:" + jsonObject.getString("resMsg")); + } + OrderInfo orderInfo = jsonObject.getObject("busiResp", OrderInfo.class); + return orderInfo; + } + + + + + + + + +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java index 99a7c02..84d54b2 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java @@ -62,6 +62,10 @@ * 向UAAS服务请求到的secret_key */ private String secretKey; + /** + * 场景编号 + */ + String sceneId; public QianYunTongConfig getQianYunTongConfig() { @@ -77,6 +81,7 @@ this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e"); this.setAccessKey("TYMFTFD5SIIT15DCCUD7"); this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z"); + this.sceneId = "1948289607125864448"; } if("test".equals(activeProfile)){ this.setAppkey("10001104"); @@ -90,6 +95,7 @@ this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e"); this.setAccessKey("TYMFTFD5SIIT15DCCUD7"); this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z"); + this.sceneId = "1948289607125864448"; } if("prod".equals(activeProfile)){ this.setAppkey("10001104"); @@ -103,6 +109,7 @@ this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e"); this.setAccessKey("TYMFTFD5SIIT15DCCUD7"); this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z"); + this.sceneId = ""; } return this; } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java index d06297f..0cf0368 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java @@ -9,41 +9,6 @@ public interface QianYunTongProperties { /************************************开发/测试start***********************************/ -// /** -// * appkey -// */ -// String appkey = "10001104"; -// /** -// * 私钥地址 -// */ -// String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem"; -// /** -// * 私钥地址 -// */ -// String privateKeyPath = "/root/server/app/key/private_key_test.pem"; -// /** -// * 消费者账号 -// */ -// String userName = "xiaofei"; -// /** -// * 状态 -// * 1:生产环境 -// * 2:测试环境 -// */ -// String status = "1"; -// /** -// * API地址 -// */ -// String apiUrl = "https://test-zhongtai.stqcloud.com:10070"; -// /** -// * 桶名 -// */ -// String bucketName = "bucuTest0625"; - - /************************************开发/测试end***********************************/ - - /************************************生产start***********************************/ - /** * appkey */ @@ -51,15 +16,15 @@ /** * 私钥地址 */ -// String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key.pem"; + String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem"; /** * 私钥地址 */ - String privateKeyPath = "/root/server/app/key/private_key.pem"; +// String privateKeyPath = "/root/server/app/key/private_key_test.pem"; /** * 消费者账号 */ - String userName = "xiwang"; + String userName = "xiaofei"; /** * 状态 * 1:生产环境 @@ -69,11 +34,50 @@ /** * API地址 */ - String apiUrl = "http://jjzhongtai.stqcloud.com:10010"; + String apiUrl = "https://test-zhongtai.stqcloud.com:10070"; /** * 桶名 */ - String bucketName = "qyt20250702"; + String bucketName = "bucuTest0625"; + /** + * 场景编号 + */ + String sceneId = "1948289607125864448"; + + /************************************开发/测试end***********************************/ + + /************************************生产start***********************************/ + +// /** +// * appkey +// */ +// String appkey = "10001104"; +// /** +// * 私钥地址 +// */ +//// String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key.pem"; +// /** +// * 私钥地址 +// */ +// String privateKeyPath = "/root/server/app/key/private_key.pem"; +// /** +// * 消费者账号 +// */ +// String userName = "xiwang"; +// /** +// * 状态 +// * 1:生产环境 +// * 2:测试环境 +// */ +// String status = "1"; +// /** +// * API地址 +// */ +// String apiUrl = "http://jjzhongtai.stqcloud.com:10010"; +// /** +// * 桶名 +// */ +// String bucketName = "qyt20250702"; /************************************生产end***********************************/ diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java new file mode 100644 index 0000000..2201301 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java @@ -0,0 +1,53 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author zhibing.pu + * @Date 2025/7/24 9:35 + */ +@Data +public class CreateOrderRequest { + /** + * 司机id + */ + private String treatShopId; + /** + * 应用场景标识 + */ + private String orderAppId; + /** + * 场景标识 + */ + private String scene; + /** + * 租户ID。地区行政编码。黔南州传522700 + */ + private String partnerId; + /** + * 结算信息json串。其中结算分账标识(profitSharing:0:不分账,1:分账)、是否推广单标识(isPromote:1、是、0、否)必传。例:{"profitSharing":"0",”isPromote”:”0”} + */ + private String field1; + /** + * 订单总金额,单位元 + */ + private BigDecimal charge; + /** + * 订单渠道。小程序传GRJYCXWXXCX,贵人家园传GRJY + */ + private String channelSource; + /** + * 行程单ID + */ + private String orderId; + /** + * 业务侧订单号 + */ + private String orderNo; + /** + * 下单人ID + */ + private String customerId; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateTravelItineraryRequest.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateTravelItineraryRequest.java new file mode 100644 index 0000000..8ce9043 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateTravelItineraryRequest.java @@ -0,0 +1,43 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 16:31 + */ +@Data +public class CreateTravelItineraryRequest { + /** + * 场景标识。交通场景传”TRAFFIC” + */ + private String scene; + /** + * 租户ID。地区行政编码。黔南州传522700 + */ + private String partnerId; + /** + * 业务侧订单号 + */ + private String orderNo; + /** + * 乘客ID + */ + private String customerId; + /** + * 司机ID + */ + private String driverId; + /** + * 推广员ID + */ + private String promoterId; + /** + * 服务商商户ID + */ + private String supplierShopId; + /** + * 场景服务类型。1、出租;2、网约车;3、城际;4、顺风车 + */ + private Integer serviceType; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfo.java new file mode 100644 index 0000000..4718623 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfo.java @@ -0,0 +1,45 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2025/7/24 18:24 + */ +@Data +public class GetPaymentInfo { + /** + * 支付流水号 + */ + private String payId; + /** + * 订单中心行程单ID + */ + private String partnerPayId; + /** + * 接入模式:PC H5 APP + */ + private String accessMode; + /** + * 用户标识 + */ + private String customerId; + /** + * 商户标识 + */ + private String partnerId; + /** + * 币种 + */ + private String currency; + /** + * 支付总金额 + */ + private String totalFee; + /** + * 商品信息 + */ + private List<GoodsInfoRequest> goodsInfo; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoDataRequest.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoDataRequest.java new file mode 100644 index 0000000..c7828b8 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoDataRequest.java @@ -0,0 +1,19 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 17:08 + */ +@Data +public class GetPaymentInfoDataRequest { + /** + * 支付单标识。传行程单ID + */ + private String partnerPayId; + /** + * 商户号,由支付中心分配 + */ + private String partnerId; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoRequest.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoRequest.java new file mode 100644 index 0000000..dfd62c0 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoRequest.java @@ -0,0 +1,23 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 17:03 + */ +@Data +public class GetPaymentInfoRequest { + /** + * 默认传POST + */ + private String requstType; + /** + * 默认传1 + */ + private Integer busType; + /** + * 业务参数 + */ + private GetPaymentInfoDataRequest data; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetTravelItineraryListRequest.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetTravelItineraryListRequest.java new file mode 100644 index 0000000..fa978a7 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetTravelItineraryListRequest.java @@ -0,0 +1,47 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 16:31 + */ +@Data +public class GetTravelItineraryListRequest { + /** + * 场景标识。交通场景传”TRAFFIC” + */ + private String scene; + /** + * 租户ID。地区行政编码。黔南州传522700 + */ + private String partnerId; + /** + * 业务侧订单号 + */ + private String orderNo; + /** + * 乘客ID + */ + private String customerId; + /** + * 司机ID + */ + private String driverId; + /** + * 推广员ID + */ + private String promoterId; + /** + * 服务商商户ID + */ + private String supplierShopId; + /** + * 每页条数 + */ + private Integer pageSize; + /** + * 当前页码 + */ + private Integer pageNum; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfoRequest.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfoRequest.java new file mode 100644 index 0000000..b3d7f21 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfoRequest.java @@ -0,0 +1,39 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 10:13 + */ +@Data +public class GoodsInfoRequest { + /** + * 企业ID(补偿场景新创建的订单支付传备用金企业ID) + */ + private String id; + /** + * 子商户微信appId(证联预下单支付必填) + */ + private String subAppId; + /** + * 付款人的openId(证联预下单支付必填) + */ + private String subOpenId; + /** + * 分账标识。0:不分账,1:分账 + */ + private String profitSharing; + /** + * 地区标识,默认传520100 + */ + private String areaInfo; + /** + * 是否匿名。默认传0 + */ + private String payType; + /** + * 业务类型,默认传10408 + */ + private String businessType; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ListPage.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ListPage.java new file mode 100644 index 0000000..eda232f --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ListPage.java @@ -0,0 +1,27 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 16:45 + */ +@Data +public class ListPage<T> { + /** + * 总条数 + */ + private Integer total; + /** + * 当前页码 + */ + private Integer pageNum; + /** + * 每页条数 + */ + private Integer pageSize; + /** + * 数据列表 + */ + private T list; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyTravelItineraryRequest.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyTravelItineraryRequest.java new file mode 100644 index 0000000..f7ff87c --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyTravelItineraryRequest.java @@ -0,0 +1,39 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 16:31 + */ +@Data +public class ModifyTravelItineraryRequest { + /** + * 场景标识。交通场景传”TRAFFIC” + */ + private String scene; + /** + * 租户ID。地区行政编码。黔南州传522700 + */ + private String partnerId; + /** + * 行程单ID + */ + private String orderId; + /** + * 行程单状态。2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,9=已完成,10=已取消,11=改派中 + */ + private Integer status; + /** + * 司机ID + */ + private String driverId; + /** + * 推广员ID + */ + private String promoterId; + /** + * 服务商商户ID + */ + private String supplierShopId; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderInfo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderInfo.java new file mode 100644 index 0000000..ef627a3 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderInfo.java @@ -0,0 +1,19 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 9:44 + */ +@Data +public class OrderInfo { + /** + * 订单id + */ + private String orderId; + /** + * 订单状态 + */ + private String status; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfo.java new file mode 100644 index 0000000..c990caa --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfo.java @@ -0,0 +1,31 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 10:18 + */ +@Data +public class PayInfo { + /** + * 证联返回码000000:请求成功 + */ + private String retCode; + /** + * 证联返回信息 + */ + private String retMsg; + /** + * true、false + */ + private String success; + /** + * 证联返回数据 + */ + private PayInfoData data; + /** + * 签名 + */ + private String sign; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfoData.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfoData.java new file mode 100644 index 0000000..24cf5e5 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfoData.java @@ -0,0 +1,42 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2025/7/24 10:18 + */ +@Data +public class PayInfoData { + /** + * 收银台链接 + */ + private String redirectUrl; + /** + * 支付流水号 + */ + private String payId; + /** + * 支付工单状态 + * 0 待支付 + * 1 部分支付成功 + * 2 支付成功 + * 3 支付失败 + */ + private String status; + /** + * 支付时间,格式:yyyy-MM-dd HH:mm:ss + */ + private String payTime; + /** + * 扣款金额 单位分 + */ + private String payFee; + /** + * 支付信息 + */ + private List<PaymentInfo> paymentInfos; + +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfo.java new file mode 100644 index 0000000..7db70c7 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfo.java @@ -0,0 +1,31 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 10:32 + */ +@Data +public class PaymentInfo { + /** + * 支付模式。此场景下默认传501212(测试和生产一致) + */ + private String payModeId; + /** + * 支付交易明细标识 + */ + private String payItemId; + /** + * 支付金额 + */ + private String payFee; + /** + * 支付状态 + */ + private String status; + /** + * 支付时间 + */ + private String payTime; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfoRequest.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfoRequest.java new file mode 100644 index 0000000..dbd52bc --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfoRequest.java @@ -0,0 +1,15 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 10:32 + */ +@Data +public class PaymentInfoRequest { + /** + * 支付模式。此场景下默认传501212(测试和生产一致) + */ + private String payModeId; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentOrderRequest.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentOrderRequest.java new file mode 100644 index 0000000..4fbf0ce --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentOrderRequest.java @@ -0,0 +1,57 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author zhibing.pu + * @Date 2025/7/24 18:29 + */ +@Data +public class PaymentOrderRequest { + /** + * 场景标识。交通场景传”TRAFFIC” + */ + private String scene; + /** + * 场景应用标识。默认52270015 + */ + private String mhltiCenterAppId; + /** + * 支付流水明细 + */ + private String payItemId; + /** + * 支付明细json串 + */ + private String paymentInfo; + /** + * 订单ID + */ + private String orderId; + /** + * 支付金额,单位元 + */ + private BigDecimal charge; + /** + * 支付时间 + */ + private String payTime; + /** + * 支付流水号 + */ + private String paymentSerialNumber; + /** + * 付款类型,4、线上支付 + */ + private Integer payType; + /** + * 付款方式,6:微信 7:支付宝 8:银行卡 9:银联二维码 10银联购物车收银台 + */ + private Integer payChannel; + /** + * 是否补偿单。1、是,0、否 + */ + private Integer isCompensate; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallback.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallback.java new file mode 100644 index 0000000..801e14d --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallback.java @@ -0,0 +1,27 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 19:31 + */ +@Data +public class QYTPaymentCallback { + /** + * 加密字符串 + */ + private String sign; + /** + * 时间戳 + */ + private String timeStamp; + /** + * 请求调用唯一标识 + */ + private String messageId; + /** + * 支付结果信息 + */ + private QYTPaymentCallbackData data; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java new file mode 100644 index 0000000..4bf8523 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java @@ -0,0 +1,41 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2025/7/24 19:34 + */ +@Data +public class QYTPaymentCallbackData { + /** + * 商户单标识。行程单ID + */ + private String partnerPayId; + /** + * 支付中心商户号 + */ + private String partnerId; + /** + * 支付工单标识 + */ + private String payId; + /** + * 支付状态。1.未支付 2已支付 + */ + private String status; + /** + * 支付时间,格式:YYYY-MM-DD HH:mm:ss + */ + private String payTime; + /** + * 扣款总金额 单位分 + */ + private String payFee; + /** + * 支付详细信息 + */ + private List<QYTPaymentInfoCallback> paymentInfos; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentInfoCallback.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentInfoCallback.java new file mode 100644 index 0000000..19c03d3 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentInfoCallback.java @@ -0,0 +1,35 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 19:37 + */ +@Data +public class QYTPaymentInfoCallback { + /** + * 支付交易明细标识 + */ + private String payItemId; + /** + * 支付模式 + */ + private String payModeId; + /** + * 支付金额,单位分 + */ + private String payFee; + /** + * 实付金额,单位分 + */ + private String realFee; + /** + * 支付状态。1.未支付 2已支付 + */ + private String status; + /** + * 支付时间,格式:YYYY-MM-DD HH:mm:ss + */ + private String payTime; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreate.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreate.java new file mode 100644 index 0000000..2afc392 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreate.java @@ -0,0 +1,19 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 10:17 + */ +@Data +public class TradeOrderCreate { + /** + * 订单信息 + */ + private OrderInfo orderInfo; + /** + * 支付接口调用信息 + */ + private PayInfo payInfo; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java new file mode 100644 index 0000000..fa53305 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java @@ -0,0 +1,95 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2025/7/24 10:03 + */ +@Data +public class TradeOrderCreateData { + /** + * 司机id + */ + private String treatShopId; + /** + * 应用场景标识 + */ + private String orderAppId; + /** + * 场景标识 + */ + private String scene; + /** + * 租户ID。地区行政编码。黔南州传522700 + */ + private String partnerId; + /** + * 结算信息json串。其中结算分账标识(profitSharing:0:不分账,1:分账)、是否推广单标识(isPromote:1、是、0、否)必传。例:{"profitSharing":"0",”isPromote”:”0”} + */ + private String field1; + /** + * 订单总金额,单位元 + */ + private BigDecimal charge; + /** + * 订单渠道。小程序传GRJYCXWXXCX,贵人家园传GRJY + */ + private String channelSource; + /** + * 行程单ID + */ + private String orderId; + /** + * 业务侧订单号 + */ + private String orderNo; + /** + * 下单人ID + */ + private String customerId; + /** + * 商户号,由支付中心分配。测试环境5400004 + */ + private String payPartnerId; + /** + * 商户单标识。订单中心行程单号,每次请求请保持唯一性。 + */ + private String partnerPayId; + /** + * 币种。RMB(人民币);USD(美元) + */ + private String currency; + /** + * 交易总金额,单位分。 + */ + private String totalFee; + /** + * 前台通知URL地址。 + */ + private String retUrl; + /** + * 用户IP + */ + private String clientIp; + /** + * Y代表要登录,跳到标准收银台 + * N代表不需要登录,跳到无支付帐号收银台 + */ + private String needLoginFlag; + /** + * 支付单描述 + */ + private String orderDesc; + /** + * 接入模式:PC、H5、APP + */ + private String accessMode; + /** + * 支付信息 + */ + private List<GoodsInfoRequest> goodsInfo; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java new file mode 100644 index 0000000..554c2d9 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java @@ -0,0 +1,58 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2025/7/24 10:23 + */ +@Data +public class TradePayOff1Data { + /** + * 商户号,由支付中心分配。测试环境5400004 + */ + private String partnerId; + /** + * 场景标识。交通场景传”TRAFFIC” + */ + private String scene; + /** + * 商户单标识。订单中心订单号,每次请求请保持唯一性。 + */ + private String partnerPayId; + /** + * 币种。RMB(人民币);USD(美元) + */ + private String currency; + /** + * 交易总金额,单位分。 + */ + private String totalFee; + /** + * 前台通知URL地址。 + */ + private String retUrl; + /** + * 用户IP + */ + private String clientIp; + /** + * Y代表要登录,跳到标准收银台 + * N代表不需要登录,跳到无支付帐号收银台 + */ + private String needLoginFlag; + /** + * 支付单描述 + */ + private String orderDesc; + /** + * 接入模式:PC、H5、APP + */ + private String accessMode; + /** + * 商品描述信息。Json数组 + */ + private List<GoodsInfoRequest> goodsInfo; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java new file mode 100644 index 0000000..c6d1f96 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java @@ -0,0 +1,62 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2025/7/24 10:23 + */ +@Data +public class TradePayOffData { + /** + * 商户号,由支付中心分配。测试环境5400004 + */ + private String partnerId; + /** + * 场景标识。交通场景传”TRAFFIC” + */ + private String scene; + /** + * 商户单标识。订单中心订单号,每次请求请保持唯一性。 + */ + private String partnerPayId; + /** + * 币种。RMB(人民币);USD(美元) + */ + private String currency; + /** + * 交易总金额,单位分。 + */ + private String totalFee; + /** + * 前台通知URL地址。 + */ + private String retUrl; + /** + * 用户IP + */ + private String clientIp; + /** + * Y代表要登录,跳到标准收银台 + * N代表不需要登录,跳到无支付帐号收银台 + */ + private String needLoginFlag; + /** + * 支付单描述 + */ + private String orderDesc; + /** + * 接入模式:PC、H5、APP + */ + private String accessMode; + /** + * 支付信息 + */ + private List<PaymentInfoRequest> paymentInfos; + /** + * 商品描述信息。Json数组 + */ + private List<GoodsInfo> goodsInfo; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeRequest.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeRequest.java new file mode 100644 index 0000000..b2ce9bb --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeRequest.java @@ -0,0 +1,31 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 10:22 + */ +@Data +public class TradeRequest<T> { + /** + * 场景编号.交易中心提供。测试环境:1948289607125864448 + */ + private String sceneId; + /** + * 应用编号。中台应用appKey + */ + private String appId; + /** + * 场景版本。交易中心提供。测试环境1 + */ + private Integer configVersion; + /** + * 请求ID。每次调用唯一标识 + */ + private String requestId; + /** + * 业务数据 + */ + private T data; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TravelItinerary.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TravelItinerary.java new file mode 100644 index 0000000..27ffc26 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TravelItinerary.java @@ -0,0 +1,64 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/7/24 16:48 + */ +@Data +public class TravelItinerary { + /** + * 场景标识。交通场景传”TRAFFIC” + */ + private String scene; + /** + * 租户ID。地区行政编码。黔南州传522700 + */ + private String partnerId; + /** + * 业务侧订单号 + */ + private String orderNo; + /** + * 乘客ID + */ + private String customerId; + /** + * 司机ID + */ + private String driverId; + /** + * 订单号 + */ + private String orderId; + /** + * 推广员ID + */ + private String promoterId; + /** + * 服务商商户ID + */ + private String supplierShopId; + /** + * 场景服务类型。1、出租;2、网约车;3、城际;4、顺风车 + */ + private Integer serviceType; + /** + * 订单状态。1、待支付,11、已完结(可结算) + */ + private Integer orderStatus; + /** + * 行程单状态。2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,9=已完成,10=已取消,11=改派中 + */ + private Integer status; + /** + * 创建时间 + */ + private String createTime; + /** + * 更新时间 + */ + private String updateTime; + +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java index 7c1d683..b89c824 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java @@ -13,6 +13,10 @@ @Document(collection = "driver_position") public class DriverPosition { @Id + private String id; + /** + * 司机id + */ private Integer driverId; /** * 点位 diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java index 71e81a5..aa50484 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java @@ -212,7 +212,7 @@ // } // 是否推广订单 - Integer promotion = isPromotion(uid); + Integer promotion = isPromotion(orderTaxi.getUserId()); orderTaxi.setPromotion(promotion); this.updateById(orderTaxi); diff --git a/DriverQYTTravel/guns-admin/src/main/resources/application.yml b/DriverQYTTravel/guns-admin/src/main/resources/application.yml index 59943d5..b19af59 100644 --- a/DriverQYTTravel/guns-admin/src/main/resources/application.yml +++ b/DriverQYTTravel/guns-admin/src/main/resources/application.yml @@ -1,3 +1,120 @@ +server: + port: 8007 + +guns: + swagger-open: true #是否开启swagger (true/false) + kaptcha-open: false #是否开启登录时验证码 (true/false) + file-upload-path: d:/tmp #文件上传目录(不配置的话为java.io.tmpdir目录) + picture-server-address: http://192.168.0.43/resources/ #图片服务器地址 + spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false) + session-invalidate-time: 1800 #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒 + session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 + spring: + application: + name: driver-server profiles: - active: "@spring.active@" \ No newline at end of file + active: dev + mvc: + static-path-pattern: /static/** + view: + prefix: /WEB-INF/view + devtools: + restart: + enabled: false + additional-paths: src/main/java + exclude: static/**,WEB-INF/view/** + servlet: + multipart: + max-request-size: 100MB + max-file-size: 100MB + redis: + host: 192.168.110.80 + port: 6379 + password: 123456 + database: 0 + timeout: 1000 +# cluster: +# nodes: 127.0.0.1:6379 +mybatis-plus: + typeAliasesPackage: com.stylefeng.guns.modular + global-config: + id-type: 0 #0:数据库ID自增 1:用户输入id 2:全局唯一id(IdWorker) 3:全局唯一ID(uuid) + db-column-underline: false + configuration: + configuration.map-underscore-to-camel-case: true #是否开启自动驼峰命名规则(camel case)映射 + log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl #输出Sql,如需打印Sql注释该配置 + + +eureka: + client: + service-url: #注册中心地址 + defaultZone: http://sinata:sinata@127.0.0.1:8000/eureka #启用身份验证的方式连接 + register-with-eureka: true #在注册中心进行注册 + fetch-registry: true #从Eureka中获取注册信息。 + +--- + +spring: + datasource: + url: jdbc:mysql://192.168.110.80:3306/qyttravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai + username: root + password: 123456 + db-name: qyttravel #用来搜集数据库的所有表 + filters: wall,mergeStat +--- +spring: + data: + mongodb: + uri: mongodb://192.168.110.80:27017/traveling_track + +--- + +wx: + grantType: authorization_code #填authorization_code + appid: 111 #应用唯一标识,在微信开放平台提交应用审核通过后获得 + appSecret: 111 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 + appletsAppid: wxcc3c9058e2b294db #小程序APPid + appletsAppSecret: 5610fc6126255ca5f7bd9fa4330338b6 # + mchId: 111 #微信支付分配的商户号 + key: 111 #key为商户平台设置的密钥key: + url: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1} + +--- + +alipay: + appid: 111 #应用程序唯一标识 + appPrivateKey: 111 #开发者应用私钥 + alipayPublicKey: 1 #应用公钥 + alipay_public_key: 111 #支付宝公钥 + +--- + +juhe: #聚合数据 + appKey: 111 # + + +--- + +jiguang: + appKey-driver: 111 #极光推送应用唯一标识 + masterSecret-driver: 111 #用于服务器端 API 调用时与 AppKey 配合使用达到鉴权的目的 + appKey-dispatch: 111 #极光推送应用唯一标识 + masterSecret-dispatch: 111 #用于服务器端 API 调用时与 AppKey 配合使用达到鉴权的目的 + + +--- + +#支付回调地址 +#正式环境 +callbackPath: https://traffic.qytzt.cn/driver + +--- +#交通部推送数据功能开关 +pushMinistryOfTransport: false + +--- +rongyun: + app_key: 111 + app_secret: 111 + diff --git a/DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java b/DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java index 543c653..49643d3 100644 --- a/DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java +++ b/DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java @@ -1,11 +1,36 @@ -//package com.stylefeng.guns; -// -//import org.junit.runner.RunWith; -//import org.springframework.boot.test.context.SpringBootTest; -//import org.springframework.test.context.junit4.SpringRunner; -// -//@RunWith(SpringRunner.class) -//@SpringBootTest -//public class GunsApplicationTest { -// -//} +package com.stylefeng.guns; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class GunsApplicationTest { + + @Autowired + private MongoTemplate mongoTemplate; + + + @Test + public void test(){ +// GeoJsonPoint point = new GeoJsonPoint(new Point(Double.parseDouble("104.043149"), +// Double.parseDouble("30.642483"))); +// DriverPosition position = mongoTemplate.findOne(Query.query(Criteria.where("driverId") +// .is(14)), DriverPosition.class); +// if(null == position){ +// position = new DriverPosition(); +// } +// position.setDriverId(14); +// position.setPoint(point); +// mongoTemplate.save(position); + + +// Query query = Query.query(Criteria.where("point").nearSphere(new Point(Double.parseDouble("104.043149"), Double.parseDouble("30.642483"))).maxDistance(5000)); +// List<DriverPosition> driverPositions = mongoTemplate.find(query, DriverPosition.class); +// System.err.println(driverPositions); + } +} diff --git a/MessagePushTravel/src/main/java/com/sinata/push/util/echo/DiscardServerHandler.java b/MessagePushTravel/src/main/java/com/sinata/push/util/echo/DiscardServerHandler.java index 595c397..c2a291d 100644 --- a/MessagePushTravel/src/main/java/com/sinata/push/util/echo/DiscardServerHandler.java +++ b/MessagePushTravel/src/main/java/com/sinata/push/util/echo/DiscardServerHandler.java @@ -23,7 +23,7 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) { InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress(); if(isdebug) { -// System.err.println(insocket.getAddress() + ": 收到客户端数据......."); + System.err.println(insocket.getAddress() + ": 收到客户端数据......."); } try { // 调用service @@ -39,7 +39,7 @@ protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception { InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress(); if(isdebug) { -// System.err.println(insocket.getAddress() + ": 收到客户端数据......."); + System.err.println(insocket.getAddress() + ": 收到客户端数据......."); } try { // 调用service @@ -70,7 +70,7 @@ public void channelActive(final ChannelHandlerContext ctx) throws Exception { InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress(); if(isdebug) { -// System.err.println(insocket.getAddress() + ": Connect successful......"); + System.err.println(insocket.getAddress() + ": Connect successful......"); } } -- Gitblit v1.7.1