yanghb
2023-04-26 f56aff52634ad1308d73da2a3c456cf7d18e92b2
DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -3,10 +3,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.call.model.OrderCall;
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.smallLogistics.model.OrderLogistics;
@@ -16,15 +13,12 @@
import com.stylefeng.guns.modular.system.dao.PhoneMapper;
import com.stylefeng.guns.modular.system.dao.RegionMapper;
import com.stylefeng.guns.modular.system.dao.SysReformistMapper;
import com.stylefeng.guns.modular.system.model.AdditionalFee;
import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.model.OrderPosition;
import com.stylefeng.guns.modular.system.model.Region;
import com.stylefeng.guns.modular.system.service.IAdditionalFeeService;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.IOrderService;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
import com.stylefeng.guns.modular.system.warpper.OrderListWarpper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
@@ -88,12 +82,6 @@
    @Autowired
    private PushMinistryOfTransportUtil pushMinistryOfTransportUtil;
    @Autowired
    private IOrderCallService orderCallService;
    @Autowired
    private IAdditionalFeeService additionalFeeService;
@@ -208,17 +196,6 @@
        datas.addAll(list2);
        //小件物流
        List<Map<String, Object>> list3 = orderLogisticsService.queryMyAllOrder(state, uid);
        for (Map<String, Object> map : list3) {
            if (ToolUtil.isNotEmpty(map.get("endServiceTime")) && ToolUtil.isNotEmpty(map.get("arriveTimeExpects"))){
                if (DateUtil.parseTime(map.get("endServiceTime").toString()).getTime() > DateUtil.parseTime(map.get("arriveTimeExpects").toString()).getTime()){
                    map.put("timeOutState",1);
                }else {
                    map.put("timeOutState",2);
                }
            }else {
                map.put("timeOutState",2);
            }
        }
        datas.addAll(list3);
        List<OrderListWarpper> orderListWarpper = OrderListWarpper.getOrderListWarpper(datas);
@@ -239,6 +216,7 @@
    /**
     * 获取司机端我的订单列表
     * @param state     1=全部,2=待支付,3=已取消,4=已完成
     * @param pageNum
     * @param size
     * @param uid
@@ -296,9 +274,13 @@
                map.put("startDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                //总距离
                String end = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                distance = gdMapElectricFenceUtil.getDistance(end, order, 1).get("distance");
                map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                if(null == map.get("endLon")){
                    map.put("totalDistance", 0);
                }else{
                    String end = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                    distance = gdMapElectricFenceUtil.getDistance(end, order, 1).get("distance");
                    map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                }
                Integer orderSource = Integer.valueOf(String.valueOf(map.get("orderSource")));
                if(orderSource == 1 || orderSource == 2 || orderSource == 3){
@@ -328,6 +310,9 @@
                    if(Integer.valueOf(String.valueOf(map.get("orderType"))) == 2 && Integer.valueOf(String.valueOf(map.get("isReassign"))) == 2){
                        map.put("type", "改派");
                    }
                }
                if(orderSource == 6){
                    map.put("type", "乘客下单");
                }
                break;
            case 2://出租
@@ -546,7 +531,7 @@
        Map<String, Object> map = null;
        switch (orderType){
            case 1://专车
                map = orderPrivateCarService.queryOrderInfo2(orderId);
                map = orderPrivateCarService.queryOrderInfo(orderId);
                break;
            case 2://出租
                map = orderTaxiService.queryOrderInfo(orderId);
@@ -562,9 +547,9 @@
                break;
            case 6:
                break;
            case 7:
                map = orderPrivateCarService.queryOrderInfo(orderId);
                break;
        }
        if(null != map.get("phone")){
            map.put("phone",AESUtil.decrypt((String) map.get("phone")));
        }
        if(null != map.get("telX")){
            map.put("phone", map.get("telX"));
@@ -615,7 +600,7 @@
     * @throws Exception
     */
    @Override
    public ResultUtil process(Integer orderId, Integer orderType, Integer state, Integer uid, Double lon, Double lat, String driverImg) throws Exception {
    public ResultUtil process(Integer orderId, Integer orderType, Integer state, Integer uid, Double lon, Double lat) throws Exception {
        Map<String, String> geocode = gdMapGeocodingUtil.geocode(String.valueOf(lon), String.valueOf(lat));
        String address = geocode.get("address");
        switch (orderType){
@@ -626,9 +611,9 @@
            case 3://城际
                return orderCrossCityService.process(orderId, state, lon, lat, address);
            case 4://同城小件
                return orderLogisticsService.process(orderId, state, lon, lat, address, driverImg);
                return orderLogisticsService.process(orderId, state, lon, lat, address);
            case 5://跨城小件
                return orderLogisticsService.process(orderId, state, lon, lat, address, driverImg);
                return orderLogisticsService.process(orderId, state, lon, lat, address);
            case 6:
                break;
        }
@@ -665,47 +650,6 @@
        }
        return null;
    }
    @Override
    public ResultUtil cancleOrder(Integer orderId, Integer orderType) throws Exception {
        switch (orderType){
            case 1://专车
                return orderPrivateCarService.cancleOrder(orderId);
            case 2://出租
                break;
            case 3://城际(没有此流程)
                break;
            case 4://
                break;
            case 5:
                break;
            case 6:
                break;
        }
        return null;
    }
    @Override
    public ResultUtil updatePeopleNum(Integer orderId, Integer peopleNum) throws Exception {
        return orderPrivateCarService.updatePeopleNum(orderId,peopleNum);
    }
    @Override
    public ResultUtil confirmFees1(Integer orderId, Integer orderType, Integer type, Double travelFee, String additionalFee) throws Exception {
        switch (orderType){
            case 1://专车
                return orderPrivateCarService.confirmFees1(orderId, type, additionalFee);
            case 2://出租
                return orderTaxiService.confirmFees1(orderId, type, travelFee, additionalFee);
            case 3://城际(没有此流程)
                break;
            case 4://
                break;
            case 5:
                break;
            case 6:
                break;
        }
        return null;
    }
    /**
     * 确认费用(车载端)
@@ -835,8 +779,8 @@
    @Override
    public Integer queryOrderNum(Integer driverId, Date start, Date end) throws Exception {
        //出租车
        Integer[] state = new Integer[]{8, 9};
        int i = orderTaxiService.selectCount(new EntityWrapper<OrderTaxi>().eq("driverId", driverId).ne("payManner",2).between("insertTime", start, end).in("state", state));
        Integer[] state = new Integer[]{6, 7, 8, 9};
        int i = orderTaxiService.selectCount(new EntityWrapper<OrderTaxi>().eq("driverId", driverId).between("insertTime", start, end).in("state", state));
        return i;
    }
@@ -858,7 +802,7 @@
            Integer muoth = Long.valueOf((orderTaxi.getTravelTime().getTime() - System.currentTimeMillis()) / (1000 * 60)).intValue();
            //发送短信提醒
            aLiSendSms.sendSms(driver.getPhone(), "SMS_229613325", "{\"data\":\"" + orderTaxi.getStartAddress() + "\",\"data1\":\"" + orderTaxi.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}");
            aLiSendSms.sendSms(driver.getPhone(), "SMS_207522070", "{\"data\":\"" + orderTaxi.getStartAddress() + "\",\"data1\":\"" + orderTaxi.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}");
        }
        //专车
        List<OrderPrivateCar> list1 = orderPrivateCarService.queryMaturity();
@@ -870,7 +814,7 @@
            Integer muoth = Long.valueOf((orderPrivateCar.getTravelTime().getTime() - System.currentTimeMillis()) / (1000 * 60)).intValue();
            //发送短信提醒
            aLiSendSms.sendSms(driver.getPhone(), "SMS_229613325", "{\"data\":\"" + orderPrivateCar.getStartAddress() + "\",\"data1\":\"" + orderPrivateCar.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}");
            aLiSendSms.sendSms(driver.getPhone(), "SMS_207522070", "{\"data\":\"" + orderPrivateCar.getStartAddress() + "\",\"data1\":\"" + orderPrivateCar.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}");
        }
        //跨城
        List<OrderCrossCity> orderCrossCities = orderCrossCityService.queryMaturity();
@@ -882,7 +826,7 @@
            Integer muoth = Long.valueOf((orderCrossCity.getTravelTime().getTime() - System.currentTimeMillis()) / (1000 * 60)).intValue();
            //发送短信提醒
            aLiSendSms.sendSms(driver.getPhone(), "SMS_229613325", "{\"data\":\"" + orderCrossCity.getStartAddress() + "\",\"data1\":\"" + orderCrossCity.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}");
            aLiSendSms.sendSms(driver.getPhone(), "SMS_207522070", "{\"data\":\"" + orderCrossCity.getStartAddress() + "\",\"data1\":\"" + orderCrossCity.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}");
        }
        //小件物流
        List<OrderLogistics> orderLogistics = orderLogisticsService.queryMaturity();
@@ -892,7 +836,7 @@
            Integer muoth = Long.valueOf((orderLogistics1.getTravelTime().getTime() - System.currentTimeMillis()) / (1000 * 60)).intValue();
            //发送短信提醒
            aLiSendSms.sendSms(driver.getPhone(), "SMS_229613325", "{\"data\":\"" + orderLogistics1.getStartAddress() + "\",\"data1\":\"" + orderLogistics1.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}");
            aLiSendSms.sendSms(driver.getPhone(), "SMS_207522070", "{\"data\":\"" + orderLogistics1.getStartAddress() + "\",\"data1\":\"" + orderLogistics1.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}");
        }
        if(drivers.size() > 0){
            driverService.updateBatchById(drivers);//批量修改状态为服务中
@@ -908,7 +852,7 @@
    public void taskMidAxbUnBindSend() throws Exception {
        List<OrderTaxi> list = orderTaxiService.taskMidAxbUnBindSend();
        for(OrderTaxi orderTaxi : list){
            Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(), orderTaxi.getTelX(), (System.currentTimeMillis() + 600000));
            Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId());
            if(!String.valueOf(map.get("code")).equals("200")){
                System.err.println(String.valueOf(map.get("msg")));
            }
@@ -917,45 +861,6 @@
        }
        if(list.size() > 0){
            orderTaxiService.updateBatchById(list);
        }
        List<OrderPrivateCar> list1 = orderPrivateCarService.taskMidAxbUnBindSend();
        for(OrderPrivateCar orderTaxi : list1){
            Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(), orderTaxi.getTelX(), (System.currentTimeMillis() + 600000));
            if(!String.valueOf(map.get("code")).equals("200")){
                System.err.println(String.valueOf(map.get("msg")));
            }
            orderTaxi.setTelX("");
            orderTaxi.setBindId("");
        }
        if(list1.size() > 0){
            orderPrivateCarService.updateBatchById(list1);
        }
        List<OrderCrossCity> orderCrossCities = orderCrossCityService.taskMidAxbUnBindSend();
        for(OrderCrossCity orderTaxi : orderCrossCities){
            Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(), orderTaxi.getTelX(), (System.currentTimeMillis() + 600000));
            if(!String.valueOf(map.get("code")).equals("200")){
                System.err.println(String.valueOf(map.get("msg")));
            }
            orderTaxi.setTelX("");
            orderTaxi.setBindId("");
        }
        if(orderCrossCities.size() > 0){
            orderCrossCityService.updateBatchById(orderCrossCities);
        }
        List<OrderLogistics> orderLogistics = orderLogisticsService.taskMidAxbUnBindSend();
        for(OrderLogistics orderTaxi : orderLogistics){
            Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(), orderTaxi.getTelX(), (System.currentTimeMillis() + 600000));
            if(!String.valueOf(map.get("code")).equals("200")){
                System.err.println(String.valueOf(map.get("msg")));
            }
            orderTaxi.setTelX("");
            orderTaxi.setBindId("");
        }
        if(orderLogistics.size() > 0){
            orderLogisticsService.updateBatchById(orderLogistics);
        }
    }
@@ -972,13 +877,15 @@
            case 1:
                OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
                if(ToolUtil.isNotEmpty(orderPrivateCar.getBindId())){
                    Map<String, String> map1 = chinaMobileUtil.midAxbUnBindSend(orderPrivateCar.getBindId(), orderPrivateCar.getTelX(), (System.currentTimeMillis() + 600000));
                    Map<String, String> map1 = chinaMobileUtil.midAxbUnBindSend(orderPrivateCar.getBindId());
                    if(!String.valueOf(map1.get("code")).equals("200")){
                        System.err.println(String.valueOf(map1.get("msg")));
                    }
                    //调用移动的小号接口
                    Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
                    Region region = regionMapper.query(geocode.get("districtCode"));
                    Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1)));
                    if(String.valueOf(map.get("code")).equals("200")){
                        orderPrivateCar.setTelX(map.get("telX"));
                        orderPrivateCar.setBindId(map.get("bindId"));
@@ -989,13 +896,15 @@
            case 2:
                OrderTaxi orderTaxi = orderTaxiService.selectById(orderId);
                if(ToolUtil.isNotEmpty(orderTaxi.getBindId())){
                    Map<String, String> map1 = chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(), orderTaxi.getTelX(), (System.currentTimeMillis() + 600000));
                    Map<String, String> map1 = chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId());
                    if(!String.valueOf(map1.get("code")).equals("200")){
                        System.err.println(String.valueOf(map1.get("msg")));
                    }
                    //调用移动的小号接口
                    Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString());
                    Region region = regionMapper.query(geocode.get("districtCode"));
                    Driver driver = driverService.selectById(orderTaxi.getDriverId());
                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1)));
                    if(String.valueOf(map.get("code")).equals("200")){
                        orderTaxi.setTelX(map.get("telX"));
                        orderTaxi.setBindId(map.get("bindId"));
@@ -1006,13 +915,15 @@
            case 3:
                OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId);
                if(ToolUtil.isNotEmpty(orderCrossCity.getBindId())){
                    Map<String, String> map1 = chinaMobileUtil.midAxbUnBindSend(orderCrossCity.getBindId(), orderCrossCity.getTelX(), (System.currentTimeMillis() + 600000));
                    Map<String, String> map1 = chinaMobileUtil.midAxbUnBindSend(orderCrossCity.getBindId());
                    if(!String.valueOf(map1.get("code")).equals("200")){
                        System.err.println(String.valueOf(map1.get("msg")));
                    }
                    //调用移动的小号接口
                    Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString());
                    Region region = regionMapper.query(geocode.get("districtCode"));
                    Driver driver = driverService.selectById(orderCrossCity.getDriverId());
                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1)));
                    if(String.valueOf(map.get("code")).equals("200")){
                        orderCrossCity.setTelX(map.get("telX"));
                        orderCrossCity.setBindId(map.get("bindId"));
@@ -1198,45 +1109,8 @@
    }
    @Override
    public List<BaseWarpper> queryAdditionalFee(Integer orderType, Integer orderId, Integer uid) throws Exception {
        Integer companyId = null;
        if(orderType == 1){//专车
            OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
            companyId = orderPrivateCar.getCompanyId();
        }
        if(orderType == 2){//出租车
            OrderTaxi orderTaxi = orderTaxiService.selectById(orderId);
            companyId = orderTaxi.getCompanyId();
        }
        if(orderType == 3){//跨城出行
            Driver driver = driverService.selectById(uid);
            companyId = driver.getCompanyId();
        }
        if(orderType == 4){//同城小件
            OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
            companyId = orderLogistics.getCompanyId();
        }
        if(orderType == 5){//跨城小件
            OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
            companyId = orderLogistics.getCompanyId();
        }
        if(orderType == 6){//包车
        }
        if(orderType == 7){//助老模式
            OrderCall orderCall = orderCallService.selectById(orderId);
            companyId = orderCall.getCompanyId();
        }
        List<AdditionalFee> additionalFees = additionalFeeService.selectList(new EntityWrapper<AdditionalFee>().eq("companyId", companyId).eq("state", 1));
        List<BaseWarpper> list = new ArrayList<>();
        additionalFees.forEach(additionalFee -> {
            BaseWarpper baseWarpper = new BaseWarpper();
            baseWarpper.setId(additionalFee.getId());
            baseWarpper.setName(additionalFee.getName());
            list.add(baseWarpper);
        });
        return list;
    }
}