无关风月
2024-11-14 3af9c82375df6bd77ae78a5d900c409a895ecd18
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.util.MD5Util;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread;
@@ -14,6 +15,7 @@
import com.stylefeng.guns.modular.system.model.OrderPosition;
import com.stylefeng.guns.modular.system.model.Reassign;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.IOrderPositionService;
import com.stylefeng.guns.modular.system.service.IOrderService;
import com.stylefeng.guns.modular.system.service.IReassignService;
import com.stylefeng.guns.modular.system.util.*;
@@ -40,9 +42,7 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * 订单相关控制器
@@ -77,6 +77,12 @@
    
    @Resource
    private FleetEngineUtil fleetEngineUtil;
    @Autowired
    private IOrderPositionService orderPositionService;
    @Autowired
    private RedisUtil redisUtil;
@@ -394,6 +400,13 @@
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            String format = String.format("uid=%s&orderId=%s&orderType=%s&state=%s", uid, orderId, orderType, state);
            String key = MD5Util.encrypt(format);
            String value = redisUtil.getValue(key);
            if(ToolUtil.isNotEmpty(value) && (System.currentTimeMillis() - Long.valueOf(value)) <= 1000){
                return ResultUtil.error(language == 1 ? "请勿重复操作" : language == 2 ? "Don't repeat the operation" : "Ne répétez pas l’opération");
            }
            redisUtil.setStrValue(key, System.currentTimeMillis() + "", 5);
            return orderService.process(orderId, orderType, state, uid, lon, lat, phone, pickUpCode, language);
        }catch (Exception e){
            e.printStackTrace();
@@ -900,4 +913,152 @@
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @PostMapping("/base/taxi/getTripInfo")
    public ResultUtil getTripInfo(String tripId){
        return ResultUtil.success(fleetEngineUtil.getTrip(tripId));
    }
    /**
     * 更新google订单状态
     * @param tripStatus
     * @param tripId
     * @return
     */
    @ResponseBody
    @PostMapping("/base/taxi/editTripStatus")
    public ResultUtil editTripStatus(String tripStatus, String tripId){
        boolean b = fleetEngineUtil.updateTrip(tripStatus, null, null, tripId, null, null, null, null);
        if(b){
            return ResultUtil.success();
        }
        return ResultUtil.error("更新失败");
    }
    /**
     * 上传订单经纬度
     * @param orderPosition
     * @return
     */
    @ResponseBody
    @PostMapping("/api/order/saveOrderPosition")
    public ResultUtil saveOrderPosition(OrderPosition orderPosition, HttpServletRequest request){
        try {
            Integer uid = driverService.getUserIdFormRedis(request);
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            if(null != orderPosition.getOrderId()){
                orderPosition.setDriverId(uid);
                orderPosition.setInsertTime(new Date());
                orderPositionService.saveData(orderPosition);
            }
            redisUtil.setStrValue("DRIVER" + uid, orderPosition.getLon() + "," + orderPosition.getLat(), 300);//实时位置存入redis中
            return ResultUtil.success();
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @PostMapping("/base/taxi/editGoogleTripStatus")
    public ResultUtil editGoogleTripStatus(){
        List<OrderPrivateCar> privateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().isNotNull("tripId"));
        for (OrderPrivateCar privateCar : privateCars) {
            Integer state = privateCar.getState();
            String tripId = privateCar.getTripId();
            String trip = fleetEngineUtil.getTrip(tripId);
            if(ToolUtil.isNotEmpty(trip)){
                JSONObject jsonObject = JSON.parseObject(trip);
                String tripStatus = jsonObject.getString("tripStatus");
                if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){
                    //修改行程信息
                    boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, tripId, null, null, null, null);
                    if(!updateTrip){
                        for (int i = 0; i < 5; i++) {
                            updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, tripId, null, null, null, null);
                            if(updateTrip){
                                continue;
                            }
                            try {
                                Thread.sleep(3000L);
                            } catch (InterruptedException e) {
                                throw new RuntimeException(e);
                            }
                        }
                    }
                }
                if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){
                    //修改行程信息
                    boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", null, null, tripId, null, null, null, null);
                    if(!updateTrip){
                        for (int i = 0; i < 5; i++) {
                            updateTrip = fleetEngineUtil.updateTrip("COMPLETE", null, null, tripId, null, null, null, null);
                            if(updateTrip){
                                continue;
                            }
                            try {
                                Thread.sleep(3000L);
                            } catch (InterruptedException e) {
                                throw new RuntimeException(e);
                            }
                        }
                    }
                }
            }
        }
        List<OrderLogistics> orderLogisticsList = orderLogisticsService.selectList(new EntityWrapper<OrderLogistics>().isNotNull("tripId"));
        for (OrderLogistics orderLogistics : orderLogisticsList) {
            Integer state = orderLogistics.getState();
            String tripId = orderLogistics.getTripId();
            String trip = fleetEngineUtil.getTrip(tripId);
            if(ToolUtil.isNotEmpty(trip)){
                JSONObject jsonObject = JSON.parseObject(trip);
                String tripStatus = jsonObject.getString("tripStatus");
                if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){
                    //修改行程信息
                    boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, tripId, null, null, null, null);
                    if(!updateTrip){
                        for (int i = 0; i < 5; i++) {
                            updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, tripId, null, null, null, null);
                            if(updateTrip){
                                continue;
                            }
                            try {
                                Thread.sleep(3000L);
                            } catch (InterruptedException e) {
                                throw new RuntimeException(e);
                            }
                        }
                    }
                }
                if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){
                    //修改行程信息
                    boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", null, null, tripId, null, null, null, null);
                    if(!updateTrip){
                        for (int i = 0; i < 5; i++) {
                            updateTrip = fleetEngineUtil.updateTrip("COMPLETE", null, null, tripId, null, null, null, null);
                            if(updateTrip){
                                continue;
                            }
                            try {
                                Thread.sleep(3000L);
                            } catch (InterruptedException e) {
                                throw new RuntimeException(e);
                            }
                        }
                    }
                }
            }
        }
        return ResultUtil.success();
    }
}