longz
2026-06-30 bcfeaf551a586ab6898bf6dc5c5995e2e03a4f11
跨城改派fix
5个文件已修改
172 ■■■■■ 已修改文件
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IReassignService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/task/ReassignTimeoutTask.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java
@@ -150,7 +150,7 @@
    /**
     * 司机响应改派申请
     * @param reassignId
     * @param reassignIds
     * @param responseType
     * @param request
     * @return
@@ -159,14 +159,14 @@
    @PostMapping("/api/orderCrossCity/respondReassign")
    @ApiOperation(value = "司机响应改派申请(跨城)", tags = {"司机端-改派"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "改派ID", name = "reassignId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "改派ID列表(逗号分隔)", name = "reassignIds", required = true, dataType = "string"),
            @ApiImplicitParam(value = "响应类型(1=同意,2=拒绝)", name = "responseType", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil respondReassign(Integer reassignId, Integer responseType, HttpServletRequest request) {
    public ResultUtil respondReassign(String reassignIds, Integer responseType, HttpServletRequest request) {
        try {
            Integer driverId = ShiroKit.getUser().getId();
            return reassignService.respondReassign(reassignId, driverId, responseType);
            return reassignService.respondReassignBatch(reassignIds, driverId, responseType);
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.error("操作失败");
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IReassignService.java
@@ -72,6 +72,15 @@
    ResultUtil respondReassign(Integer reassignId, Integer driverId, Integer responseType);
    /**
     * 批量响应改派申请
     * @param reassignIds 改派ID列表(逗号分隔)
     * @param driverId 司机ID
     * @param responseType 响应类型(1=同意,2=拒绝)
     * @return
     */
    ResultUtil respondReassignBatch(String reassignIds, Integer driverId, Integer responseType);
    /**
     * 查询待确认的改派申请列表
     * @param driverId 司机ID
     * @return
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
@@ -1444,48 +1444,48 @@
    }
    /**
     * 通知原司机改派成功
     * 通知原司机改派成功(使用Socket推送)
     */
    private void pushReassignSuccess(Reassign reassign) {
        try {
            Map<String, String> data = new HashMap<>();
            data.put("type", "REASSIGN_SUCCESS");
            data.put("reassignId", String.valueOf(reassign.getId()));
            data.put("orderId", String.valueOf(reassign.getOrderId()));
            jgPushUtil.push(2, "您的改派申请已被接受", "改派成功", data, "DRIVER" + reassign.getOriginalDriverId());
            pushUtil.pushReassignSuccess(
                reassign.getOriginalDriverId(),
                reassign.getId(),
                reassign.getOrderId(),
                reassign.getOrderType()
            );
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 通知原司机改派被拒绝
     * 通知原司机改派被拒绝(使用Socket推送)
     */
    private void pushReassignRejected(Reassign reassign) {
        try {
            Map<String, String> data = new HashMap<>();
            data.put("type", "REASSIGN_REJECTED");
            data.put("reassignId", String.valueOf(reassign.getId()));
            data.put("orderId", String.valueOf(reassign.getOrderId()));
            jgPushUtil.push(2, "对方拒绝了您的改派申请", "改派被拒绝", data, "DRIVER" + reassign.getOriginalDriverId());
            pushUtil.pushReassignRejected(
                reassign.getOriginalDriverId(),
                reassign.getId(),
                reassign.getOrderId(),
                reassign.getOrderType()
            );
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 通知原司机改派超时
     * 通知原司机改派超时(使用Socket推送)
     */
    private void pushReassignTimeout(Reassign reassign) {
        try {
            Map<String, String> data = new HashMap<>();
            data.put("type", "REASSIGN_TIMEOUT");
            data.put("reassignId", String.valueOf(reassign.getId()));
            data.put("orderId", String.valueOf(reassign.getOrderId()));
            jgPushUtil.push(2, "改派申请已超时,请重新选择", "改派超时", data, "DRIVER" + reassign.getOriginalDriverId());
            pushUtil.pushReassignTimeout(
                reassign.getOriginalDriverId(),
                reassign.getId(),
                reassign.getOrderId(),
                reassign.getOrderType()
            );
        } catch (Exception e) {
            e.printStackTrace();
        }
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/task/ReassignTimeoutTask.java
@@ -3,15 +3,13 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.modular.system.model.Reassign;
import com.stylefeng.guns.modular.system.service.IReassignService;
import com.stylefeng.guns.modular.system.util.JGPushUtil;
import com.stylefeng.guns.modular.system.util.PushUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 改派超时检查定时任务
@@ -24,7 +22,7 @@
    private IReassignService reassignService;
    @Autowired
    private JGPushUtil jgPushUtil;
    private PushUtil pushUtil;
    /**
     * 每30秒检查一次超时的改派申请
@@ -63,16 +61,16 @@
    }
    /**
     * 通知原司机改派超时
     * 通知原司机改派超时(使用Socket推送)
     */
    private void pushReassignTimeout(Reassign reassign) {
        try {
            Map<String, String> data = new HashMap<>();
            data.put("type", "REASSIGN_TIMEOUT");
            data.put("reassignId", String.valueOf(reassign.getId()));
            data.put("orderId", String.valueOf(reassign.getOrderId()));
            jgPushUtil.push(2, "改派申请已超时,请重新选择", "改派超时", data, "DRIVER" + reassign.getOriginalDriverId());
            pushUtil.pushReassignTimeout(
                reassign.getOriginalDriverId(),
                reassign.getId(),
                reassign.getOrderId(),
                reassign.getOrderType()
            );
        } catch (Exception e) {
            e.printStackTrace();
        }
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java
@@ -324,6 +324,99 @@
        }
    }
    /**
     * 通知原司机改派结果(Socket推送)
     * @param driverId 原司机ID
     * @param reassignId 改派记录ID
     * @param orderId 订单ID
     * @param orderType 订单类型
     * @param resultType 结果类型(1=成功,2=拒绝,3=超时)
     */
    public void pushReassignResult(Integer driverId, Integer reassignId, Integer orderId, Integer orderType, Integer resultType) {
        String resultName = resultType == 1 ? "成功" : (resultType == 2 ? "被拒绝" : "超时");
        System.out.println("推送改派" + resultName + "通知给原司机: driverId=" + driverId + ", reassignId=" + reassignId);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("code", 200);
        jsonObject.put("msg", "SUCCESS");
        jsonObject.put("method", "REASSIGN_RESULT");
        Map<String, Object> map = new HashMap<>();
        map.put("type", resultType); // 1=成功,2=拒绝,3=超时
        map.put("reassignId", reassignId);
        map.put("orderId", orderId);
        map.put("orderType", orderType);
        // 根据结果类型设置不同的提示消息
        String message;
        if (resultType == 1) {
            message = "您的改派申请已被接受";
        } else if (resultType == 2) {
            message = "对方拒绝了您的改派申请";
        } else {
            message = "改派申请已超时,请重新选择";
        }
        map.put("message", message);
        jsonObject.put("data", map);
        // 调用推送
        HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient");
        post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE);
        Map<String, Object> params = new HashMap<>();
        params.put("msg", jsonObject.toJSONString());
        params.put("id", driverId);
        params.put("type", 2); // type=2 表示司机端
        params.put("bussinessType", "dache");
        post.form(params);
        HttpResponse execute = post.execute();
        if (200 != execute.getStatus()) {
            System.err.println("改派" + resultName + "通知推送异常");
        } else {
            JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class);
            if (jsonObject1.getIntValue("code") != 200) {
                System.err.println("改派" + resultName + "通知推送失败: " + jsonObject1.getString("msg"));
            } else {
                System.out.println("改派" + resultName + "通知推送成功: driverId=" + driverId);
            }
        }
    }
    /**
     * 通知原司机改派成功(Socket推送)
     * @param driverId 原司机ID
     * @param reassignId 改派记录ID
     * @param orderId 订单ID
     * @param orderType 订单类型
     */
    public void pushReassignSuccess(Integer driverId, Integer reassignId, Integer orderId, Integer orderType) {
        pushReassignResult(driverId, reassignId, orderId, orderType, 1);
    }
    /**
     * 通知原司机改派被拒绝(Socket推送)
     * @param driverId 原司机ID
     * @param reassignId 改派记录ID
     * @param orderId 订单ID
     * @param orderType 订单类型
     */
    public void pushReassignRejected(Integer driverId, Integer reassignId, Integer orderId, Integer orderType) {
        pushReassignResult(driverId, reassignId, orderId, orderType, 2);
    }
    /**
     * 通知原司机改派超时(Socket推送)
     * @param driverId 原司机ID
     * @param reassignId 改派记录ID
     * @param orderId 订单ID
     * @param orderType 订单类型
     */
    public void pushReassignTimeout(Integer driverId, Integer reassignId, Integer orderId, Integer orderType) {
        pushReassignResult(driverId, reassignId, orderId, orderType, 3);
    }
    /**
     * 推送司机位置给乘客端