liujie
2026-03-10 55d4ebb2653dba711cb1e188d7ae6645e56276c5
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/PayInfoController.java
@@ -50,10 +50,6 @@
    private IFinancialService financialService;
    /**
     * 顺风车支付
     * @param orderId
@@ -67,23 +63,23 @@
            @ApiImplicitParam(name = "orderId", value = "订单id", dataType = "int"),
            @ApiImplicitParam(name = "couponId", value = "优惠券id", dataType = "int"),
    })
    public Object payBalanceRide(Integer orderId,Integer couponId){
    public Object payBalanceRide(Integer orderId, Integer couponId) {
        try {
            OrderRide orderRide=orderRideService.selectById(orderId);
            if(orderRide.getState() == 6){
            OrderRide orderRide = orderRideService.selectById(orderId);
            if (orderRide.getState() == 6) {
                return ApiJson.returnNG("超出支付时间,订单已自动取消");
            }
            if(orderRide.getState() == 2){
            if (orderRide.getState() == 2) {
                return ApiJson.returnNG("该订单已支付");
            }
            orderRide.setPayTime(new Date());
            orderRide.setPayType(1);//1余额
            orderRide.setState(2);//已支付
            Double couponMoney=0d;
            Integer cid=0;//优惠券id
            String couponName="";
            Double couponMoney = 0d;
            Integer cid = 0;//优惠券id
            String couponName = "";
            /*todo 如果使用了优惠券*/
            if(couponId!= null && couponId>0){
            if (couponId != null && couponId > 0) {
//            orderRide.setCouponId(couponId);
//            CouponUser couponUser=couponUserService.selectById(couponId);
//            if(couponUser!=null){
@@ -96,13 +92,13 @@
//            }
            }
            /*支付金额=订单金额-优惠券*/
            Double money=orderRide.getMoney()-couponMoney<0?0:orderRide.getMoney()-couponMoney;
            Double money = orderRide.getMoney() - couponMoney < 0 ? 0 : orderRide.getMoney() - couponMoney;
            //减去用户余额
            UserInfo userInfo = userInfoService.selectById(orderRide.getUserId());
            if((userInfo.getBalance() == null ?0 : userInfo.getBalance()) < money){
            if ((userInfo.getBalance() == null ? 0 : userInfo.getBalance()) < money) {
                return ApiJson.returnNG("用户余额不足");
            }
            if(cid>0){
            if (cid > 0) {
                //todo 优惠券总额
//            Coupon coupon=couponService.selectById(cid);
//            //优惠券类型(1注册、2分享、3活动、4验票)
@@ -114,12 +110,12 @@
            }
            orderRideService.updateById(orderRide);
            //系统消息
            systemNoticeService.addSystemNotice(1, "您成功支付从"+orderRide.getStartName()+"到"+orderRide.getEndName()+"的顺风车订单",
                    orderRide.getUserId(),1);
            systemNoticeService.addSystemNotice(1, "您成功支付从" + orderRide.getStartName() + "到" + orderRide.getEndName() + "的顺风车订单",
                    orderRide.getUserId(), 1);
            /*修改用户余额*/
            userInfo.setBalance(userInfo.getBalance() - money);
            userInfoService.updateById(userInfo);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ApiJson.returnOK("支付成功");
@@ -143,158 +139,40 @@
            @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,
                            String path, String ip, 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){
            if (orderId == null || orderId == 0) {
                return ApiJson.returnNG("订单ID不能为空");
            }
            if(type == null || type == 0){
            if (type == null || type == 0) {
                return ApiJson.returnNG("type不能为空");
            }
            if(payType == null || payType == 0){
            if (payType == null || payType == 0) {
                return ApiJson.returnNG("payType不能为空");
            }
            Object info=new Object();
            String openId=null;
            if(ToolUtil.isNotEmpty(code)){
            Object info = new Object();
            String openId = null;
            if (ToolUtil.isNotEmpty(code)) {
                /*根据微信端的code获取openId*/
//                openId=new JsapiTicketUtilX().getOpenId(code);
            }
            OrderRide orderRide=orderRideService.selectById(orderId);
            if(orderRide.getState()==6){
            OrderRide orderRide = orderRideService.selectById(orderId);
            if (orderRide.getState() == 6) {
                return ApiJson.returnNG("该订单已取消");
            }
            if(orderRide.getState()==2){//已支付
            if (orderRide.getState() == 2) {//已支付
                return ApiJson.returnNG("该订单不需要支付");
            }
            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);
            }
            info = new PayUtil().getPayInfo(payType, orderRide.getOrderNum(), openId, request);
            return ApiJson.returnOK(info);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ApiJson.returnNG("购票失败");
    }
    /**
     * 支付宝回调
     * @return
@@ -302,7 +180,7 @@
    @ResponseBody
    @RequestMapping("/alipay/notify")
    public void notifyUrl(HttpServletRequest request, HttpServletResponse response) {
        new PayUtil().notifyUrl(request,response);
        new PayUtil().notifyUrl(request, response);
    }
    /**
@@ -313,6 +191,6 @@
    @ResponseBody
    @RequestMapping("/wxpay/notify")
    public void wxnotify(HttpServletRequest request, HttpServletResponse response) {
        new PayUtil().wxnotify(request,response);
        new PayUtil().wxnotify(request, response);
    }
}