Pu Zhibing
4 天以前 8522e469e00e1cf6c0410165b0f76c806c13ca83
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -9,16 +9,25 @@
import com.stylefeng.guns.modular.call.server.IOrderCallService;
import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
import com.stylefeng.guns.modular.shunfeng.model.OrderRide;
import com.stylefeng.guns.modular.shunfeng.service.IOrderRideService;
import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
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.dao.CarMapper;
import com.stylefeng.guns.modular.system.dao.SystemPriceMapper;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.model.vo.TripOrderVo;
import com.stylefeng.guns.modular.system.model.vo.TripSheetVo;
import com.stylefeng.guns.modular.system.model.vo.UnPayOrderVO;
import com.stylefeng.guns.modular.system.pdf.TripSheetGenerator;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
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;
@@ -31,6 +40,9 @@
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
@@ -39,8 +51,13 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.PrintWriter;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
@@ -66,28 +83,28 @@
    @Autowired
    private IOrderService orderService;
    @Autowired
    private IDriverService driverService;
    @Autowired
    private WeChatUtil weChatUtil;
    @Autowired
    private IOrderPrivateCarService orderPrivateCarService;
    @Autowired
    private GDMapGeocodingUtil gdMapGeocodingUtil;
    @Autowired
    private IComplaintService complaintService;
    @Autowired
    private IOrderEvaluateService orderEvaluateService;
    @Autowired
    private IOrderCrossCityService orderCrossCityService;
    @Autowired
    private IOrderLogisticsService orderLogisticsService;
@@ -120,7 +137,7 @@
    @Autowired
    private IAdditionalFeeService additionalFeeService;
    @Autowired
    private ITEnterpriseWithdrawalService enterpriseWithdrawalService;
    @Autowired
@@ -129,17 +146,30 @@
    private IUserCouponRecordService userCouponRecordService;
    @Value("${pushMinistryOfTransport}")
    private boolean pushMinistryOfTransport;
    @Resource
    private SystemPriceMapper systemPriceMapper;
    @Resource
    private RedisTemplate<String, Object> redisTemplate;
    @Resource
    private ISystemPriceCityService systemPriceCityService;
    @Value("${trip.sheet.filePath}")
    private String filePath;
    @Autowired
    private EmailUtil emailUtil;
    @Autowired
    private TripSheetGenerator tripSheetGenerator;
    @Autowired
    private IServerCarModelService serverCarModelService;
    @Autowired
    private IOrderRideService orderRideService;
    /**
     * 获取正在进行中的订单
     *
@@ -152,16 +182,16 @@
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<List<OrderStatusWarpper>> queryServingOrder(HttpServletRequest request){
    public ResultUtil<List<OrderStatusWarpper>> queryServingOrder(HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            List<OrderStatusWarpper> data = new ArrayList<>();
            List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.queryOrder(uid, 1, 2, 3, 4, 5, 6, 7, 11, 12);
            for(OrderPrivateCar orderPrivateCar : orderPrivateCars){
                if(orderPrivateCar.getState() == 11){
            for (OrderPrivateCar orderPrivateCar : orderPrivateCars) {
                if (orderPrivateCar.getState() == 11) {
                    orderPrivateCar.setState(orderPrivateCar.getOldState());
                }
                OrderStatusWarpper orderStatusWarpper = new OrderStatusWarpper();
@@ -172,8 +202,8 @@
                data.add(orderStatusWarpper);
            }
            List<OrderTaxi> list = orderTaxiService.queryOrder(uid, 1, 2, 3, 4, 5, 6, 7, 11, 12);
            for(OrderTaxi orderTaxi : list){
                if(orderTaxi.getState() == 11){
            for (OrderTaxi orderTaxi : list) {
                if (orderTaxi.getState() == 11) {
                    orderTaxi.setState(orderTaxi.getOldState());
                }
                OrderStatusWarpper orderStatusWarpper = new OrderStatusWarpper();
@@ -184,8 +214,8 @@
                data.add(orderStatusWarpper);
            }
            List<OrderCrossCity> orderCrossCities = orderCrossCityService.queryOrder(uid, 1, 2, 3, 4, 5, 6, 7, 11, 12);
            for(OrderCrossCity orderCrossCity : orderCrossCities){
                if(orderCrossCity.getState() == 11){
            for (OrderCrossCity orderCrossCity : orderCrossCities) {
                if (orderCrossCity.getState() == 11) {
                    orderCrossCity.setState(orderCrossCity.getOldState());
                }
                OrderStatusWarpper orderStatusWarpper = new OrderStatusWarpper();
@@ -196,17 +226,16 @@
                data.add(orderStatusWarpper);
            }
            return ResultUtil.success(data);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 获取个人中心订单列表
     *
     * @param type
     * @param pageNum
     * @param size
@@ -217,19 +246,19 @@
    @PostMapping("/api/order/queryMyOrderList")
    @ApiOperation(value = "获取个人中心订单列表", tags = {"用户端-个人中心"}, notes = "")
    @ApiImplicitParams({
        @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城出行,4=同城小件物流, 5=跨城小件物流,6=包车,7=助老模式)", name = "type", required = true, dataType = "int"),
        @ApiImplicitParam(value = "页码(首页1)", name = "pageNum", required = true, dataType = "int"),
        @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"),
        @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城出行,4=同城小件物流, 5=跨城小件物流,6=包车,7=助老模式,8顺风车)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(value = "页码(首页1)", name = "pageNum", required = true, dataType = "int"),
            @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<List<OrderWarpper>> queryMyOrderList(Integer type, Integer pageNum, Integer size, HttpServletRequest request){
    public ResultUtil<List<OrderWarpper>> queryMyOrderList(Integer type, Integer pageNum, Integer size, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            List<Map<String, Object>> list = null;
            switch (type){
            switch (type) {
                case 1:
                    list = orderPrivateCarService.queryMyOrderList(uid, pageNum, size);
                    break;
@@ -251,9 +280,12 @@
                case 7:
//                    list = orderCallService.queryMyOrderList(uid, pageNum, size);
                    break;
                case 8:
                    list = orderRideService.queryMyOrderList(uid, pageNum, size);
                    break;
            }
            return ResultUtil.success(OrderWarpper.getOrderWarpper(list));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -261,6 +293,7 @@
    /**
     * 获取消费记录
     *
     * @param pageNum
     * @param size
     * @param request
@@ -274,10 +307,10 @@
            @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<List<TravelRecordWarpper>> queryMyTravelRecord(Integer pageNum, Integer size, HttpServletRequest request){
    public ResultUtil<List<TravelRecordWarpper>> queryMyTravelRecord(Integer pageNum, Integer size, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            Integer page = pageNum;
@@ -286,7 +319,7 @@
                    .eq("type", 1).eq("userType", 1).eq("userId", uid).orderBy("insertTime desc limit " + pageNum + ", " + size));
            List<Map<String, Object>> list = new ArrayList<>();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            for(TransactionDetails t : transactionDetails){
            for (TransactionDetails t : transactionDetails) {
                Map<String, Object> map = new HashMap<>();
                map.put("money", t.getState() == 1 ? t.getMoney() : -1 * t.getMoney());
                map.put("time", sdf.format(t.getInsertTime()));
@@ -297,7 +330,7 @@
            List<TravelRecordWarpper> orderWarpper = TravelRecordWarpper.getTravelRecordWarpper(list);
            return ResultUtil.success(orderWarpper);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -306,6 +339,7 @@
    /**
     * 发票页获取订单列表
     *
     * @param type
     * @param orderType
     * @param startTime
@@ -333,17 +367,17 @@
    })
    public ResultUtil<List<OrderWarpper>> queryInvoiceOrder(Integer type, Integer orderType, Date startTime,
                                                            Date endTime, Double startMoney, Double endMoney,
                                                            Integer pageNum, Integer size, HttpServletRequest request){
                                                            Integer pageNum, Integer size, HttpServletRequest request) {
        Integer page = pageNum;
        pageNum = (pageNum - 1) * size;
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            List<Map<String, Object>> list = new ArrayList<>();
            if(null != orderType){
                switch (orderType){
            if (null != orderType) {
                switch (orderType) {
                    case 1://专车
                        list = orderPrivateCarService.queryInvoiceOrder(type, startTime, endTime, startMoney, endMoney, uid);
                        break;
@@ -360,7 +394,7 @@
                        list = orderLogisticsService.queryInvoiceOrder(type, startTime, endTime, startMoney, endMoney, uid, orderType);
                        break;
                }
            }else{
            } else {
                //专车
                List<Map<String, Object>> maps = orderPrivateCarService.queryInvoiceOrder(type, startTime, endTime, startMoney, endMoney, uid);
                list.addAll(maps);
@@ -379,25 +413,25 @@
            }
            //分页
            if(list.size() >= page * size){
            if (list.size() >= page * size) {
                list = list.subList(pageNum, pageNum + size);
            }else if(pageNum < list.size() && list.size() < page * size){
            } else if (pageNum < list.size() && list.size() < page * size) {
                list = list.subList(pageNum, list.size());
            }else{
            } else {
                list = new ArrayList<>();
            }
            return ResultUtil.success(OrderWarpper.getOrderWarpper(list));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 继续等待推单操作
     *
     * @param id
     * @return
     */
@@ -409,45 +443,46 @@
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车)", name = "orderType", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil pushOrderTaxi(Integer id, Integer orderType){
    public ResultUtil pushOrderTaxi(Integer id, Integer orderType) {
        try {
            switch (orderType){
            switch (orderType) {
                case 1:
                    return orderPrivateCarService.pushOrderPrivateCar(id);
                case 2:
                    return orderTaxiService.pushOrderTaxi(id);
            }
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 获取服务中的详情数据
     *
     * @param orderId
     * @param orderType
     * @return
     */
    @ResponseBody
    @PostMapping("/api/order/queryOrderInfo")
    @ApiOperation(value = "获取服务中的详情数据", tags = {"用户端-服务中"}, notes = "",response = OrderInfoWarpper.class)
    @ApiOperation(value = "获取服务中的详情数据", tags = {"用户端-服务中"}, notes = "", response = OrderInfoWarpper.class)
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际)", name = "orderType", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<OrderInfoWarpper> queryOrderInfo(Integer orderId, Integer orderType, HttpServletRequest request){
    public ResultUtil<OrderInfoWarpper> queryOrderInfo(Integer orderId, Integer orderType, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            Map<String, Object> map = null;
            List<OrderAdditionalFeeWarpper> list = new ArrayList<>();
            switch (orderType){
            switch (orderType) {
                case 1://专车
                    map = orderPrivateCarService.queryOrderInfo(uid, orderId);
                    break;
@@ -459,16 +494,13 @@
                    break;
            }
            if(map.get("companyId") != null){
            if (map.get("companyId") != null) {
                Company companyId = companyService.selectById(map.get("companyId").toString());
                map.put("companyName", companyId.getName());
            }else {
                String string = map.get("driverId").toString();
                Driver driver = driverService.selectById(string);
                Company company = companyService.selectById(driver.getCompanyId());
                map.put("companyName", company.getName());
            } else {
                map.put("companyName", "");
            }
            if(map.get("telX") != null){
            if (map.get("telX") != null) {
                map.put("driverPhone", map.get("telX"));
            }
            List<OrderAdditionalFee> orderAdditionalFees = orderAdditionalFeeService.selectList(new EntityWrapper<OrderAdditionalFee>().eq("orderType", orderType).eq("orderId", orderId));
@@ -481,35 +513,35 @@
            });
            OrderInfoWarpper orderInfoWarpper = OrderInfoWarpper.getOrderInfoWarpper(map, list);
            orderType = orderInfoWarpper.getOrderType();
            if(orderType==1){
            if (orderType == 1) {
                if(orderInfoWarpper.getPid()!=0){
                    orderId=orderInfoWarpper.getPid();
                if (orderInfoWarpper.getPid() != 0) {
                    orderId = orderInfoWarpper.getPid();
                }
                List<Map<String, Object>> orderList= orderPrivateCarService.queryOrderInfo2(orderId,4,null,null);
                if(!orderList.isEmpty()){
                List<Map<String, Object>> orderList = orderPrivateCarService.queryOrderInfo2(orderId, 4, null, null);
                if (!orderList.isEmpty()) {
                    orderInfoWarpper.setMeetOrderList(JSON.parseArray(JSON.toJSONString(orderList), OrderCrossCityInfoWrapper.class));
                }else{
                } else {
                    orderInfoWarpper.setMeetOrderList(new ArrayList<>());
                }
                orderList= orderPrivateCarService.queryOrderInfo2(orderId,6,null,null);
                if(orderInfoWarpper.getState()>1 && orderInfoWarpper.getDriverId()!=0){
                    String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(orderInfoWarpper.getDriverId()));
                    if(value==null || value.equals("")){
                        if(orderList.isEmpty()){
                            orderList= orderPrivateCarService.queryOrderInfo2(orderId,5,"0","0");
                        }else{
                            List<Map<String, Object>> orderList1 = orderPrivateCarService.queryOrderInfo2(orderId,5,"0","0");
                            if(!orderList1.isEmpty()){
                orderList = orderPrivateCarService.queryOrderInfo2(orderId, 6, null, null);
                if (orderInfoWarpper.getState() > 1 && orderInfoWarpper.getDriverId() != 0) {
                    String value = (String) redisTemplate.opsForValue().get("dache_DRIVER" + String.valueOf(orderInfoWarpper.getDriverId()));
                    if (value == null || value.equals("")) {
                        if (orderList.isEmpty()) {
                            orderList = orderPrivateCarService.queryOrderInfo2(orderId, 5, "0", "0");
                        } else {
                            List<Map<String, Object>> orderList1 = orderPrivateCarService.queryOrderInfo2(orderId, 5, "0", "0");
                            if (!orderList1.isEmpty()) {
                                orderList.addAll(orderList1);
                            }
                        }
                    }else{
                        if(orderList.isEmpty()){
                            orderList= orderPrivateCarService.queryOrderInfo2(orderId,5,value.split(",")[0],value.split(",")[1]);
                        }else{
                            List<Map<String, Object>> orderList1 = orderPrivateCarService.queryOrderInfo2(orderId,5,value.split(",")[0],value.split(",")[1]);
                            if(!orderList1.isEmpty()){
                    } else {
                        if (orderList.isEmpty()) {
                            orderList = orderPrivateCarService.queryOrderInfo2(orderId, 5, value.split(",")[0], value.split(",")[1]);
                        } else {
                            List<Map<String, Object>> orderList1 = orderPrivateCarService.queryOrderInfo2(orderId, 5, value.split(",")[0], value.split(",")[1]);
                            if (!orderList1.isEmpty()) {
                                orderList.addAll(orderList1);
                            }
                        }
@@ -517,15 +549,14 @@
                }
                if(!orderList.isEmpty()){
                if (!orderList.isEmpty()) {
                    orderInfoWarpper.setGiveOrderList(JSON.parseArray(JSON.toJSONString(orderList), OrderCrossCityInfoWrapper.class));
                }else{
                } else {
                    orderInfoWarpper.setGiveOrderList(new ArrayList<>());
                }
                OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
                if(orderPrivateCar.getState()>1) {
                if (orderPrivateCar.getState() > 1) {
                    Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
                    String provinceCode = geocode.get("provinceCode");
                    String cityCode = geocode.get("cityCode");
@@ -535,9 +566,12 @@
                    if (null == systemPriceCity) {
                        return ResultUtil.error("请先配置价格规则");
                    }
                    if (orderPrivateCar.getServerCarModelId() == null) {
                        orderPrivateCar.setServerCarModelId(0);
                    }
                    Map<String, Object> query1 = systemPriceMapper.query(orderPrivateCar.getCompanyId(), 1, orderPrivateCar.getServerCarModelId(), systemPriceCity.getId());
                    System.out.println("参数:" + orderPrivateCar.getCompanyId() + "|" + orderPrivateCar.getServerCarModelId());
                    System.out.println("query1:" + query1);
//               System.out.println("参数:" + orderPrivateCar.getCompanyId() + "|" + orderPrivateCar.getServerCarModelId());
//               System.out.println("query1:" + query1);
                    //开始根据不同的方式计算金额
                    if (query1 != null) {
                        JSONObject jsonObject = JSON.parseObject(query1.get("content").toString());//等待费
@@ -546,27 +580,27 @@
                        JSONObject contentPutTwo = JSON.parseObject(query1.get("contentPutTwo").toString());//2人拼成
                        JSONObject contentNotTwo = JSON.parseObject(query1.get("contentNotTwo").toString());//2人未拼成
                        JSONObject contentPutThree = JSON.parseObject(query1.get("contentPutThree").toString());//3人拼成
                    JSONObject contentNotThree = JSON.parseObject(query1.get("contentNotThree").toString());//3人未拼成
                    JSONObject contentExclusive = JSON.parseObject(query1.get("contentExclusive").toString());//独享
                    JSONObject contentPrice = JSON.parseObject(query1.get("contentPrice").toString());//一口价
                    //一口价
                    orderInfoWarpper.setFareTypeNote1(query1.get("fareTypeNote1").toString());
                    orderInfoWarpper.setFareTypeNote2(query1.get("fareTypeNote2").toString());
                    orderInfoWarpper.setFareTypeNote3(query1.get("fareTypeNote3").toString());
                    orderInfoWarpper.setContentPutOne(contentPutOne);
                    orderInfoWarpper.setContentNotOne(contentNotOne);
                        JSONObject contentNotThree = JSON.parseObject(query1.get("contentNotThree").toString());//3人未拼成
                        JSONObject contentExclusive = JSON.parseObject(query1.get("contentExclusive").toString());//独享
                        JSONObject contentPrice = JSON.parseObject(query1.get("contentPrice").toString());//一口价
                        //一口价
                        orderInfoWarpper.setFareTypeNote1(query1.get("fareTypeNote1").toString());
                        orderInfoWarpper.setFareTypeNote2(query1.get("fareTypeNote2").toString());
                        orderInfoWarpper.setFareTypeNote3(query1.get("fareTypeNote3").toString());
                        orderInfoWarpper.setContentPutOne(contentPutOne);
                        orderInfoWarpper.setContentNotOne(contentNotOne);
                    orderInfoWarpper.setContentPutTwo(contentPutTwo);
                    orderInfoWarpper.setContentNotTwo(contentNotTwo);
                        orderInfoWarpper.setContentPutTwo(contentPutTwo);
                        orderInfoWarpper.setContentNotTwo(contentNotTwo);
                    orderInfoWarpper.setContentPutThree(contentPutThree);
                    orderInfoWarpper.setContentNotThree(contentNotThree);
                        orderInfoWarpper.setContentPutThree(contentPutThree);
                        orderInfoWarpper.setContentNotThree(contentNotThree);
                    orderInfoWarpper.setContentExclusive(contentExclusive);
                    orderInfoWarpper.setContentPrice(contentPrice);
                        orderInfoWarpper.setContentExclusive(contentExclusive);
                        orderInfoWarpper.setContentPrice(contentPrice);
                    }
                }else{
                } else {
                    orderInfoWarpper.setContentPutOne(new JSONObject());
                    orderInfoWarpper.setContentNotOne(new JSONObject());
@@ -581,7 +615,7 @@
                    orderInfoWarpper.setContentPrice(new JSONObject());
                }
            }else{
            } else {
                orderInfoWarpper.setContentPutOne(new JSONObject());
                orderInfoWarpper.setContentNotOne(new JSONObject());
@@ -596,11 +630,11 @@
                orderInfoWarpper.setContentPrice(new JSONObject());
            }
            String arriveTime = orderInfoWarpper.getArriveTime();
            if(ToolUtil.isNotEmpty(arriveTime)){
                orderInfoWarpper.setTime(arriveTime.substring(11,arriveTime.length()-3));
            if (ToolUtil.isNotEmpty(arriveTime)) {
                orderInfoWarpper.setTime(arriveTime.substring(11, arriveTime.length() - 3));
            }
            return ResultUtil.success(orderInfoWarpper);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -609,7 +643,7 @@
    @ResponseBody
    @PostMapping("/api/order/addAppeal")
    @ApiOperation(value = "发起申诉", tags = {"用户端-服务中"}, notes = "",response = OrderInfoWarpper.class)
    @ApiOperation(value = "发起申诉", tags = {"用户端-服务中"}, notes = "", response = OrderInfoWarpper.class)
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际)", name = "orderType", required = true, dataType = "int"),
@@ -617,34 +651,34 @@
            @ApiImplicitParam(value = "申诉图片", name = "abnormalImg", required = true, dataType = "String"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<OrderInfoWarpper> addAppeal(Integer orderId, Integer orderType,String abnormalIntro, String abnormalImg, HttpServletRequest request){
    public ResultUtil<OrderInfoWarpper> addAppeal(Integer orderId, Integer orderType, String abnormalIntro, String abnormalImg, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            switch (orderType){
            switch (orderType) {
                case 1://专车
                     orderPrivateCarService.addAppeal(uid, orderId,abnormalIntro,abnormalImg);
                    orderPrivateCarService.addAppeal(uid, orderId, abnormalIntro, abnormalImg);
                    break;
                case 2://出租车
                    orderTaxiService.addAppeal(uid,orderId,abnormalIntro,abnormalImg);
                    orderTaxiService.addAppeal(uid, orderId, abnormalIntro, abnormalImg);
                    break;
                case 3://跨城
                     orderCrossCityService.addAppeal(uid,orderId,abnormalIntro,abnormalImg);
                    orderCrossCityService.addAppeal(uid, orderId, abnormalIntro, abnormalImg);
                    break;
            }
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 获取服务中的详情数据
     *
     * @param orderId
     * @param orderType
     * @return
@@ -656,11 +690,11 @@
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际)", name = "orderType", required = true, dataType = "int"),
    })
    public ResultUtil<OrderInfoWarpper> queryOrderInfo_(Integer orderId, Integer orderType){
    public ResultUtil<OrderInfoWarpper> queryOrderInfo_(Integer orderId, Integer orderType) {
        try {
            Map<String, Object> map = null;
            List<OrderAdditionalFeeWarpper> list = new ArrayList<>();
            switch (orderType){
            switch (orderType) {
                case 1://专车
                    map = orderPrivateCarService.queryOrderInfo(null, orderId);
                    break;
@@ -671,7 +705,7 @@
                    map = orderCrossCityService.queryOrderInfo(orderId);
                    break;
            }
            if(null != map.get("telX")){
            if (null != map.get("telX")) {
                map.put("driverPhone", map.get("telX"));
            }
            List<OrderAdditionalFee> orderAdditionalFees = orderAdditionalFeeService.selectList(new EntityWrapper<OrderAdditionalFee>().eq("orderType", orderType).eq("orderId", orderId));
@@ -683,17 +717,16 @@
                list.add(orderAdditionalFeeWarpper);
            });
            return ResultUtil.success(OrderInfoWarpper.getOrderInfoWarpper(map, list));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 获取订单取消支付页面详情
     *
     * @param orderId
     * @param orderType
     * @return
@@ -706,10 +739,10 @@
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际)", name = "orderType", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<OrderInfoWarpper> queryCancelPage(Integer orderId, Integer orderType, HttpServletRequest request){
    public ResultUtil<OrderInfoWarpper> queryCancelPage(Integer orderId, Integer orderType, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            Map<String, Object> map = null;
@@ -731,7 +764,7 @@
                    map.put("cancelPayMoney", r.getData().getAmount());
                    break;
            }
            if(null != map.get("telX")){
            if (null != map.get("telX")) {
                map.put("driverPhone", map.get("telX"));
            }
            List<OrderAdditionalFee> orderAdditionalFees = orderAdditionalFeeService.selectList(new EntityWrapper<OrderAdditionalFee>().eq("orderType", orderType).eq("orderId", orderId));
@@ -743,7 +776,7 @@
                list.add(orderAdditionalFeeWarpper);
            });
            return ResultUtil.success(OrderInfoWarpper.getOrderInfoWarpper(map, list));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -752,6 +785,7 @@
    /**
     * 获取订单轨迹坐标
     *
     * @param orderId
     * @param orderType
     * @return
@@ -764,20 +798,20 @@
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际)", name = "orderType", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil queryTrack(Integer orderId, Integer orderType){
    public ResultUtil queryTrack(Integer orderId, Integer orderType) {
        try {
            List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, orderType);
            return ResultUtil.success(list);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 获取订单轨迹坐标
     *
     * @param orderId
     * @param orderType
     * @return
@@ -789,11 +823,11 @@
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际)", name = "orderType", required = true, dataType = "int"),
    })
    public ResultUtil queryTrack_(Integer orderId, Integer orderType){
    public ResultUtil queryTrack_(Integer orderId, Integer orderType) {
        try {
            List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, orderType);
            return ResultUtil.success(list);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -802,24 +836,25 @@
    /**
     * 发送订单状态
     *
     * @param id
     * @param orderType
     * @return
     */
    @ResponseBody
    @PostMapping("/base/order/sendOrderState")
    public ResultUtil cancelOrder(Integer id, Integer orderType){
    public ResultUtil cancelOrder(Integer id, Integer orderType) {
        try {
            Integer driverId = null;
            Integer userId = null;
            Integer state = 0;
            switch (orderType){
            switch (orderType) {
                case 1:
                    OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(id);
                    driverId = orderPrivateCar.getDriverId();
                    userId = orderPrivateCar.getUserId();
                    state = orderPrivateCar.getState();
                    if(null != driverId){
                    if (null != driverId) {
                        pushUtil.pushOrderState(2, driverId, id, orderType, state, 0);
                    }
                    break;
@@ -828,7 +863,7 @@
                    driverId = orderTaxi.getDriverId();
                    userId = orderTaxi.getUserId();
                    state = orderTaxi.getState();
                    if(null != driverId){
                    if (null != driverId) {
                        pushUtil.pushOrderState(2, driverId, id, orderType, state, 0);
                    }
                    break;
@@ -837,9 +872,9 @@
                    driverId = orderCrossCity.getDriverId();
                    userId = orderCrossCity.getUserId();
                    state = orderCrossCity.getState();
                    if(orderCrossCity.getPayMoney() == null && state == 10){//支付的情况才推送取消
                    if (orderCrossCity.getPayMoney() == null && state == 10) {//支付的情况才推送取消
                        break;
                    }else{
                    } else {
                        pushUtil.pushOrderState(2, driverId, id, orderType, state, 0);
                    }
                    break;
@@ -848,9 +883,9 @@
                    driverId = orderLogistics.getDriverId();
                    userId = orderLogistics.getUserId();
                    state = orderLogistics.getState();
                    if(orderLogistics.getPayMoney() == null && state == 10){//支付的情况才推送取消
                    if (orderLogistics.getPayMoney() == null && state == 10) {//支付的情况才推送取消
                        break;
                    }else{
                    } else {
                        pushUtil.pushOrderState(2, driverId, id, orderType, state, 0);
                    }
                    break;
@@ -859,16 +894,16 @@
                    driverId = orderLogistics1.getDriverId();
                    userId = orderLogistics1.getUserId();
                    state = orderLogistics1.getState();
                    if(orderLogistics1.getPayMoney() == null && state == 10){//支付的情况才推送取消
                    if (orderLogistics1.getPayMoney() == null && state == 10) {//支付的情况才推送取消
                        break;
                    }else{
                    } else {
                        pushUtil.pushOrderState(2, driverId, id, orderType, state, 0);
                    }
                    break;
            }
            pushUtil.pushOrderState(1, userId, id, orderType, state, 0);
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -877,6 +912,7 @@
    /**
     * APP调用微信小程序支付
     *
     * @param orderId
     * @param orderType
     * @param type
@@ -894,10 +930,10 @@
            @ApiImplicitParam(value = "用户id", name = "uid", required = true, dataType = "int"),
            @ApiImplicitParam(value = "附加参数{\"key\":\"value\"}", name = "content", required = true, dataType = "string")
    })
    public ResultUtil weChatPay(Integer orderId, Integer orderType, Integer type, Integer userType, Integer uid, String content){
    public ResultUtil weChatPay(Integer orderId, Integer orderType, Integer type, Integer userType, Integer uid, String content) {
        try {
            return orderService.weChatPay(orderId, orderType, type, userType, uid, content);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -911,12 +947,12 @@
            @ApiImplicitParam(value = "端口类型(1=用户端,2=司机端)", name = "userType", required = true, dataType = "int"),
            @ApiImplicitParam(value = "用户id", name = "uid", required = true, dataType = "int")
    })
    public ResultUtil queryUserOpenId(Integer uid, Integer userType){
        if(userType == 2){
    public ResultUtil queryUserOpenId(Integer uid, Integer userType) {
        if (userType == 2) {
            Driver driver = driverService.selectById(uid);
            return ResultUtil.success(driver.getAppletsOpenId());
        }
        if(userType == 1){
        if (userType == 1) {
            UserInfo userInfo = userInfoService.selectById(uid);
            return ResultUtil.success(userInfo.getAppletsOpenId());
        }
@@ -932,14 +968,14 @@
            @ApiImplicitParam(value = "用户id", name = "uid", required = true, dataType = "int"),
            @ApiImplicitParam(value = "小程序授权临时凭证", name = "jscode", required = true, dataType = "string"),
    })
    public ResultUtil getWeChatOpenId(Integer uid, Integer userType, String jscode){
    public ResultUtil getWeChatOpenId(Integer uid, Integer userType, String jscode) {
        Map<String, String> map = weChatUtil.code2Session(jscode);
        if(userType == 2){
        if (userType == 2) {
            Driver driver = driverService.selectById(uid);
            driver.setAppletsOpenId(map.get("openid"));
            driverService.updateById(driver);
        }
        if(userType == 1){
        if (userType == 1) {
            UserInfo userInfo = userInfoService.selectById(uid);
            userInfo.setAppletsOpenId(map.get("openid"));
            userInfoService.updateById(userInfo);
@@ -948,9 +984,9 @@
    }
    /**
     * 获取预计行驶时间
     *
     * @param slon
     * @param slat
     * @param elon
@@ -966,20 +1002,19 @@
            @ApiImplicitParam(value = "终点经度", name = "elon", required = true, dataType = "double"),
            @ApiImplicitParam(value = "终点纬度", name = "elat", required = true, dataType = "double")
    })
    public ResultUtil<BaseWarpper> queryExpectedTime(Double slon, Double slat, Double elon, Double elat){
    public ResultUtil<BaseWarpper> queryExpectedTime(Double slon, Double slat, Double elon, Double elat) {
        try {
            return orderService.queryExpectedTime(slon, slat, elon, elat);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 获取取消订单需要支付的费用金额
     *
     * @param id
     * @return
     */
@@ -991,9 +1026,9 @@
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城)", name = "orderType", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<BaseWarpper> queryCancleAmount(Integer id, Integer orderType){
    public ResultUtil<BaseWarpper> queryCancleAmount(Integer id, Integer orderType) {
        try {
            switch (orderType){
            switch (orderType) {
                case 1:
                    return orderPrivateCarService.queryCancleAmount(id);
                case 2:
@@ -1002,17 +1037,16 @@
                    return orderCrossCityService.queryCancleAmount(id);
            }
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 添加取消记录
     *
     * @param id
     * @param reason
     * @param remark
@@ -1029,13 +1063,13 @@
            @ApiImplicitParam(value = "备注", name = "remark", required = false, dataType = "string"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil addCancle(Integer id, Integer orderType, String reason, String remark, HttpServletRequest request){
    public ResultUtil addCancle(Integer id, Integer orderType, String reason, String remark, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            switch (orderType){
            switch (orderType) {
                case 1:
                    return orderPrivateCarService.addCancle(id, reason, remark, uid);
                case 2:
@@ -1050,16 +1084,16 @@
                    return orderCharteredCarService.addCancle(id, reason, remark, uid);
            }
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 取消操作支付
     *
     * @param id
     * @param payType
     * @return
@@ -1075,13 +1109,13 @@
            @ApiImplicitParam(value = "支付端(1=用户APP端,2=司机APP端,3=用户小程序端)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil cancleOrderTaxi(Integer id, Integer orderType, Integer payType, Integer cancleId, Integer type, HttpServletRequest request){
    public ResultUtil cancleOrderTaxi(Integer id, Integer orderType, Integer payType, Integer cancleId, Integer type, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            switch (orderType){
            switch (orderType) {
                case 1:
                    return orderPrivateCarService.cancleOrderPrivateCar(id, payType, cancleId, type);
                case 2:
@@ -1090,16 +1124,16 @@
                    return orderCrossCityService.cancleOrderCrossCity(id, payType, cancleId, type);
            }
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 投诉操作
     *
     * @param driverId
     * @param reason
     * @param description
@@ -1115,24 +1149,24 @@
            @ApiImplicitParam(value = "投诉描述", name = "description", required = true, dataType = "String"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil complaintService(Integer driverId, String reason, String description, HttpServletRequest request){
    public ResultUtil complaintService(Integer driverId, String reason, String description, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            complaintService.saveData(driverId, reason, description, uid);
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 支付页面获取可用优惠券数量和余额
     *
     * @param orderId
     * @param request
     * @return
@@ -1145,14 +1179,14 @@
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城)", name = "orderType", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil queryBalance(Integer orderId, Integer orderType, HttpServletRequest request){
    public ResultUtil queryBalance(Integer orderId, Integer orderType, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            Map<String, Object> map = new HashMap<>();
            switch (orderType){
            switch (orderType) {
                case 1:
                    map = orderPrivateCarService.queryBalance(orderId, uid);
                    break;
@@ -1170,36 +1204,36 @@
                    break;
            }
            return ResultUtil.success(map);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 支付页面获取余额和优惠数据
     *
     * @param orderId
     * @param request
     * @return
     */
    @ResponseBody
    @PostMapping("/api/taxi/queryBalance1")
    @ApiOperation(value = "1.0-支付页面获取余额和优惠数据", tags = {"用户端-出租车", "用户端-专车", "用户端-跨城","用户端-小件物流"})
    @ApiOperation(value = "1.0-支付页面获取余额和优惠数据", tags = {"用户端-出租车", "用户端-专车", "用户端-跨城", "用户端-小件物流"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城,4=同城小件物流,5=跨城小件物流)", name = "orderType", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<PreferentialDataVo> queryBalance1(Integer orderId, Integer orderType, HttpServletRequest request){
    public ResultUtil<PreferentialDataVo> queryBalance1(Integer orderId, Integer orderType, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            PreferentialDataVo map = new PreferentialDataVo();
            switch (orderType){
            switch (orderType) {
                case 1:
                    map = orderPrivateCarService.queryBalance1(orderId, uid);
                    break;
@@ -1223,17 +1257,16 @@
                    break;
            }
            return ResultUtil.success(map);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 获取支付页面的优惠券列表
     *
     * @param orderId
     * @param pageNum
     * @param size
@@ -1250,14 +1283,14 @@
            @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil queryCoupon(Integer orderId, Integer orderType, Integer pageNum, Integer size, HttpServletRequest request){
    public ResultUtil queryCoupon(Integer orderId, Integer orderType, Integer pageNum, Integer size, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            List<Map<String, Object>> list = new ArrayList<>();
            switch (orderType){
            switch (orderType) {
                case 1:
                    list = orderPrivateCarService.queryCoupon(orderId, uid, pageNum, size);
                    break;
@@ -1269,18 +1302,16 @@
                    break;
            }
            return ResultUtil.success(CouponWarpper.getCouponWarppers(list));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @PostMapping("/api/taxi/queryCouponList")
    @ApiOperation(value = "1.0-获取支付页面的优惠券和打车卡列表", tags = {"用户端-出租车", "用户端-专车", "用户端-跨城","用户端-小件物流"}, notes = "")
    @ApiOperation(value = "1.0-获取支付页面的优惠券和打车卡列表", tags = {"用户端-出租车", "用户端-专车", "用户端-跨城", "用户端-小件物流"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城,4=同城小件物流,5=跨城小件物流)", name = "orderType", required = true, dataType = "int"),
@@ -1288,14 +1319,14 @@
            @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<List<CouponsListVo>> queryCouponList(Integer orderId, Integer orderType, Integer pageNum, Integer size, HttpServletRequest request){
    public ResultUtil<List<CouponsListVo>> queryCouponList(Integer orderId, Integer orderType, Integer pageNum, Integer size, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            List<CouponsListVo> list = new ArrayList<>();
            switch (orderType){
            switch (orderType) {
                case 1:
                    list = orderPrivateCarService.queryCouponList(orderId, uid, pageNum, size);
                    break;
@@ -1313,16 +1344,16 @@
                    break;
            }
            return ResultUtil.success(list);
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 订单完成支付订单操作
     *
     * @param payType
     * @param orderId
     * @param request
@@ -1339,13 +1370,13 @@
            @ApiImplicitParam(value = "支付端(1=用户APP端,2=司机APP端,3=用户小程序端)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil payTaxiOrder(Integer payType, Integer orderId, Integer orderType, Integer couponId, Integer type, HttpServletRequest request){
    public ResultUtil payTaxiOrder(Integer payType, Integer orderId, Integer orderType, Integer couponId, Integer type, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            switch (orderType){
            switch (orderType) {
                case 1:
                    return orderPrivateCarService.payPrivateCarOrder(payType, orderId, couponId, type);
                case 2:
@@ -1358,12 +1389,11 @@
                    return orderLogisticsService.payLogisticsOrder(payType, orderId, type);
            }
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
@@ -1376,40 +1406,45 @@
            @ApiImplicitParam(value = "优惠数据id", name = "objectId", required = false, dataType = "int"),
            @ApiImplicitParam(value = "数据类型(1=优惠券,2=打车卡)", name = "objectType", required = false, dataType = "int"),
            @ApiImplicitParam(value = "支付端(1=用户APP端,2=司机APP端,3=用户小程序端)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(value = "小程序支付成功跳转路径", name = "path", required = true, dataType = "String"),
            @ApiImplicitParam(value = "设备当前IP地址", name = "ip", required = true, dataType = "String"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil payTaxiOrder1(Integer payType, Integer orderId, Integer orderType, Integer objectId, Integer objectType, Integer type, HttpServletRequest request){
    public ResultUtil payTaxiOrder1(Integer payType, Integer orderId, Integer orderType, Integer objectId, Integer objectType, Integer type, String path, String ip, HttpServletRequest request) {
        System.out.println(objectType);
        System.out.println(objectId);
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            switch (orderType){
            switch (orderType) {
                case 1:
                    return orderPrivateCarService.payPrivateCarOrder1(payType, orderId, objectId, objectType, type);
                    return orderPrivateCarService.payPrivateCarOrder1(payType, orderId, objectId, objectType, type, path, ip);
                case 2:
                    return orderTaxiService.payTaxiOrder1(payType, orderId, objectId, objectType, type);
                    return orderTaxiService.payTaxiOrder1(payType, orderId, objectId, objectType, type, path, ip);
                case 3:
                    return orderCrossCityService.payCrossCityOrder1(payType, orderId, objectId, objectType, type);
                    ResultUtil resultUtil = orderCrossCityService.payCrossCityOrder1(payType, orderId, objectId, objectType, type);
                    orderCrossCityService.promotion(orderId);
                    return resultUtil;
                case 4:
                    return orderLogisticsService.payLogisticsOrder1(payType, orderId, objectId, objectType, type);
                case 5:
                    return orderLogisticsService.payLogisticsOrder1(payType, orderId, objectId, objectType, type);
            }
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 订单完成后添加评价操作
     *
     * @param orderId
     * @param fraction
     * @param content
@@ -1425,19 +1460,36 @@
            @ApiImplicitParam(value = "评价内容", name = "content", required = false, dataType = "String"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil orderEvaluate(Integer orderId, Integer orderType, Integer fraction, String content){
    public ResultUtil orderEvaluate(Integer orderId, Integer orderType, Integer fraction, String content) {
        try {
            ResultUtil resultUtil = orderEvaluateService.saveData(orderId, orderType, fraction, content);
            if(resultUtil.getCode() == 200){
                switch (orderType){
            if (resultUtil.getCode() == 200) {
                switch (orderType) {
                    case 1:
                        OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
                        orderPrivateCar.setState(9);
                        orderPrivateCarService.updateById(orderPrivateCar);
                        Driver driver1 = null;
                        Company company = null;
                        //中台修改订单状态
                        ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                        request.setOrderId(orderPrivateCar.getTravelId());
                        request.setStatus(orderPrivateCar.getState());
                        if (null != orderPrivateCar.getDriverId()) {
                            driver1 = driverService.selectById(orderPrivateCar.getDriverId());
                            company = companyService.selectById(driver1.getCompanyId());
                            request.setDriverId(driver1.getEmpId().toString());
                            request.setSupplierShopId(company.getEnterCode());
                        }
                        if (2 == orderPrivateCar.getPromotion()) {
                            Driver driver2 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                            request.setPromoterId(driver2.getEmpId().toString());
                        }
                        OrderUtil.modifyTravelItinerary(request);
                        new Thread(new Runnable() {
                            @Override
                            public void run() {
                                if(pushMinistryOfTransport){//上传数据
                                if (pushMinistryOfTransport) {//上传数据
                                    pushMinistryOfTransportUtil.ratedPassenger(Integer.valueOf(resultUtil.getData().toString()));
                                    pushMinistryOfTransportUtil.ratedDriver(orderPrivateCar.getDriverId());
                                }
@@ -1448,6 +1500,23 @@
                        OrderTaxi orderTaxi = orderTaxiService.selectById(orderId);
                        orderTaxi.setState(9);
                        orderTaxiService.updateById(orderTaxi);
                        Driver driver = null;
                        Company company1 = null;
                        //中台修改订单状态
                        ModifyTravelItineraryRequest request2 = new ModifyTravelItineraryRequest();
                        request2.setOrderId(orderTaxi.getTravelId());
                        request2.setStatus(orderTaxi.getState());
                        if (null != orderTaxi.getDriverId()) {
                            driver = driverService.selectById(orderTaxi.getDriverId());
                            company1 = companyService.selectById(driver.getCompanyId());
                            request2.setDriverId(driver.getEmpId().toString());
                            request2.setSupplierShopId(company1.getEnterCode());
                        }
                        if (2 == orderTaxi.getPromotion()) {
                            Driver driver2 = driverService.selectById(orderTaxi.getPromotionDriverId());
                            request2.setPromoterId(driver2.getEmpId().toString());
                        }
                        OrderUtil.modifyTravelItinerary(request2);
                        break;
                    case 3:
                        OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId);
@@ -1457,16 +1526,16 @@
                }
            }
            return resultUtil.getCode() == 200 ? ResultUtil.success() : resultUtil;
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 评论成功后获取红包金额
     *
     * @param orderId
     * @return
     */
@@ -1478,9 +1547,9 @@
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城)", name = "orderType", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<BaseWarpper> queryRedMoney(Integer orderId, Integer orderType){
    public ResultUtil<BaseWarpper> queryRedMoney(Integer orderId, Integer orderType) {
        try {
            switch (orderType){
            switch (orderType) {
                case 1:
                    return orderPrivateCarService.queryRedMoney(orderId);
                case 2:
@@ -1489,17 +1558,16 @@
                    return orderCrossCityService.queryRedMoney(orderId);
            }
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 分享成功后添加红包操作
     *
     * @param orderId
     * @return
     */
@@ -1511,9 +1579,9 @@
            @ApiImplicitParam(value = "订单类型", name = "orderType", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil shareRedEnvelope(Integer orderId, Integer orderType){
    public ResultUtil shareRedEnvelope(Integer orderId, Integer orderType) {
        try {
            switch (orderType){
            switch (orderType) {
                case 1:
                    return orderPrivateCarService.shareRedEnvelope(orderId);
                case 2:
@@ -1522,32 +1590,28 @@
                    return orderCrossCityService.shareRedEnvelope(orderId);
            }
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 取消订单微信回调
     *
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/wxCancelOrderTaxi")
    public void wxCancelOrderTaxi(HttpServletRequest request, HttpServletResponse response){
    public void wxCancelOrderTaxi(HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            if(null != map){
            if (null != map) {
                String order_id = map.get("transaction_id");
                String out_trade_no = map.get("out_trade_no");
                String result = map.get("result");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    PrintWriter out = response.getWriter();
                    out.write(result);
                    out.flush();
@@ -1556,7 +1620,7 @@
                    String[] split = out_trade_no.split("_");
                    Integer id = Integer.valueOf(split[0]);
                    Integer type = Integer.valueOf(split[1]);
                    switch (type){
                    switch (type) {
                        case 1:
                            orderPrivateCarService.payCancelOrderPrivateCar(id, order_id, 1);
                            break;
@@ -1571,7 +1635,7 @@
//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -1579,21 +1643,22 @@
    /**
     * 取消订单支付宝回调
     *
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/aliCancelOrderTaxi")
    public void aliCancelOrderTaxi(HttpServletRequest request, HttpServletResponse response){
    public void aliCancelOrderTaxi(HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, String> map = payMoneyUtil.alipayCallback(request);
            if(null != map){
            if (null != map) {
                String out_trade_no = map.get("out_trade_no");
                String order_id = map.get("trade_no");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    String[] split = out_trade_no.split("_");
                    Integer id = Integer.valueOf(split[0]);
                    Integer type = Integer.valueOf(split[1]);
                    switch (type){
                    switch (type) {
                        case 1:
                            orderPrivateCarService.payCancelOrderPrivateCar(id, order_id, 2);
                            break;
@@ -1611,7 +1676,7 @@
                }
//                cloudPay(map.get("total_amount"),map.get("trade_no"),0);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -1619,22 +1684,23 @@
    /**
     * 完成订单微信支付回调
     *
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/wxPayOrderTaxi")
    public void wxPayOrderTaxi(HttpServletRequest request, HttpServletResponse response){
    public void wxPayOrderTaxi(HttpServletRequest request, HttpServletResponse response) {
        try {
            System.out.println("完成订单微信支付回调");
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            System.out.println("wx支付信息:"+map);
            if(null != map){
            System.out.println("wx支付信息:" + map);
            if (null != map) {
                String order_id = map.get("transaction_id");
                String out_trade_no = map.get("out_trade_no");
                String result = map.get("result");
                String total_fee = map.get("total_fee");
                String transaction_id = map.get("transaction_id");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    PrintWriter out = response.getWriter();
                    out.write(result);
                    out.flush();
@@ -1643,15 +1709,15 @@
                    String[] split = out_trade_no.split("_");
                    Integer id = Integer.valueOf(split[0]);
                    Integer type = Integer.valueOf(split[1]);
                    switch (type){
                    switch (type) {
                        case 1:
                            orderPrivateCarService.payOrderPrivateCarCallback(id, order_id, 1);
                            break;
                        case 2:
                            orderTaxiService.payOrderTaxiCallback(id, order_id, 1,0);
                            orderTaxiService.payOrderTaxiCallback(id, order_id, 1, 0);
                            break;
                        case 3:
                            orderCrossCityService.payOrderCrossCityCallback(id, order_id, 1,null);
                            orderCrossCityService.payOrderCrossCityCallback(id, order_id, 1, null);
                            break;
                        case 4:
                            orderLogisticsService.payOrderLogisticsCallback(id, order_id, 1);
@@ -1667,7 +1733,7 @@
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -1675,29 +1741,30 @@
    /**
     * 完成订单支付宝支付回调
     *
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/aliPayOrderTaxi")
    public void aliPayOrderTaxi(HttpServletRequest request, HttpServletResponse response){
    public void aliPayOrderTaxi(HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, String> map = payMoneyUtil.alipayCallback(request);
            if(null != map){
            if (null != map) {
                String out_trade_no = map.get("out_trade_no");
                String order_id = map.get("trade_no");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    String[] split = out_trade_no.split("_");
                    Integer id = Integer.valueOf(split[0]);
                    Integer type = Integer.valueOf(split[1]);
                    switch (type){
                    switch (type) {
                        case 1:
                            orderPrivateCarService.payOrderPrivateCarCallback(id, order_id, 2);
                            break;
                        case 2:
                            orderTaxiService.payOrderTaxiCallback(id, order_id, 2,0);
                            orderTaxiService.payOrderTaxiCallback(id, order_id, 2, 0);
                            break;
                        case 3:
                            orderCrossCityService.payOrderCrossCityCallback(id, order_id, 2,null);
                            orderCrossCityService.payOrderCrossCityCallback(id, order_id, 2, null);
                            break;
                        case 4:
                            orderLogisticsService.payOrderLogisticsCallback(id, order_id, 2);
@@ -1713,28 +1780,27 @@
                }
//                cloudPay(map.get("total_amount"),map.get("trade_no"),0);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 小件物流差价微信支付回调
     *
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/wxPayOrderLogisticsSpread")
    public void wxPayOrderLogisticsSpread(HttpServletRequest request, HttpServletResponse response){
    public void wxPayOrderLogisticsSpread(HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            if(null != map){
            if (null != map) {
                String order_id = map.get("transaction_id");
                String out_trade_no = map.get("out_trade_no");
                String result = map.get("result");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    PrintWriter out = response.getWriter();
                    out.write(result);
                    out.flush();
@@ -1748,7 +1814,7 @@
//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -1756,17 +1822,18 @@
    /**
     * 小件物流差价支付宝支付回调
     *
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/aliPayOrderLogisticsSpread")
    public void aliPayOrderLogisticsSpread(HttpServletRequest request, HttpServletResponse response){
    public void aliPayOrderLogisticsSpread(HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, String> map = payMoneyUtil.alipayCallback(request);
            if(null != map){
            if (null != map) {
                String out_trade_no = map.get("out_trade_no");
                String order_id = map.get("trade_no");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    String[] split = out_trade_no.split("_");
                    Integer id = Integer.valueOf(split[0]);
                    Integer type = Integer.valueOf(split[1]);
@@ -1779,27 +1846,28 @@
                }
//                cloudPay(map.get("total_amount"),map.get("trade_no"),0);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 取消订单微信退款成功回调
     *
     * @param request
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/cancleOrderWXPay")
    public void cancleOrderWXPay(HttpServletRequest request, HttpServletResponse response){
    public void cancleOrderWXPay(HttpServletRequest request, HttpServletResponse response) {
        try {
            System.out.println("小件物流取消");
            Map<String, String> map = payMoneyUtil.wxRefundCallback(request);
            if(null != map){
            if (null != map) {
                String order_id = map.get("refund_id");
                String out_refund_no = map.get("out_refund_no");
                String result = map.get("result");
                if(ToolUtil.isNotEmpty(out_refund_no) && ToolUtil.isNotEmpty(order_id)){
                if (ToolUtil.isNotEmpty(out_refund_no) && ToolUtil.isNotEmpty(order_id)) {
                    PrintWriter out = response.getWriter();
                    out.write(result);
                    out.flush();
@@ -1808,8 +1876,8 @@
                    String[] split = out_refund_no.split("_");
                    Integer id = Integer.valueOf(split[0]);
                    Integer type = Integer.valueOf(split[1]);
                    System.out.println("取消回调:"+type);
                    switch (type){
                    System.out.println("取消回调:" + type);
                    switch (type) {
                        case 1:
                            break;
                        case 2:
@@ -1851,7 +1919,7 @@
                }
//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -1859,22 +1927,23 @@
    /**
     * 购买出行卡微信支付回调
     *
     * @param request
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/wxPayTaxiCardPaymentSpread")
    public void wxPayTaxiCardPaymentSpread(HttpServletRequest request, HttpServletResponse response){
    public void wxPayTaxiCardPaymentSpread(HttpServletRequest request, HttpServletResponse response) {
        try {
            System.out.println("购买出行卡微信支付回调");
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            System.out.println("购买出行卡微信支付回调"+map);
            if(null != map){
            System.out.println("购买出行卡微信支付回调" + map);
            if (null != map) {
                String order_id = map.get("transaction_id");
                String out_trade_no = map.get("out_trade_no");
                String result = map.get("result");
                System.out.println(out_trade_no+"_"+order_id);
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                System.out.println(out_trade_no + "_" + order_id);
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    PrintWriter out = response.getWriter();
                    out.write(result);
                    out.flush();
@@ -1883,7 +1952,7 @@
                }
//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -1891,18 +1960,19 @@
    /**
     * 购买出行卡支付宝支付回调
     *
     * @param request
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/aliPayTaxiCardPaymentSpread")
    public void aliPayTaxiCardPaymentSpread(HttpServletRequest request, HttpServletResponse response){
    public void aliPayTaxiCardPaymentSpread(HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, String> map = payMoneyUtil.alipayCallback(request);
            if(null != map){
            if (null != map) {
                String out_trade_no = map.get("out_trade_no");
                String order_id = map.get("trade_no");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    taxiCardService.payTaxiCardPaymentSpread(Integer.valueOf(out_trade_no), order_id);
                    PrintWriter out = response.getWriter();
@@ -1912,7 +1982,7 @@
                }
//                cloudPay(map.get("total_amount"),map.get("trade_no"),0);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -1929,13 +1999,13 @@
            @ApiImplicitParam(value = "支付端(1=用户APP端,2=司机APP端,3=用户小程序端)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil payThankYouFee(Integer orderId, Integer orderType, Double money, Integer payType, Integer type, HttpServletRequest request){
    public ResultUtil payThankYouFee(Integer orderId, Integer orderType, Double money, Integer payType, Integer type, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            switch (orderType){
            switch (orderType) {
                case 1:
                    return orderPrivateCarService.payThankYouFee(uid, orderId, money, payType, type);
                case 2:
@@ -1951,7 +2021,7 @@
                case 7:
                    return orderCallService.payThankYouFee(uid, orderId, money, payType, type);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -1961,26 +2031,27 @@
    /**
     * 感谢费支付回调
     *
     * @param request
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/wxPayThankYouFee")
    public void wxPayThankYouFee(HttpServletRequest request, HttpServletResponse response){
    public void wxPayThankYouFee(HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            if(null != map){
            if (null != map) {
                String order_id = map.get("transaction_id");
                String out_trade_no = map.get("out_trade_no");
                String result = map.get("result");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    PrintWriter out = response.getWriter();
                    out.write(result);
                    out.flush();
                    out.close();
                    String[] s = out_trade_no.split("_");
                    switch (Integer.valueOf(s[1])){
                    switch (Integer.valueOf(s[1])) {
                        case 1:
                            orderPrivateCarService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 1);
                        case 2:
@@ -1999,7 +2070,7 @@
                }
//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -2007,20 +2078,21 @@
    /**
     * 感谢费支付宝支付回调
     *
     * @param request
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/aliPayThankYouFee")
    public void aliPayThankYouFee(HttpServletRequest request, HttpServletResponse response){
    public void aliPayThankYouFee(HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, String> map = payMoneyUtil.alipayCallback(request);
            if(null != map){
            if (null != map) {
                String out_trade_no = map.get("out_trade_no");
                String order_id = map.get("trade_no");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    String[] s = out_trade_no.split("_");
                    switch (Integer.valueOf(s[1])){
                    switch (Integer.valueOf(s[1])) {
                        case 1:
                            orderPrivateCarService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2);
                        case 2:
@@ -2044,7 +2116,7 @@
                }
//                cloudPay(map.get("total_amount"),map.get("trade_no"),0);
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -2084,10 +2156,50 @@
    @PostMapping("/base/order/qytPaymentCallback")
    public String qytPaymentCallback(@RequestBody QYTPaymentCallback qytPaymentCallback) {
        log.info("【黔云通支付回调通知】请求参数:" + JSON.toJSONString(qytPaymentCallback));
        if (null == qytPaymentCallback) {
        try {
            if (null == qytPaymentCallback) {
                return "error";
            }
            QYTPaymentCallbackData data = qytPaymentCallback.getData();
            if ("1".equals(data.getStatus())) {
                return "error";
            }
            String orderNo = data.getOrderNo();
            String payId = data.getPayId();
            //网约车
            if (orderNo.contains("PR")) {
                orderNo = orderNo.substring(2);
                orderPrivateCarService.payOrderPrivateCarCallback(Integer.valueOf(orderNo), payId, 1);
                orderPrivateCarService.promotion(Integer.valueOf(orderNo));
            }
            //出租车
            if (orderNo.contains("TA")) {
                orderNo = orderNo.substring(2);
                orderTaxiService.payOrderTaxiCallback(Integer.valueOf(orderNo), payId, 1, 0);
                orderTaxiService.promotion(Integer.valueOf(orderNo));
            }
        } catch (Exception e) {
            e.printStackTrace();
            return "error";
        }
        return "success";
    }
    /**
     * 推广订单支付成功回调
     *
     * @param orderId
     * @return
     */
    private void promotion(Integer orderType, Integer orderId) {
        switch (orderType) {
            case 3:
                orderCrossCityService.promotion(orderId);
                break;
            default:
                break;
        }
    }
@@ -2095,10 +2207,10 @@
    @PostMapping("/api/get/unPayOrder")
    @ApiOperation(value = "获取未支付订单", tags = {"用户端-首页"}, notes = "")
    @ApiImplicitParams({
           @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城,4=小件物流,null=全部)", name = "orderType", required = false, dataType = "int"),
           @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城,4=小件物流,null=全部)", name = "orderType", required = false, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil getUnPayOrder( Integer orderType,  HttpServletRequest request){
    public ResultUtil getUnPayOrder(Integer orderType, HttpServletRequest request) {
        try {
            // 从Redis中获取当前用户ID
            Integer uid = userInfoService.getUserIdFormRedis(request);
@@ -2147,4 +2259,294 @@
        }
    }
    @PostMapping("/api/order/queryMyTripList")
    @ApiOperation(value = "获取我的行程列表", tags = {"用户端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城出行)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(value = "页码(首页1)", name = "pageNum", required = true, dataType = "int"),
            @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<List<TripOrderVo>> queryMyTripList(Integer type, Integer pageNum, Integer size, HttpServletRequest request) {
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            List<Map<String, Object>> raw = fetchTrips(uid, type, pageNum, size);
            return ResultUtil.success(TripOrderVo.getTripOrderVo(raw));
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 私有:拉取指定 type 的行程列表。
     * type=0 → 全部类型;1/2/3 → 对应三种服务;pageNum/size 负责分页。
     * 对于 type==1 或 3,内部额外加载 serverCarModel 信息。
     */
    private List<Map<String, Object>> fetchTrips(
            Integer uid, Integer type, Integer pageNum, Integer size) throws Exception {
        List<Map<String, Object>> list = new ArrayList<>();
        if (type == null || type == 0) {
            list.addAll(orderPrivateCarService.queryMyTripListAll(uid));
            list.addAll(orderTaxiService.queryMyTripListAll(uid));
            list.addAll(orderCrossCityService.queryMyTripListAll(uid));
        } else {
            switch (type) {
                case 1:
                    list = orderPrivateCarService.queryMyTripList(uid, pageNum, size);
                    break;
                case 2:
                    list = orderTaxiService.queryMyTripList(uid, pageNum, size);
                    break;
                case 3:
                    list = orderCrossCityService.queryMyTripList(uid, pageNum, size);
                    break;
                default:
                    throw new IllegalArgumentException("无效的订单类型:" + type);
            }
        }
        // 排序
        list.sort((a, b) -> {
            Date da = (Date) a.get("boardingTime");
            Date db = (Date) b.get("boardingTime");
            if (da == null && db == null) return 0;
            if (da == null) return 1;   // a 在后面
            if (db == null) return -1;  // b 在后面
            return da.compareTo(db) * -1;    // 按时间正序(升序)排列
        });
        // 将经纬度转换为城市并设置到数据中
        if (list != null && !list.isEmpty()) {
            for (Map<String, Object> orderMap : list) {
                // 获取经纬度(根据实际字段名调整)
                Object lonObj = orderMap.get("boardingLon");
                Object latObj = orderMap.get("boardingLat");
                //获取公司id
                Object companyId = orderMap.get("companyId");
                Object serverCarModelId = null;
                ServerCarModel serverCarModel = null;
                if (orderMap.get("serverCarModelId") != null) {
                    //获取车型id
                    serverCarModelId = orderMap.get("serverCarModelId");
                    serverCarModel = serverCarModelService.selectById((Serializable) serverCarModelId);
                }
                if (lonObj != null && latObj != null) {
                    String lon = lonObj.toString();
                    String lat = latObj.toString();
                    Company company = companyService.selectById((Serializable) companyId);
                    try {
                        // 调用逆地理编码接口获取城市信息
                        Map<String, String> geoInfo = gdMapGeocodingUtil.geocode(lon, lat);
                        // 将城市信息存入map,供后续转换VO使用
                        orderMap.put("city", geoInfo.getOrDefault("city", ""));
                        orderMap.put("companyName", company.getName());
                        if (serverCarModel != null) {
                            orderMap.put("serverCarModel", serverCarModel.getName());
                        }
                    } catch (Exception e) {
                        // 记录转换失败日志,不中断流程
                        System.err.println("经纬度转城市失败: " + lon + "," + lat + ",错误: " + e.getMessage());
                        orderMap.put("city", ""); // 转换失败时设为空
                    }
                } else {
                    orderMap.put("city", ""); // 经纬度为空时设为空
                }
            }
        }
        return list;
    }
    @PostMapping("/api/user/sendTripSheetEmail")
    @ApiOperation(value = "发送行程单邮件", tags = {"用户端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "行程单信息", name = "tripSheet", required = false, dataType = "com.stylefeng.guns.modular.system.model.vo.TripSheetVo"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil sendTripSheetEmail(@RequestBody TripSheetVo tripSheet,
                                         HttpServletRequest request) {
        try {
            // 从Redis中获取当前用户ID
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            List<TripOrderVo> orderList = new ArrayList<>();
            if (tripSheet.isAllOrders()) {
                // 这里复用 queryMyTripList 逻辑,不分页,type=0 表示全部
                List<Map<String, Object>> rawList = fetchTrips(uid, 0, null, null);
                orderList = TripOrderVo.getTripOrderVo(rawList);
            } else {
                // 指定订单ID集合:验证并查询订单
                if (tripSheet.getOrderIdList() == null || tripSheet.getOrderIdList().isEmpty()) {
                    return ResultUtil.error("请传入订单ID集合或者选择全部订单");
                }
                // 根据订单类型和ID查询订单
                orderList = queryOrdersByTypeAndIds(uid, tripSheet.getOrderType(), tripSheet.getOrderIdList());
            }
            List<TripOrderVo> tripOrderVos = processTripOrderVos(orderList);
            String filePath = tripSheetGenerator.generatePdf(tripOrderVos);
            File attachment = new File(filePath);
            String displayFileName = "贵人家园出行-行程单.pdf";
            emailUtil.sendEmailWithAttachment(tripSheet.getRecipientEmail(), "贵人家园出行-行程单", "请查收您的行程单", attachment, displayFileName);
            attachment.delete(); // 发送成功后删除临时文件
            Map<String, Object> result = new HashMap<>();
            result.put("orderNum", orderList.size());
            return ResultUtil.success(result);
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.error("邮件发送失败" + e.getMessage());
        }
    }
    /**
     * 根据订单类型和ID集合查询订单
     */
    private List<TripOrderVo> queryOrdersByTypeAndIds(Integer userId, Integer orderType, List<Integer> orderIds) throws InvocationTargetException, IllegalAccessException {
        List<TripOrderVo> orderList = new ArrayList<>();
        List<Integer> states = Arrays.asList(8, 9);
        // 根据订单类型查询对应表的订单
        switch (orderType) {
            case 1:
                EntityWrapper<OrderPrivateCar> wrapper = new EntityWrapper<>();
                wrapper.in("id", orderIds);
                wrapper.in("state", states);
                List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(wrapper);
                for (OrderPrivateCar orderPrivateCar : orderPrivateCars) {
                    TripOrderVo vo = new TripOrderVo();
                    BeanUtils.copyProperties(orderPrivateCar, vo);
                    orderList.add(vo);
                }
                break;
            case 2:
                EntityWrapper<OrderTaxi> wrapper2 = new EntityWrapper<>();
                wrapper2.in("id", orderIds);
                wrapper2.in("state", states);
                List<OrderTaxi> orderTaxis = orderTaxiService.selectList(wrapper2);
                for (OrderTaxi orderTaxi : orderTaxis) {
                    TripOrderVo vo = new TripOrderVo();
                    BeanUtils.copyProperties(orderTaxi, vo);
                    orderList.add(vo);
                }
                break;
            case 3:
                EntityWrapper<OrderCrossCity> wrapper3 = new EntityWrapper<>();
                wrapper3.in("id", orderIds);
                wrapper3.in("state", states);
                List<OrderCrossCity> orderCrossCities = orderCrossCityService.selectList(wrapper3);
                for (OrderCrossCity orderCrossCity : orderCrossCities) {
                    TripOrderVo vo = new TripOrderVo();
                    BeanUtils.copyProperties(orderCrossCity, vo);
                    orderList.add(vo);
                }
                break;
            default:
                throw new IllegalArgumentException("无效的订单类型:" + orderType);
        }
        orderList.sort((a, b) -> {
            Date da = a.getBoardingTime();
            Date db = b.getBoardingTime();
            if (da == null && db == null) return 0;
            if (da == null) return 1;   // a 在后面
            if (db == null) return -1;  // b 在后面
            return da.compareTo(db);    // 按时间正序(升序)排列
        });
        return orderList;
    }
    /**
     * 处理行程订单VO列表,补充经纬度、公司和车型信息
     */
    private List<TripOrderVo> processTripOrderVos(List<TripOrderVo> orderVoList) {
        if (orderVoList == null || orderVoList.isEmpty()) {
            return new ArrayList<>();
        }
        for (TripOrderVo orderVo : orderVoList) {
            // 处理经纬度转城市信息
            handleGeoInfoForVo(orderVo);
            // 处理公司信息
            handleCompanyInfoForVo(orderVo);
            // 处理车型信息
            handleCarModelInfoForVo(orderVo);
        }
        return orderVoList;
    }
    /**
     * 处理经纬度转城市信息
     */
    private void handleGeoInfoForVo(TripOrderVo orderVo) {
        // 直接从VO获取经纬度(假设VO中有对应的getter方法)
        String lon = String.valueOf(orderVo.getBoardingLon());
        String lat = String.valueOf(orderVo.getBoardingLat());
        if (StringUtils.isEmpty(lon) || StringUtils.isEmpty(lat)) {
            orderVo.setCity("");
            return;
        }
        try {
            // 调用逆地理编码接口获取城市信息
            Map<String, String> geoInfo = gdMapGeocodingUtil.geocode(lon, lat);
            orderVo.setCity(geoInfo.getOrDefault("city", ""));
        } catch (Exception e) {
            // 记录转换失败日志,不中断流程
            System.err.println("经纬度转城市失败: " + lon + "," + lat + ",错误: " + e.getMessage());
            orderVo.setCity("");
        }
    }
    /**
     * 处理公司信息
     */
    private void handleCompanyInfoForVo(TripOrderVo orderVo) {
        // 从VO获取公司ID
        Integer companyId = orderVo.getCompanyId();
        if (companyId == null) {
            orderVo.setCompanyName("");
            return;
        }
        Company company = companyService.selectById(companyId);
        if (company != null) {
            orderVo.setCompanyName(company.getName());
        } else {
            orderVo.setCompanyName("");
        }
    }
    /**
     * 处理车型信息
     */
    private void handleCarModelInfoForVo(TripOrderVo orderVo) {
        // 从VO获取车型ID
        Integer serverCarModelId = orderVo.getServerCarModelId();
        if (serverCarModelId == null) {
            orderVo.setServerCarModel("");
            return;
        }
        ServerCarModel serverCarModel = serverCarModelService.selectById(serverCarModelId);
        if (serverCarModel != null) {
            orderVo.setServerCarModel(serverCarModel.getName());
        } else {
            orderVo.setServerCarModel("");
        }
    }
}