RiderOrderController.java 2.93 KB
package com.diligrp.rider.controller;

import com.diligrp.rider.common.result.Result;
import com.diligrp.rider.service.RiderOrderService;
import com.diligrp.rider.vo.OrderVO;
import jakarta.servlet.http.HttpServletRequest;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/rider/order")
@RequiredArgsConstructor
public class RiderOrderController {

    private final RiderOrderService orderService;

    @Data
    static class OrderIdCityReq { private Long orderId; private Long cityId; }
    @Data
    static class OrderCompleteReq { private Long orderId; private String thumbs; }
    @Data
    static class OrderStartReq { private Long orderId; private String code; }

    /**
     * 订单列表
     * @param type 1=待接单 2=待取货 3=待完成
     * @param cityId 城市ID
     * @param page 页码
     */
    @GetMapping("/list")
    public Result<List<OrderVO>> list(@RequestParam Integer type,
                                      @RequestParam Long cityId,
                                      @RequestParam(defaultValue = "1") int page,
                                      HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        return Result.success(orderService.getList(riderId, cityId, type, page));
    }

    /** 订单详情 */
    @GetMapping("/detail")
    public Result<OrderVO> detail(@RequestParam Long orderId, HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        return Result.success(orderService.getDetail(riderId, orderId));
    }

    /** 拒单 */
    @PostMapping("/refuse")
    public Result<Void> refuse(@RequestBody OrderIdCityReq req, HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        orderService.refuse(riderId, req.getCityId(), req.getOrderId());
        return Result.success();
    }

    /** 抢单 */
    @PostMapping("/grap")
    public Result<Void> grap(@RequestBody OrderIdCityReq req, HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        orderService.grap(riderId, req.getCityId(), req.getOrderId());
        return Result.success();
    }

    /** 开始服务(取件),输入完成码 */
    @PostMapping("/start")
    public Result<Void> start(@RequestBody OrderStartReq req, HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        orderService.start(riderId, req.getOrderId(), req.getCode());
        return Result.success();
    }

    /** 完成订单,上传照片 */
    @PostMapping("/complete")
    public Result<Void> complete(@RequestBody OrderCompleteReq req, HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        orderService.complete(riderId, req.getOrderId(), req.getThumbs());
        return Result.success();
    }
}