Pu Zhibing
2025-07-02 33632d86bbf74e922ce406d9032fadc90f6bba5e
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -204,20 +204,26 @@
    public synchronized ResultUtil<BaseWarpper> taxiOrder(OrderTaxi orderTaxi, Integer uid) throws Exception {
        //定义用户所属公司
        UserInfo userInfo1 = userInfoService.selectById(uid);
        if (null == userInfo1 || userInfo1.getFlag() == 3) {
            return ResultUtil.error("无效的账户");
        }
        if (2 == userInfo1.getState()) {
            return ResultUtil.error("账号已被冻结,请联系管理员");
        }
        Company query = companyCityService.query(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));
        if(null == query){
        if (null == query) {
            return ResultUtil.error("出发点暂未开通");
        }
        if(null != userInfo1.getCompanyId() && 0 != userInfo1.getCompanyId()){
        if (null != userInfo1.getCompanyId() && 0 != userInfo1.getCompanyId()) {
            userInfo1.setCompanyId(query.getId());
            userInfoService.updateById(userInfo1);
        }
        if(orderTaxi.getTravelTime().getTime() > (System.currentTimeMillis() + 600000)){
        if (orderTaxi.getTravelTime().getTime() > (System.currentTimeMillis() + 600000)) {
            orderTaxi.setOrderType(2);
        }
        /**
         * 1.出租车、专车、跨城有待支付的订单不能叫车
         * 2.小件物流有未完成的订单可以下跨城、专车、出租车
@@ -609,22 +615,22 @@
//                    resultUtil = ResultUtil.error(map.get("msg"), "");
//                }
            }
            if(payType == 3){//余额支付
                if(userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()){
            if(payType == 3) {//余额支付
                if (userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()) {
                    return ResultUtil.error("余额不足,无法完成支付");
                }
                resultUtil= appOrderController.moneyPay(id,userInfo.getId(),query.getMoney());
                if(resultUtil.getCode()==500){
                    return ResultUtil.error("电子余额不足,无法完成支付");
                }
//                resultUtil= appOrderController.moneyPay(id,userInfo.getId(),query.getMoney());
//                if(resultUtil.getCode()==500){
//                    return ResultUtil.error("电子余额不足,无法完成支付");
//                }
                userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(query.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                //添加交易明细
                transactionDetailsService.saveData(uid, "出租车取消订单", query.getMoney(), 2, 1, 1, 2, id);
                userInfoService.updateById(userInfo);
                //解除小号绑定
                if(orderTaxi.getBindId() != null){
                if (orderTaxi.getBindId() != null) {
                    chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(), orderTaxi.getTelX(), (System.currentTimeMillis() + 600000));
                }
@@ -1763,36 +1769,39 @@
    public OrderServerWarpper queryOrderServer(Integer orderId, Integer uid) throws Exception {
        OrderServerWarpper orderServerWarpper = new OrderServerWarpper();
        OrderTaxi orderTaxi = this.selectById(orderId);
        if(null == orderTaxi){
        if (null == orderTaxi) {
            return orderServerWarpper;
        }
        //计算预计距离和剩余时间
        String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(orderTaxi.getDriverId()));
        if(null == value || "".equals(value)){
            System.err.println("司机没有上传位置信息");
            //调用获取轨迹中的数据
            List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 2);
            if(list.size() > 0){
                Map<String, Object> map = list.get(list.size() - 1);
                value = map.get("lon") + "," + map.get("lat");
        String value = null;
        if (null != orderTaxi.getDriverId()) {
            value = (String) redisTemplate.opsForValue().get("DRIVER" + orderTaxi.getDriverId());
            if (null == value || "".equals(value)) {
                System.err.println("司机没有上传位置信息");
                //调用获取轨迹中的数据
                List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 2);
                if (list.size() > 0) {
                    Map<String, Object> map = list.get(list.size() - 1);
                    value = map.get("lon") + "," + map.get("lat");
                }
            }
        }
        orderServerWarpper.setOrderId(orderTaxi.getId());
        orderServerWarpper.setOrderType(2);
        orderServerWarpper.setState(orderTaxi.getState());
        orderServerWarpper.setLon(null != value ? value.split(",")[0] : "0.0");
        orderServerWarpper.setLat(null != value ? value.split(",")[1] : "0.0");
        orderServerWarpper.setReassignNotice(orderTaxi.getReassignNotice());
        if(orderTaxi.getState() == 2 || orderTaxi.getState() == 3){//前往预约地
        if (orderTaxi.getState() == 2 || orderTaxi.getState() == 3) {//前往预约地
            // TODO: 2023/11/4 无法修改
            Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderTaxi.getStartLon() + "," + orderTaxi.getStartLat(), 1);
            String d = "0";
            String t = "0";
            if(null == distance){
            if (null == distance) {
                System.err.println("查询距离出错了");
            }else{
            } else {
                d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString();
                t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + "";
            }
@@ -1877,7 +1886,7 @@
            userRedPacketRecord.setUserId(orderTaxi.getUserId());
            userRedPacketRecordService.insert(userRedPacketRecord);
        }
        appOrderController.moneyPay(orderTaxi.getId(),orderTaxi.getUserId(),money);
//        appOrderController.moneyPay(orderTaxi.getId(),orderTaxi.getUserId(),money);
        return ResultUtil.success(baseWarpper);
    }
@@ -2090,11 +2099,7 @@
                    }
                    Company query = companyCityService.query(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));//获取起点所属分公司
                    List<PushOrder> querys = pushOrderService.querys(null, 2, query.getId());//获取需要推送的次数
                    boolean b = false;
                    for (int i = 1; i <= querys.size(); i++) {
                        if (b) {
                            break;
                        }
                        PushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0);
                        System.out.println("pushOrder:" + pushOrder);
                        //获取空闲司机
@@ -2160,23 +2165,23 @@
            resultUtil = payMoneyUtil.alipay("感谢费", "感谢费", "", orderId + "_2_" + UUIDUtil.getRandomCode(5), money.toString(), "/base/aliPayThankYouFee");
            paymentRecordService.saveData(1, uid, 1, orderId, 2, 2, money, "", 1);//添加预支付数据
        }
        if(payType == 3){//余额支付
            if(userInfo.getBalance() == null || userInfo.getBalance() < money){
        if(payType == 3) {//余额支付
            if (userInfo.getBalance() == null || userInfo.getBalance() < money) {
                return ResultUtil.error("余额不足,无法完成支付");
            }
            resultUtil= appOrderController.moneyPay(orderId,userInfo.getId(),money);
            if(resultUtil.getCode()==500){
                return ResultUtil.error("电子余额不足,无法完成支付");
            }
//            resultUtil= appOrderController.moneyPay(orderId,userInfo.getId(),money);
//            if(resultUtil.getCode()==500){
//                return ResultUtil.error("电子余额不足,无法完成支付");
//            }
            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            SysIntegral query1 = sysIntegralMapper.query(orderTaxi.getCompanyId());
            userInfo.setIntegral(userInfo.getIntegral() + (money.intValue() * query1.getIntegral()));//积分
            //添加交易明细
            transactionDetailsService.saveData(uid, "出租车-感谢费", money, 2, 1, 1, 2, orderId);
            userInfoService.updateById(userInfo);
            orderTaxi.setThankYouFee(money);
            this.updateById(orderTaxi);