| | |
| | | |
| | | /** |
| | | * 司机响应改派申请 |
| | | * @param reassignId |
| | | * @param reassignIds |
| | | * @param responseType |
| | | * @param request |
| | | * @return |
| | |
| | | @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("操作失败"); |
| | |
| | | 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 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 通知原司机改派成功 |
| | | * 通知原司机改派成功(使用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(); |
| | | } |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 改派超时检查定时任务 |
| | |
| | | private IReassignService reassignService; |
| | | |
| | | @Autowired |
| | | private JGPushUtil jgPushUtil; |
| | | private PushUtil pushUtil; |
| | | |
| | | /** |
| | | * 每30秒检查一次超时的改派申请 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 通知原司机改派超时 |
| | | * 通知原司机改派超时(使用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(); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 通知原司机改派结果(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); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 推送司机位置给乘客端 |