Pu Zhibing
2025-05-16 4c99ee7028c3fe58a2cd4b8273b22c75c45574fc
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -55,6 +55,7 @@
import java.math.MathContext;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
import static com.stylefeng.guns.modular.taxi.service.impl.OrderTaxiServiceImpl.orderIds;
@@ -238,10 +239,10 @@
     * @throws Exception
     */
    @Override
    public List<Map<String, Object>> queryCoupon(Integer orderId, Integer uid, Integer pageNum, Integer size) throws Exception {
    public List<Map<String, Object>> queryCoupon(Integer language, Integer orderId, Integer uid, Integer pageNum, Integer size) throws Exception {
        OrderCrossCity orderCrossCity = this.selectById(orderId);
        List<Map<String, Object>> list = userCouponRecordService.queryCoupon(uid, orderCrossCity.getCompanyId(), 1, 3, orderCrossCity.getOrderMoney(), pageNum, size);
        List<Map<String, Object>> list1 = userCouponRecordService.queryCoupon(uid, orderCrossCity.getCompanyId(), 1, 0, orderCrossCity.getOrderMoney(), pageNum, size);
        List<Map<String, Object>> list = userCouponRecordService.queryCoupon(language, uid, orderCrossCity.getCompanyId(), 1, 3, orderCrossCity.getOrderMoney(), pageNum, size);
        List<Map<String, Object>> list1 = userCouponRecordService.queryCoupon(language, uid, orderCrossCity.getCompanyId(), 1, 0, orderCrossCity.getOrderMoney(), pageNum, size);
        list.addAll(list1);
        return list;
    }
@@ -319,7 +320,7 @@
                paymentRecordService.saveData(1, null, null, orderId, 3, 1, orderMoney, null, 1);//添加预支付数据
                resultUtil = resultUtil;
            }else{
                resultUtil = ResultUtil.error("获取支付信息失败");
                resultUtil = ResultUtil.error(language == 1 ? "获取支付信息失败" : language == 2 ? "Failed to obtain payment information" : "Impossible d’obtenir les informations de paiement");
            }
        }
        if(payType == 2){//支付宝支付
@@ -328,12 +329,12 @@
                paymentRecordService.saveData(1, null, null, orderId, 3, 2, orderMoney, null, 1);//添加预支付数据
                resultUtil = resultUtil;
            }else{
                resultUtil = ResultUtil.error("获取支付信息失败");
                resultUtil = ResultUtil.error(language == 1 ? "获取支付信息失败" : language == 2 ? "Failed to obtain payment information" : "Impossible d’obtenir les informations de paiement");
            }
        }
        if(payType == 3){//余额支付
            if(userInfo.getBalance() == null || userInfo.getBalance() < orderMoney){
                return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient account balance" : "Solde de compte insuffisant");
                return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant");
            }
            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
@@ -378,9 +379,8 @@
            new Thread(new Runnable() {
                @Override
                public void run() {
                    pushUtil.pushOrderState(1, orderCrossCity.getUserId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0);
                    pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0);
                    pushUtil.pushDriverPosition(orderCrossCity.getId(), 3);
                    pushUtil.pushOrderState(1, orderCrossCity.getUserId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0, "", "user");
                    pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0, "", "user");
                }
            }).start();
@@ -452,9 +452,8 @@
            new Thread(new Runnable() {
                @Override
                public void run() {
                    pushUtil.pushOrderState(1, orderCrossCity.getUserId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0);
                    pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0);
                    pushUtil.pushDriverPosition(orderCrossCity.getId(), 3);
                    pushUtil.pushOrderState(1, orderCrossCity.getUserId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0, "", "user");
                    pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0, "", "user");
                }
            }).start();
@@ -695,8 +694,24 @@
     * @throws Exception
     */
    @Override
    public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception {
    public Map<String, Object> queryOrderInfo(Integer language, Integer orderId) throws Exception {
        Map<String, Object> map = orderCrossCityMapper.queryOrderInfo(orderId);
        if(null != map.get("insertTime")){
            String insertTime = map.get("insertTime").toString();
            map.put("insertTime", DateUtil.conversionFormat(language, insertTime));
        }
        if(null != map.get("travelTime")){
            String travelTime = map.get("travelTime").toString();
            map.put("travelTime", DateUtil.conversionFormat1(language, travelTime));
        }
        if(null != map.get("arriveTime")){
            String arriveTime = map.get("arriveTime").toString();
            map.put("arriveTime", DateUtil.conversionFormat(language, arriveTime));
        }
        if(null != map.get("travelTime1")){
            String travelTime1 = map.get("travelTime1").toString();
            map.put("travelTime1", DateUtil.conversionFormat(language, travelTime1));
        }
        if(null != map.get("reassignNotice") && Integer.valueOf(String.valueOf(map.get("reassignNotice"))) == 2){//改派完成,重新获取了新的司机数据,开始修改数据防止继续调用
            OrderCrossCity orderCrossCity = this.selectById(orderId);
            orderCrossCity.setReassignNotice(0);
@@ -729,13 +744,13 @@
            return ResultUtil.error("获取数据失败,订单信息有误");
        }
        double amount = 0;
        CancleOrder query = cancleOrderService.query(1, 3, orderCrossCity.getCompanyId());
        if(null != orderCrossCity.getDriverId() &&
                (orderCrossCity.getSnatchOrderTime().getTime() + query.getMinuteNum() * 60 * 1000) < new Date().getTime()){//收费的情况
            if(null != query){
                amount += query.getMoney();
            }
        }
//        CancleOrder query = cancleOrderService.query(1, 3, orderCrossCity.getCompanyId());
//        if(null != orderCrossCity.getDriverId() &&
//                (orderCrossCity.getSnatchOrderTime().getTime() + query.getMinuteNum() * 60 * 1000) < new Date().getTime()){//收费的情况
//            if(null != query){
//                amount += query.getMoney();
//            }
//        }
        BaseWarpper baseWarpper = new BaseWarpper();
        baseWarpper.setAmount(amount);
        return ResultUtil.success(baseWarpper);
@@ -771,70 +786,70 @@
            orderCancel = orderCancelService.selectById(cancleId);
        }
        CancleOrder query = cancleOrderService.query(1, 3, orderCrossCity.getCompanyId());
        if(null != query){
            if(payType == 1){//微信支付
                orderCancel.setPayType(1);
                orderCancelService.updateById(orderCancel);
                resultUtil = payMoneyUtil.weixinpay("订单取消",id +"",id + "_3_fei",query.getMoney()+"","/base/wxCancelOrderTaxi","JSAPI",userInfo.getAppletsOpenId());
                if(resultUtil.getCode()==200){
                    paymentRecordService.saveData(1, null, null, id, 3, 1, query.getMoney(), null, 1);//添加预支付数据
                    resultUtil = resultUtil;
                }else{
                    resultUtil = ResultUtil.error("获取支付信息失败", "");
                }
            }
            if(payType == 2){//支付宝支付
                orderCancel.setPayType(2);
                orderCancelService.updateById(orderCancel);
                resultUtil = payMoneyUtil.alipay("订单取消","订单取消",id + ",3",query.getMoney()+"","/base/aliCancelOrderTaxi");
                if(resultUtil.getCode()==200){
                    paymentRecordService.saveData(1, null, null, id, 3, 2, query.getMoney(), null, 1);//添加预支付数据
                    resultUtil = resultUtil;
                }else{
                    resultUtil = ResultUtil.error("获取支付信息失败", "");
                }
            }
            if(payType == 3){//余额支付
                if(userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()){
                    return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient account balance" : "Solde de compte insuffisant");
                }
                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, 3, id);
                userInfoService.updateById(userInfo);
                //解除小号绑定
                if(orderCrossCity.getBindId() != null){
                    chinaMobileUtil.midAxbUnBindSend(orderCrossCity.getBindId(),orderCrossCity.getTelX());
                }
                orderCrossCity.setState(10);
                orderCrossCity.setTelX("");
                orderCrossCity.setBindId("");
                this.updateById(orderCrossCity);
                orderCancel.setState(2);
                orderCancel.setPayType(3);
                orderCancelService.updateById(orderCancel);
                //添加已收入明细
                incomeService.saveData(1, orderCrossCity.getCompanyId(), 3, orderCrossCity.getId(), 3, query.getMoney());
                this.deleteTask(id);//删除定时任务
//                new Thread(new Runnable() {
//                    @Override
//                    public void run() {
//                        pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0);
//                    }
//                }).start();
                //添加消息
                systemNoticeService.addSystemNotice(1, "您已使用余额成功支付取消订单费用,谢谢使用!", orderCrossCity.getUserId(), 1);
            }
        }
//        CancleOrder query = cancleOrderService.query(1, 3, orderCrossCity.getCompanyId());
//        if(null != query){
//            if(payType == 1){//微信支付
//                orderCancel.setPayType(1);
//                orderCancelService.updateById(orderCancel);
//                resultUtil = payMoneyUtil.weixinpay("订单取消",id +"",id + "_3_fei",query.getMoney()+"","/base/wxCancelOrderTaxi","JSAPI",userInfo.getAppletsOpenId());
//                if(resultUtil.getCode()==200){
//                    paymentRecordService.saveData(1, null, null, id, 3, 1, query.getMoney(), null, 1);//添加预支付数据
//                    resultUtil = resultUtil;
//                }else{
//                    resultUtil = ResultUtil.error(language == 1 ? "获取支付信息失败" : language == 2 ? "Failed to obtain payment information" : "Impossible d’obtenir les informations de paiement", "");
//                }
//            }
//            if(payType == 2){//支付宝支付
//                orderCancel.setPayType(2);
//                orderCancelService.updateById(orderCancel);
//                resultUtil = payMoneyUtil.alipay("订单取消","订单取消",id + ",3",query.getMoney()+"","/base/aliCancelOrderTaxi");
//                if(resultUtil.getCode()==200){
//                    paymentRecordService.saveData(1, null, null, id, 3, 2, query.getMoney(), null, 1);//添加预支付数据
//                    resultUtil = resultUtil;
//                }else{
//                    resultUtil = ResultUtil.error(language == 1 ? "获取支付信息失败" : language == 2 ? "Failed to obtain payment information" : "Impossible d’obtenir les informations de paiement", "");
//                }
//            }
//            if(payType == 3){//余额支付
//                if(userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()){
//                    return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant");
//                }
//
//                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, 3, id);
//                userInfoService.updateById(userInfo);
//
//                //解除小号绑定
//                if(orderCrossCity.getBindId() != null){
//                    chinaMobileUtil.midAxbUnBindSend(orderCrossCity.getBindId(),orderCrossCity.getTelX());
//                }
//
//                orderCrossCity.setState(10);
//                orderCrossCity.setTelX("");
//                orderCrossCity.setBindId("");
//                this.updateById(orderCrossCity);
//
//                orderCancel.setState(2);
//                orderCancel.setPayType(3);
//                orderCancelService.updateById(orderCancel);
//
//                //添加已收入明细
//                incomeService.saveData(1, orderCrossCity.getCompanyId(), 3, orderCrossCity.getId(), 3, query.getMoney());
//
//                this.deleteTask(id);//删除定时任务
//
////                new Thread(new Runnable() {
////                    @Override
////                    public void run() {
////                        pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0);
////                    }
////                }).start();
//
//                //添加消息
//                systemNoticeService.addSystemNotice(1, "您已使用余额成功支付取消订单费用,谢谢使用!", orderCrossCity.getUserId(), 1);
//            }
//        }
        return resultUtil;
    }
@@ -976,10 +991,7 @@
            }else{//随机金额
                Double startMoney = Double.valueOf(String.valueOf(query.get("startMoney")));
                Double endMoney = Double.valueOf(String.valueOf(query.get("endMoney")));
                int i = new BigDecimal(endMoney).subtract(new BigDecimal(startMoney)).intValue();
                Random random = new Random();
                int num = random.nextInt(i);
                money = new BigDecimal(startMoney).add(new BigDecimal(num)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
                money = new BigDecimal(startMoney + (Math.random() * (endMoney - startMoney))).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
            }
            //判断当前红包是否大于剩余可领取总金额
            if(money.compareTo(Double.valueOf(query.get("lavePrice").toString())) > 0){
@@ -993,10 +1005,10 @@
            //添加临时红包数据
            UserRedPacketRecord userRedPacketRecord = new UserRedPacketRecord();
            userRedPacketRecord.setMoney(money);
            userRedPacketRecord.setRemainingAmount(money);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
            calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + Integer.valueOf(String.valueOf(query.get("effective"))));
            userRedPacketRecord.setExpirationTime(calendar.getTime());
            userRedPacketRecord.setInsertTime(new Date());
            userRedPacketRecord.setCompanyId(Integer.valueOf(String.valueOf(query.get("companyId"))));
            userRedPacketRecord.setState(0);
@@ -1108,27 +1120,49 @@
     * @throws Exception
     */
    @Override
    public List<Map<String, Object>> queryMyOrderList(Integer uid, Integer pageNum, Integer size) throws Exception {
    public List<Map<String, Object>> queryMyOrderList(Integer language, Integer uid, Integer pageNum, Integer size) throws Exception {
        pageNum = (pageNum - 1) * size;
        List<Map<String, Object>> maps = orderCrossCityMapper.queryMyOrderList(uid, pageNum, size);
        for(Map<String, Object> map : maps){
            if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){
                map.put("state", map.get("oldState"));
            }
            if(null != map.get("orderTime")){
                String orderTime = map.get("orderTime").toString();
                map.put("orderTime", DateUtil.conversionFormat(language, orderTime));
            }
            if(null != map.get("time")){
                String time = map.get("time").toString();
                map.put("time", DateUtil.conversionFormat1(language, time));
            }
        }
        return maps;
    }
    @Override
    public List<Map<String, Object>> queryMyTravelRecord(Integer uid) {
        return orderCrossCityMapper.queryMyTravelRecord(uid);
    public List<Map<String, Object>> queryMyTravelRecord(Integer language, Integer uid) {
        List<Map<String, Object>> list = orderCrossCityMapper.queryMyTravelRecord(uid);
        for (Map<String, Object> map : list) {
            if(null != map.get("time")){
                String time = map.get("time").toString();
                map.put("time", DateUtil.conversionFormat(language, time));
            }
        }
        return list;
    }
    @Override
    public List<Map<String, Object>> queryInvoiceOrder(Integer type, Date startTime, Date endTime, Double startMoney, Double endMoney, Integer uid) throws Exception {
    public List<Map<String, Object>> queryInvoiceOrder(Integer language, Integer type, Date startTime, Date endTime, Double startMoney, Double endMoney, Integer uid) throws Exception {
        startTime = dateUtil.getStartOrEndDate(startTime, "start");
        endTime = dateUtil.getStartOrEndDate(endTime, "end");
        return orderCrossCityMapper.queryInvoiceOrder(type, startTime, endTime, startMoney, endMoney, uid);
        List<Map<String, Object>> list = orderCrossCityMapper.queryInvoiceOrder(type, startTime, endTime, startMoney, endMoney, uid);
        for (Map<String, Object> map : list) {
            if(null != map.get("time")){
                String time = map.get("time").toString();
                map.put("time", DateUtil.conversionFormat(language, time));
            }
        }
        return list;
    }
@@ -1139,8 +1173,15 @@
     * @throws Exception
     */
    @Override
    public List<Map<String, Object>> queryRedEnvelope(Integer uid) throws Exception {
        return orderCrossCityMapper.queryRedEnvelope(uid);
    public List<Map<String, Object>> queryRedEnvelope(Integer language, Integer uid) throws Exception {
        List<Map<String, Object>> list = orderCrossCityMapper.queryRedEnvelope(uid);
        for (Map<String, Object> map : list) {
            if(null != map.get("time")){
                String time = map.get("time").toString();
                map.put("time", DateUtil.conversionFormat(language, time));
            }
        }
        return list;
    }
@@ -1157,9 +1198,10 @@
    public ResultUtil addCancle(Integer id, String reason, String remark, Integer uid) throws Exception {
        if(ToolUtil.isNotEmpty(remark)){
            if(ToolUtil.isNotEmpty(remark)){
                remark = remark.toLowerCase();
                List<SensitiveWords> sensitiveWords = sensitiveWordsMapper.selectList(null);
                for(SensitiveWords s : sensitiveWords){
                    remark = remark.replaceAll(s.getContent(), "***");
                for(SensitiveWords s : sensitiveWords) {
                    remark = remark.replaceAll(s.getContent().toLowerCase(), "***");
                }
            }
        }
@@ -1174,93 +1216,93 @@
        }
        //还原座位
        CancleOrder query1 = cancleOrderService.query(1, 3, orderCrossCity.getCompanyId());
        if (null != query1) {
            integer = orderCancelService.saveData(id, 3, reason, remark, null, null, 2, 1, uid);
            orderCrossCity.setState(10);
            this.updateById(orderCrossCity);
            if(orderCrossCity.getState() != 7){//已经支付的情况推送给司机提醒
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0);
                        System.err.println("推送取消操作---------------------");
                    }
                }).start();
            }
            //修改司机座位
            LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId());
            lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber());
            lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity.getTravelMode() == 1 ? "," : "") + orderCrossCity.getSeatNumber());
            lineShiftDriverMapper.updateById(lineShiftDriver);
            //修改司机为空闲
            List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11);
            if(orderCrossCities.size() == 0){
                Driver driver = driverService.selectById(orderCrossCity.getDriverId());
                driver.setState(2);
                driverService.updateById(driver);
            }
        }else{
            return ResultUtil.error("请完善后台取消规则设置");
        }
        //已支付的情况下进行退款操作
        if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){
            if(orderCrossCity.getPayType() == 3){//余额支付
                UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId());
                userInfo.setBalance(userInfo.getBalance() + orderCrossCity.getPayMoney());
                userInfoService.updateById(userInfo);
                //添加交易明细
                transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", orderCrossCity.getPayMoney(), 1, 1, 1, 3, id);
            }else{
                PaymentRecord query = paymentRecordService.query(1, null, null, id, 3, null, 2);
                if(null == query){
                    return ResultUtil.error("订单还未进行支付");
                }
                if(orderCrossCity.getPayType() == 1){
                    payMoneyUtil.wxRefund(query.getCode(),id + ",3",query.getAmount()+"",query.getAmount()+"","");
                    transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, id);
                }else{
                    payMoneyUtil.aliRefund(query.getCode(),query.getAmount()+"");
                    transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, id);
                }
                /*Map<String, Object> merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), id + "_3", orderCrossCity.getOrderNum());
                if(Integer.valueOf(merrefund.get("code").toString()) == 0){
                    Map<String, Object> refundqry = icbcPayUtil.refundqry("", query.getCode(), orderCrossCity.getOrderNum());
                    if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0){//成功
                        //添加交易明细
                        transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, id);
                    }
                    if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1){//失败
                        return ResultUtil.error("订单取消失败(退款不成功)");
                    }
                    if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2){//未知
                        return ResultUtil.error("退款返回未知异常");
                    }
                }*/
            }
            //添加负的收入明细
            List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", id).eq("orderType", 3));
            for(Income income : incomes){
                if(income.getUserType() == 2){//处理司机的收入
                    Driver driver = driverService.selectById(income.getObjectId());
                    driver.setBalance(driver.getBalance() - income.getMoney());
                    driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney());
                    driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney());
                    driverService.updateById(driver);
                }
                Income income1 = new Income();
                BeanUtils.copyProperties(income, income1);
                income1.setMoney(income.getMoney() * -1);
                income1.setId(null);
                income1.setInsertTime(new Date());
                incomeService.insert(income1);
            }
        }
//        CancleOrder query1 = cancleOrderService.query(1, 3, orderCrossCity.getCompanyId());
//        if (null != query1) {
//            integer = orderCancelService.saveData(id, 3, reason, remark, null, null, 2, 1, uid);
//            orderCrossCity.setState(10);
//            this.updateById(orderCrossCity);
//
//            if(orderCrossCity.getState() != 7){//已经支付的情况推送给司机提醒
//                new Thread(new Runnable() {
//                    @Override
//                    public void run() {
//                        pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0);
//                        System.err.println("推送取消操作---------------------");
//                    }
//                }).start();
//            }
//
//            //修改司机座位
//            LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId());
//            lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber());
//            lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity.getTravelMode() == 1 ? "," : "") + orderCrossCity.getSeatNumber());
//            lineShiftDriverMapper.updateById(lineShiftDriver);
//
//            //修改司机为空闲
//            List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11);
//            if(orderCrossCities.size() == 0){
//                Driver driver = driverService.selectById(orderCrossCity.getDriverId());
//                driver.setState(2);
//                driverService.updateById(driver);
//            }
//        }else{
//            return ResultUtil.error("请完善后台取消规则设置");
//        }
//
//        //已支付的情况下进行退款操作
//        if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){
//            if(orderCrossCity.getPayType() == 3){//余额支付
//                UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId());
//                userInfo.setBalance(userInfo.getBalance() + orderCrossCity.getPayMoney());
//                userInfoService.updateById(userInfo);
//                //添加交易明细
//                transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", orderCrossCity.getPayMoney(), 1, 1, 1, 3, id);
//            }else{
//                PaymentRecord query = paymentRecordService.query(1, null, null, id, 3, null, 2);
//                if(null == query){
//                    return ResultUtil.error("订单还未进行支付");
//                }
//                if(orderCrossCity.getPayType() == 1){
//                    payMoneyUtil.wxRefund(query.getCode(),id + ",3",query.getAmount()+"",query.getAmount()+"","");
//                    transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, id);
//                }else{
//                    payMoneyUtil.aliRefund(query.getCode(),query.getAmount()+"");
//                    transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, id);
//                }
//                /*Map<String, Object> merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), id + "_3", orderCrossCity.getOrderNum());
//                if(Integer.valueOf(merrefund.get("code").toString()) == 0){
//                    Map<String, Object> refundqry = icbcPayUtil.refundqry("", query.getCode(), orderCrossCity.getOrderNum());
//                    if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0){//成功
//                        //添加交易明细
//                        transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, id);
//                    }
//                    if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1){//失败
//                        return ResultUtil.error("订单取消失败(退款不成功)");
//                    }
//                    if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2){//未知
//                        return ResultUtil.error("退款返回未知异常");
//                    }
//                }*/
//            }
//
//            //添加负的收入明细
//            List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", id).eq("orderType", 3));
//            for(Income income : incomes){
//                if(income.getUserType() == 2){//处理司机的收入
//                    Driver driver = driverService.selectById(income.getObjectId());
//                    driver.setBalance(driver.getBalance() - income.getMoney());
//                    driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney());
//                    driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney());
//                    driverService.updateById(driver);
//                }
//                Income income1 = new Income();
//                BeanUtils.copyProperties(income, income1);
//                income1.setMoney(income.getMoney() * -1);
//                income1.setId(null);
//                income1.setInsertTime(new Date());
//                incomeService.insert(income1);
//            }
//        }
        //添加消息
        systemNoticeService.addSystemNotice(1, "您已成功取消出行订单,谢谢使用!", orderCrossCity.getUserId(), 1);
@@ -1414,7 +1456,7 @@
        //定义用户所属公司
        OrderTaxi orderTaxi = new OrderTaxi();
        UserInfo userInfo1 = userInfoService.selectById(uid);
        Company query = companyCityService.query1(startLon, startLat);
        Company query = companyCityService.query1(uid, startLon, startLat);
        if(null == query){
            return ResultUtil.error("出发点暂未开通");
        }
@@ -1540,7 +1582,7 @@
            if(ToolUtil.isEmpty(userInfo.getPhone())){
                return ResultUtil.error("请先绑定手机号码");
            }
            orderPrivateCar.setPassengers(userInfo.getFirstName() + "." + userInfo.getLastName());
            orderPrivateCar.setPassengers(ToolUtil.isNotEmpty(userInfo.getFirstName()) ? userInfo.getFirstName() + "." + userInfo.getLastName() : "");
            orderPrivateCar.setPassengersPhone(userInfo.getPhone());
        }
        orderPrivateCar.setState(1);
@@ -1548,6 +1590,9 @@
        orderPrivateCar.setTravelTime(travelTime);
        orderPrivateCar.setOrderType(reservation);
        orderPrivateCar.setOrderSource(orderSource);
        String tripId = redisUtil.getValue("trip" + uid);
        orderPrivateCar.setTripId(tripId);
        orderPrivateCar.setIsover(0);
        orderPrivateCar.setIsReassign(1);
        orderPrivateCar.setIsDelete(1);
@@ -1584,7 +1629,7 @@
                        if(orderType == 1){//专车
                            OrderPrivateCar orderPrivateCar = orderPrivateCarMapper.selectById(orderId);
                            OrderPrivateCarServiceImpl.orderIds.add(orderPrivateCar.getId());//添加记录,防止调用接口重复提醒无人接单
                            Company query = companyCityService.query1(String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司
                            Company query = companyCityService.query1(orderPrivateCar.getUserId(), String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司
                            List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//获取需要推送的次数
                            for(int i = 1; i <= querys.size(); i++){
                                //订单被抢后的处理
@@ -1618,7 +1663,7 @@
                                //开始进行推送的处理
                                PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0);
                                //获取空闲司机
                                List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
                                List<Driver> list = driverService.queryIdleDriver(orderPrivateCar.getUserId(), 1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
                                if(list.size() > 0){
                                    double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数
                                    int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取)
@@ -1634,7 +1679,7 @@
                                        if(bo){
                                            continue;
                                        }
                                        pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime());
                                        pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime(), "", "user");
                                    }
                                }
@@ -1653,7 +1698,7 @@
                        if(orderType == 2){//出租车
                            OrderTaxi orderTaxi = orderTaxiMapper.selectById(orderId);
                            OrderTaxiServiceImpl.orderIds.add(orderTaxi.getId());//添加记录,防止调用接口重复提醒无人接单
                            Company query = companyCityService.query1(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));//获取起点所属分公司
                            Company query = companyCityService.query1(orderTaxi.getUserId(), String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));//获取起点所属分公司
                            List<PushOrder> querys = pushOrderService.querys(null, 2, query.getId());//获取需要推送的次数
                            for(int i = 1; i <= querys.size(); i++){
                                //处理订单被抢
@@ -1705,7 +1750,7 @@
                                        }
                                        pushUtil.pushOrderState(2, driver.getId(), orderTaxi.getId(), 2, orderTaxi.getState(), pushOrder.getPushTime());
                                        pushUtil.pushOrderState(2, driver.getId(), orderTaxi.getId(), 2, orderTaxi.getState(), pushOrder.getPushTime(), "", "user");
                                    }
                                }