From dfb1f5ab2e8dc03cf2f497ce3327f6ce58700766 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 23 十月 2025 11:35:55 +0800
Subject: [PATCH] 修改bug
---
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/PayInfoController.java | 151 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 149 insertions(+), 2 deletions(-)
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/PayInfoController.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/PayInfoController.java
index 6dfa73e..eef1d76 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/PayInfoController.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/PayInfoController.java
@@ -1,13 +1,23 @@
package com.stylefeng.guns.modular.shunfeng.controller;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
+import com.stylefeng.guns.modular.shunfeng.model.Financial;
import com.stylefeng.guns.modular.shunfeng.model.OrderRide;
import com.stylefeng.guns.modular.shunfeng.model.vo.ApiJson;
+import com.stylefeng.guns.modular.shunfeng.service.IDriverRideService;
+import com.stylefeng.guns.modular.shunfeng.service.IFinancialService;
import com.stylefeng.guns.modular.shunfeng.service.IOrderRideService;
import com.stylefeng.guns.modular.shunfeng.service.ITimeTaskService;
+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.ISystemNoticeService;
import com.stylefeng.guns.modular.system.service.IUserInfoService;
+import com.stylefeng.guns.modular.system.util.ResultUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -20,7 +30,17 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
+import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
/**
* 支付相关接口
@@ -38,6 +58,11 @@
private IUserInfoService userInfoService;
@Autowired
private ISystemNoticeService systemNoticeService;
+ /*顺风车司机*/
+ @Autowired
+ private IDriverRideService driverRideService;
+ @Autowired
+ private IFinancialService financialService;
@@ -130,8 +155,11 @@
@ApiImplicitParams({
@ApiImplicitParam(name = "orderId", value = "订单id", dataType = "int"),
@ApiImplicitParam(name = "payType", value = "支付类型 1=支付宝,2 = 微信 3:银行卡 4:小程序", dataType = "int"),
+ @ApiImplicitParam(name = "path", value = "前端支付很后的跳转页面", dataType = "string"),
+ @ApiImplicitParam(name = "ip", value = "前端支付IP地址", dataType = "string"),
})
- public Object payOnline(Integer orderId,Integer type,String code,Integer payType,Integer isBalance,HttpServletRequest request,Integer couponId){
+ public Object payOnline(Integer orderId,Integer type,String code,Integer payType,Integer isBalance,
+ String path, String ip, HttpServletRequest request,Integer couponId){
try {
if(orderId == null || orderId == 0){
return ApiJson.returnNG("订单ID不能为空");
@@ -156,7 +184,126 @@
if(orderRide.getState()==2){//已支付
return ApiJson.returnNG("该订单不需要支付");
}
- info = new PayUtil().getPayInfo(payType,orderRide.getOrderNum(),openId,request);
+ Double orderMoney = orderRide.getMoney();
+ if(2 == payType){
+ UserInfo userInfo = userInfoService.selectById(orderRide.getUserId());
+ if(null == orderRide.getIsCreated() || 0 == orderRide.getIsCreated()){
+ //调用中台创建订单及拉起支付接口
+ TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData();
+ tradeOrderCreateData.setTreatShopId("0");
+ tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isCompensate\":\"0\",\"isPromote\":\"0\"}");
+ tradeOrderCreateData.setCharge(new BigDecimal(orderMoney).setScale(2, RoundingMode.HALF_EVEN));
+ tradeOrderCreateData.setOrderNo("SF" + orderRide.getId());
+ tradeOrderCreateData.setCustomerId(userInfo.getOnconUUID());
+ tradeOrderCreateData.setPartnerPayId(orderRide.getZttravelId());
+ tradeOrderCreateData.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + "");
+ tradeOrderCreateData.setOrderDesc("完成订单");
+ tradeOrderCreateData.setRetUrl(path);
+ tradeOrderCreateData.setClientIp(ip);
+ tradeOrderCreateData.setServiceType(4);
+
+ List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
+ GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
+ goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId());
+ goodsInfoRequest.setProfitSharing("1");
+ goodsInfo.add(goodsInfoRequest);
+ tradeOrderCreateData.setGoodsInfo(goodsInfo);
+ TradeOrderCreate tradeOrderCreate = OrderUtil.tradeOrderCreate1(tradeOrderCreateData, 0);
+ PayInfo payInfo = tradeOrderCreate.getPayInfo();
+ if(!"000000".equals(payInfo.getRetCode())){
+ return ResultUtil.error(payInfo.getRetMsg());
+ }
+ orderRide.setIsCreated(1);
+ orderRide.setZttravelId(tradeOrderCreate.getOrderInfo().getOrderId());
+ info = payInfo.getData().getRedirectUrl();
+ }else{
+ //拉起支付
+ TradePayOff1Data tradePayOff1Data = new TradePayOff1Data();
+ tradePayOff1Data.setPartnerPayId(orderRide.getZttravelId());
+ tradePayOff1Data.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + "");
+ tradePayOff1Data.setRetUrl(path);
+ tradePayOff1Data.setClientIp(ip);
+ tradePayOff1Data.setOrderDesc("完成订单");
+ List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
+ GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
+ goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId());
+ goodsInfoRequest.setProfitSharing("1");
+ goodsInfo.add(goodsInfoRequest);
+ tradePayOff1Data.setGoodsInfo(goodsInfo);
+ PayInfo payInfo = OrderUtil.tradePayOff1(tradePayOff1Data, 0);
+ if(!"000000".equals(payInfo.getRetCode())){
+ return ResultUtil.error(payInfo.getRetMsg());
+ }
+ info = payInfo.getData().getRedirectUrl();
+ }
+ orderRideService.updateById(orderRide);
+
+ //创建定时任务查询订单支付状态
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
+ threadPoolExecutor.execute(()->{
+ try {
+ int num = 1;
+ int wait = 0;
+ while (num <= 13) {
+ int min = 5000;
+ wait += (min * num);
+ OrderRide orderRide1 = orderRideService.selectById(orderRide.getId());
+ if (orderRide1.getState() != 1) {
+ break;
+ }
+ GetTravelItineraryListRequest request1 = new GetTravelItineraryListRequest();
+ request1.setCustomerId(userInfo.getOnconUUID());
+ request1.setOrderNo("SF" + orderRide1.getId());
+ ListPage<List<TravelItinerary>> travelItineraryList = OrderUtil.getTravelItineraryList(request1);
+ TravelItinerary travelItinerary = travelItineraryList.getList().get(0);
+ if(travelItinerary.getStatus() != 7 || Arrays.asList(3, 11).contains(travelItinerary.getOrderStatus())){
+ GetPaymentInfoDataRequest getPaymentInfoDataRequest1 = new GetPaymentInfoDataRequest();
+ getPaymentInfoDataRequest1.setPartnerPayId(orderRide1.getZttravelId());
+ GetPaymentInfo getPaymentInfo1 = OrderUtil.paymentInfo(getPaymentInfoDataRequest1);
+
+ String trade_no = getPaymentInfo1.getPayId();
+ Financial financial = new Financial();
+ financial.setType(1);//类型 1=收入 2=支出
+ financial.setPayType("2");//支付类型 1=余额 2=微信 3=支付宝
+ financial.setMoney(orderMoney);//支付金额
+ financial.setOrderNum(orderRide1.getOrderNum());//我们本地的订单号
+ financial.setLsType(trade_no);//流水号
+ financial.setAddTime(new Date());
+ financial.setTradeStatus("success");
+ //顺风车支付
+ //修改订单表中的订单流水和支付方式
+ orderRide1.setOutNum(financial.getLsType());//流水
+ orderRide1.setPayTime(new Date());
+ orderRide1.setPayType(2);
+ orderRide1.setState(2);
+ financial.setPwType(8);//顺风车
+ financial.setUserId(orderRide1.getUserId());
+ financial.setLx(1);//1=用户 2=司机
+ financial.setOrderType(4);//顺风车
+ financialService.insert(financial);
+ orderRideService.updateById(orderRide1);
+ /*添加系统消息*/
+ try {
+ systemNoticeService.addSystemNotice(1, "您成功支付从" + orderRide1.getStartName() + "到" + orderRide1.getEndName() + "的顺风车订单", orderRide1.getUserId(), 1);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ break;
+ }
+ Thread.sleep(wait);
+ num++;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }finally {
+ threadPoolExecutor.shutdown();
+ }
+
+ });
+ }else{
+ info = new PayUtil().getPayInfo(payType,orderRide.getOrderNum(),openId,request);
+ }
return ApiJson.returnOK(info);
} catch (Exception e) {
e.printStackTrace();
--
Gitblit v1.7.1