| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package com.ruoyi.app.flashdelivery.controller;
- import com.ruoyi.app.flashdelivery.dto.FlashDeliveryProofRequest;
- import com.ruoyi.app.flashdelivery.dto.FlashDeliveryDeliverRequest;
- import com.ruoyi.app.flashdelivery.service.FlashDeliveryApplicationService;
- import com.ruoyi.common.annotation.Anonymous;
- import com.ruoyi.common.core.controller.BaseController;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.system.utils.Auth;
- import com.ruoyi.system.utils.JwtUtil;
- import org.springframework.web.bind.annotation.*;
- import java.math.BigDecimal;
- /** 骑手端闪送接口;仅 userType=2 的 token 可执行接单和履约操作。 */
- @RestController
- @RequestMapping("/system/flashDelivery/rider")
- @Anonymous
- public class FlashDeliveryRiderController extends BaseController {
- private final FlashDeliveryApplicationService service;
- public FlashDeliveryRiderController(FlashDeliveryApplicationService service) { this.service = service; }
- /**
- * 按页签查询可抢任务或当前骑手自己的任务。
- *
- * @param token 登录令牌,用于解析当前骑手 ID
- * @param page 页码,从 1 开始,默认 1
- * @param size 每页数量,默认 10,服务端限制为 1 至 100
- * @param tab 骑手任务页签:newTask、toPickup、delivering、completed 或 cancelled
- * @param longitude 骑手当前经度;newTask 页签选填,传入时必须与纬度同时提供
- * @param latitude 骑手当前纬度;newTask 页签选填,传入时必须与经度同时提供
- */
- @GetMapping("/orders")
- @Auth
- public AjaxResult orders(@RequestHeader String token,
- @RequestParam(defaultValue = "1") int page,
- @RequestParam(defaultValue = "10") int size,
- @RequestParam(defaultValue = "newTask") String tab,
- @RequestParam(required = false) BigDecimal longitude,
- @RequestParam(required = false) BigDecimal latitude) {
- return success(service.riderOrders(userId(token), page, size, tab, longitude, latitude));
- }
- /** 接单前隐藏敏感字段;接单后仅中单骑手可见完整履约信息。 */
- @GetMapping("/orders/{id}")
- @Auth
- public AjaxResult detail(@RequestHeader String token, @PathVariable Long id) {
- return success(service.riderDetail(userId(token), id));
- }
- /** 原子抢单;同一订单只能由一个骑手成功接取。 */
- @PostMapping("/orders/{id}/accept")
- @Auth
- public AjaxResult accept(@RequestHeader String token, @PathVariable Long id) {
- return success(service.accept(userId(token), id));
- }
- /** 上传取件凭证并将已接单订单推进为已取件。 */
- @PostMapping("/orders/{id}/pickup")
- @Auth
- public AjaxResult pickup(@RequestHeader String token, @PathVariable Long id,
- @RequestBody FlashDeliveryProofRequest request) {
- service.pickup(userId(token), id, request);
- return success();
- }
- /** 上传送达凭证并将已取件订单推进为已送达。 */
- @PostMapping("/orders/{id}/deliver")
- @Auth
- public AjaxResult deliver(@RequestHeader String token, @PathVariable Long id,
- @RequestBody FlashDeliveryDeliverRequest request) {
- service.deliver(userId(token), id, request);
- return success();
- }
- private Long userId(String token) { return Long.valueOf(new JwtUtil().getusid(token)); }
- }
|