Pu Zhibing
2025-08-01 92b69ed3586357e8c2f80980590b1b3fb90192c5
新增加三方业务流程代码
9个文件已修改
227 ■■■■■ 已修改文件
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IPaymentRecordService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -25,6 +25,7 @@
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.QYTPaymentCallback;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.QYTPaymentCallbackData;
import com.stylefeng.guns.modular.system.warpper.*;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.model.PaymentRecord;
@@ -2141,9 +2142,30 @@
    @PostMapping("/base/order/qytPaymentCallback")
    public String qytPaymentCallback(@RequestBody QYTPaymentCallback qytPaymentCallback) {
        log.info("【黔云通支付回调通知】请求参数:" + JSON.toJSONString(qytPaymentCallback));
        try {
        if (null == qytPaymentCallback) {
            return "error";
        }
            QYTPaymentCallbackData data = qytPaymentCallback.getData();
            if("1".equals(data.getStatus())){
                return "error";
            }
            String partnerPayId = data.getPartnerPayId();
            String payId = data.getPayId();
            //网约车
            if(partnerPayId.contains("PR")){
                partnerPayId = partnerPayId.substring(2);
                orderPrivateCarService.payOrderPrivateCarCallback(Integer.valueOf(partnerPayId), payId, 1);
            }
            //出租车
            if(partnerPayId.contains("TA")){
                partnerPayId = partnerPayId.substring(2);
                orderTaxiService.payOrderTaxiCallback(Integer.valueOf(partnerPayId), payId, 1, 0);
            }
        }catch (Exception e){
            e.printStackTrace();
            return "error";
        }
        return "success";
    }
    
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -7,21 +7,23 @@
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
import com.stylefeng.guns.modular.system.model.Company;
import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.model.UserInfo;
import com.stylefeng.guns.modular.system.service.IUserCouponRecordService;
import com.stylefeng.guns.modular.system.service.IUserInfoService;
import com.stylefeng.guns.modular.system.service.IUserMerchantCouponService;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.SMSUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -46,6 +48,8 @@
    
    @Autowired
    private IOrderPrivateCarService orderPrivateCarService;
    @Autowired
    private IPaymentRecordService paymentRecordService;
    
    
    @Autowired
@@ -63,6 +67,11 @@
    @Autowired
    private IUserInfoService userInfoService;
    
    @Autowired
    private IDriverService driverService;
    @Autowired
    private ICompanyService companyService;
    
    /**
     * 每隔一分钟去处理的定时任务
@@ -75,7 +84,7 @@
            //修改过期的商家优惠券
            userMerchantCouponService.updateExpired();
            //处理超时未支付的订单
            timoutNoPayment();
        } catch (Exception e) {
            e.printStackTrace();
        }
@@ -135,9 +144,10 @@
        List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("state", 7)
                .eq("isDelete", 1).eq("recoveryOrder", 0).last(" and now() >= DATE_ADD(insertTime, INTERVAL 24 HOUR)"));
        for (OrderPrivateCar orderPrivateCar : orderPrivateCars) {
            try {
            //使用备付金进行支付订单
            TradePayOffData tradePayOffData = new TradePayOffData();
            tradePayOffData.setPartnerPayId("PR" + orderPrivateCar.getId());
                tradePayOffData.setPartnerPayId(orderPrivateCar.getTravelId());
            tradePayOffData.setTotalFee(Double.valueOf(orderPrivateCar.getOrderMoney() * 100).intValue() + "");
            tradePayOffData.setOrderDesc("完成订单");
            PayInfo payInfo = OrderUtil.tradePayOff(tradePayOffData);
@@ -152,6 +162,33 @@
                log.error("备付金支付失败:{}", payInfo.getRetMsg());
                continue;
            }
                //查询三方订单状态
                Driver driver1 = driverService.selectById(orderPrivateCar.getDriverId());
                Company company = companyService.selectById(driver1.getCompanyId());
                UserInfo userInfo1 = userInfoService.selectById(orderPrivateCar.getUserId());
                GetTravelItineraryListRequest request = new GetTravelItineraryListRequest();
                request.setCustomerId(userInfo1.getOnconUUID());
                request.setOrderNo("PR" + orderPrivateCar.getId());
                request.setDriverId(driver1.getEmpId().toString());
                ListPage<List<TravelItinerary>> travelItineraryList = OrderUtil.getTravelItineraryList(request);
                Integer status1 = travelItineraryList.getList().get(0).getStatus();
                if(8 != status1){
                    //中台修改订单状态
                    ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
                    request1.setOrderId(orderPrivateCar.getTravelId());
                    request1.setStatus(8);
                    if (null != orderPrivateCar.getDriverId()) {
                        request1.setDriverId(driver1.getEmpId().toString());
                        request1.setSupplierShopId(company.getEnterCode());
                    }
                    if (2 == orderPrivateCar.getPromotion()) {
                        Driver driver2 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                        request1.setPromoterId(driver2.getEmpId().toString());
                    }
                    OrderUtil.modifyTravelItinerary(request1);
                }
                String payId = payInfo.getData().getPayId();
            //copy原始订单后生成追缴单
            OrderPrivateCar orderPrivateCar1 = new OrderPrivateCar();
            BeanUtils.copyProperties(orderPrivateCar, orderPrivateCar1);
@@ -163,7 +200,109 @@
            orderPrivateCar.setPayType(5);
            orderPrivateCar.setPayMoney(orderPrivateCar.getOrderMoney());
            orderPrivateCarService.updateById(orderPrivateCar);
                //添加三方支付记录
                paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderPrivateCar.getId(), 1, 3, orderPrivateCar.getOrderMoney(), payId, 2);
                Driver driver = driverService.selectById(orderPrivateCar1.getDriverId());
                UserInfo userInfo = userInfoService.selectById(orderPrivateCar1.getUserId());
                //调用三方创建订单
                CreateOrderRequest createOrderRequest = new CreateOrderRequest();
                createOrderRequest.setTreatShopId(driver.getEmpId().toString());
                createOrderRequest.setField1("{\"profitSharing\":\"0\",\"isPromote\":\"0\"}");
                createOrderRequest.setCharge(new BigDecimal(orderPrivateCar1.getOrderMoney()));
                createOrderRequest.setOrderNo("PR" + orderPrivateCar1.getId());
                createOrderRequest.setCustomerId(userInfo.getOnconUUID());
                OrderInfo orderInfo = OrderUtil.tradeOrderCreate(createOrderRequest);
                orderPrivateCar1.setTravelId(orderInfo.getOrderId());
                orderPrivateCar1.setIsCreated(1);
                //保存追缴单
            orderPrivateCarService.insert(orderPrivateCar1);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //出租车
        List<OrderTaxi> orderTaxis = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("state", 7)
                .eq("isDelete", 1).eq("recoveryOrder", 0).last(" and now() >= DATE_ADD(insertTime, INTERVAL 24 HOUR)"));
        for (OrderTaxi orderTaxi : orderTaxis) {
            try {
                //使用备付金进行支付订单
                TradePayOffData tradePayOffData = new TradePayOffData();
                tradePayOffData.setPartnerPayId(orderTaxi.getTravelId());
                tradePayOffData.setTotalFee(Double.valueOf(orderTaxi.getOrderMoney() * 100).intValue() + "");
                tradePayOffData.setOrderDesc("完成订单");
                PayInfo payInfo = OrderUtil.tradePayOff(tradePayOffData);
                String retCode = payInfo.getRetCode();
                if (!"000000".equals(retCode)) {
                    log.error("备付金支付失败:{}", payInfo.getRetMsg());
                    continue;
                }
                PayInfoData data = payInfo.getData();
                String status = data.getStatus();
                if ("3".equals(status)) {
                    log.error("备付金支付失败:{}", payInfo.getRetMsg());
                    continue;
                }
                //查询三方订单状态
                Driver driver1 = driverService.selectById(orderTaxi.getDriverId());
                Company company = companyService.selectById(driver1.getCompanyId());
                UserInfo userInfo1 = userInfoService.selectById(orderTaxi.getUserId());
                GetTravelItineraryListRequest request = new GetTravelItineraryListRequest();
                request.setCustomerId(userInfo1.getOnconUUID());
                request.setOrderNo("TA" + orderTaxi.getId());
                request.setDriverId(driver1.getEmpId().toString());
                ListPage<List<TravelItinerary>> travelItineraryList = OrderUtil.getTravelItineraryList(request);
                Integer status1 = travelItineraryList.getList().get(0).getStatus();
                if(8 != status1){
                    //中台修改订单状态
                    ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
                    request1.setOrderId(orderTaxi.getTravelId());
                    request1.setStatus(8);
                    if (null != orderTaxi.getDriverId()) {
                        request1.setDriverId(driver1.getEmpId().toString());
                        request1.setSupplierShopId(company.getEnterCode());
                    }
                    if (2 == orderTaxi.getPromotion()) {
                        Driver driver2 = driverService.selectById(orderTaxi.getPromotionDriverId());
                        request1.setPromoterId(driver2.getEmpId().toString());
                    }
                    OrderUtil.modifyTravelItinerary(request1);
                }
                String payId = payInfo.getData().getPayId();
                //copy原始订单后生成追缴单
                OrderTaxi orderTaxi1 = new OrderTaxi();
                BeanUtils.copyProperties(orderTaxi, orderTaxi1);
                orderTaxi1.setId(null);
                orderTaxi1.setRecoveryOrder(1);
                //修改原始订单为支付状态
                orderTaxi.setState(8);
                orderTaxi.setPayType(5);
                orderTaxi.setPayMoney(orderTaxi.getOrderMoney());
                orderTaxiService.updateById(orderTaxi);
                //添加三方支付记录
                paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderTaxi.getId(), 2, 3, orderTaxi.getOrderMoney(), payId, 2);
                Driver driver = driverService.selectById(orderTaxi1.getDriverId());
                UserInfo userInfo = userInfoService.selectById(orderTaxi1.getUserId());
                //调用三方创建订单
                CreateOrderRequest createOrderRequest = new CreateOrderRequest();
                createOrderRequest.setTreatShopId(driver.getEmpId().toString());
                createOrderRequest.setField1("{\"profitSharing\":\"0\",\"isPromote\":\"0\"}");
                createOrderRequest.setCharge(new BigDecimal(orderTaxi1.getOrderMoney()));
                createOrderRequest.setOrderNo("TA" + orderTaxi1.getId());
                createOrderRequest.setCustomerId(userInfo.getOnconUUID());
                OrderInfo orderInfo = OrderUtil.tradeOrderCreate(createOrderRequest);
                orderTaxi1.setTravelId(orderInfo.getOrderId());
                orderTaxi1.setIsCreated(1);
                //保存追缴单
                orderTaxiService.insert(orderTaxi1);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
@@ -180,6 +180,7 @@
     */
    public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data) {
        tradePayOff1Data.setPartnerId("5400004");
        tradePayOff1Data.setTimeout("72H");
        tradePayOff1Data.setScene("TRAFFIC");
        tradePayOff1Data.setCurrency("RMB");
        tradePayOff1Data.setNeedLoginFlag("N");
@@ -317,7 +318,10 @@
     * @param request
     * @return
     */
    public static ListPage<TravelItinerary> getTravelItineraryList(GetTravelItineraryListRequest request){
    public static ListPage<List<TravelItinerary>> getTravelItineraryList(GetTravelItineraryListRequest request){
        request.setScene("TRAFFIC");
        request.setPartnerId("522700");
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/getTravelItineraryList";
        //私钥文件
@@ -357,7 +361,7 @@
            TravelItinerary object = list.getObject(i, TravelItinerary.class);
            travelItineraryList.add(object);
        }
        ListPage listPage = new ListPage<TravelItinerary>();
        ListPage listPage = new ListPage<List<TravelItinerary>>();
        listPage.setTotal(total);
        listPage.setPageNum(pageNum);
        listPage.setPageSize(pageSize);
@@ -374,6 +378,7 @@
    public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData) {
        tradeOrderCreateData.setScene("TRAFFIC");
        tradeOrderCreateData.setPartnerId("522700");
        tradeOrderCreateData.setTimeout("72H");
        tradeOrderCreateData.setOrderAppId("52270015");
        tradeOrderCreateData.setChannelSource("GRJYCXWXXCX");
        tradeOrderCreateData.setPayPartnerId("5400004");
@@ -437,6 +442,11 @@
     * @return
     */
    public static OrderInfo tradeOrderCreate(CreateOrderRequest createOrderRequest) {
        createOrderRequest.setOrderAppId("52270015");
        createOrderRequest.setScene("TRAFFIC");
        createOrderRequest.setPartnerId("522700");
        createOrderRequest.setChannelSource("GRJYCXWXXCX");
        TradeRequest request = new TradeRequest<CreateOrderRequest>();
        request.setSceneId(QianYunTongProperties.sceneId);
        request.setAppId(QianYunTongProperties.appkey);
@@ -485,6 +495,7 @@
     */
    public static PayInfo tradePayOff(TradePayOffData tradePayOffData) {
        tradePayOffData.setPartnerId("5400004");
        tradePayOffData.setTimeout("72H");
        tradePayOffData.setScene("TRAFFIC");
        tradePayOffData.setCurrency("RMB");
        tradePayOffData.setRetUrl("");
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java
@@ -39,10 +39,6 @@
     */
    private String channelSource;
    /**
     * 行程单ID
     */
    private String orderId;
    /**
     * 业务侧订单号
     */
    private String orderNo;
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java
@@ -28,6 +28,10 @@
     */
    private String partnerId;
    /**
     * 超时时间
     */
    private String timeout;
    /**
     * 结算信息json串。其中结算分账标识(profitSharing:0:不分账,1:分账)、是否推广单标识(isPromote:1、是、0、否)必传。例:{"profitSharing":"0",”isPromote”:”0”}
     */
    private String field1;
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java
@@ -15,6 +15,10 @@
     */
    private String partnerId;
    /**
     * 超时时间
     */
    private String timeout;
    /**
     * 场景标识。交通场景传”TRAFFIC”
     */
    private String scene;
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java
@@ -15,6 +15,10 @@
     */
    private String partnerId;
    /**
     * 超时时间
     */
    private String timeout;
    /**
     * 场景标识。交通场景传”TRAFFIC”
     */
    private String scene;
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java
@@ -317,6 +317,7 @@
    private Integer invoiceId;
    /**
     * 是否是改派单(1=否,=是)
     *
     * @return
     */
    @TableField("isReassign")
@@ -328,6 +329,7 @@
    private Integer reassignNotice;
    /**
     * 高德猎鹰轨迹id
     *
     * @return
     */
    @TableField("trackId")
@@ -339,18 +341,21 @@
    private Integer isDelete;
    /**
     * 该派前的订单状态
     *
     * @return
     */
    @TableField("oldState")
    private Integer oldState;
    /**
     * 移动小号
     *
     * @return
     */
    @TableField("telX")
    private String telX;
    /**
     * 绑定小号关系id
     *
     * @return
     */
    @TableField("bindId")
@@ -397,13 +402,19 @@
    
    private String promotionPhone;
    
    private Long promotionActivityId;
    /**
     * 中台行程id
     */
    private String travelId;
    /**
     * 中台是否已创建订单(0=否,1=是)
     */
    private Integer isCreated;
    private Long promotionActivityId;
    /**
     * 是否是追缴单(0=否,1=是)
     */
    private Integer recoveryOrder;
    public Long getPromotionActivityId() {
        return promotionActivityId;
@@ -1071,6 +1082,14 @@
        this.isCreated = isCreated;
    }
    
    public Integer getRecoveryOrder() {
        return recoveryOrder;
    }
    public void setRecoveryOrder(Integer recoveryOrder) {
        this.recoveryOrder = recoveryOrder;
    }
    @Override
    public String toString() {
        return "OrderTaxi{" +
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IPaymentRecordService.java
@@ -12,7 +12,7 @@
     * 添加数据
     * @param orderId       订单id
     * @param orderType     订单类型
     * @param payType       支付方式(1=微信,2=支付宝)
     * @param payType       支付方式(1=微信,2=支付宝,3=备用金)
     * @param amount        支付金额
     * @param code          第三方支付单号
     * @param state         支付状态(1=待支付,2=已支付)