RiderMessageController.java 2.58 KB
package com.diligrp.rider.controller;

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

import java.util.List;
import java.util.Map;

/**
 * 骑手端消息接口
 */
@RestController
@RequestMapping("/api/rider/message")
@RequiredArgsConstructor
public class RiderMessageController {

    private final RiderMessageService messageService;

    /**
     * 获取消息列表(分页)
     *
     * @param type     消息类型:1=订单 2=系统 null=全部
     * @param page     页码
     * @param pageSize 每页数量
     */
    @GetMapping("/list")
    public Result<Map<String, Object>> list(
            @RequestParam(required = false) Integer type,
            @RequestParam(defaultValue = "1") Integer page,
            @RequestParam(defaultValue = "20") Integer pageSize,
            HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        return Result.success(messageService.listByRider(riderId, type, page, pageSize));
    }

    /**
     * 获取未读消息数
     */
    @GetMapping("/unread-count")
    public Result<Map<String, Integer>> unreadCount(HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        return Result.success(messageService.getUnreadCount(riderId));
    }

    /**
     * 标记消息为已读
     *
     * @param messageId 消息ID
     */
    @PostMapping("/read")
    public Result<Void> markRead(@RequestParam Long messageId, HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        messageService.markRead(riderId, messageId);
        return Result.success();
    }

    /**
     * 批量标记已读
     *
     * @param messageIds 消息ID列表
     */
    @PostMapping("/read-batch")
    public Result<Void> markReadBatch(@RequestBody List<Long> messageIds, HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        messageService.markReadBatch(riderId, messageIds);
        return Result.success();
    }

    /**
     * 全部标记已读
     *
     * @param type 消息类型:1=订单 2=系统 null=全部
     */
    @PostMapping("/read-all")
    public Result<Void> markAllRead(@RequestParam(required = false) Integer type, HttpServletRequest request) {
        Long riderId = (Long) request.getAttribute("riderId");
        messageService.markAllRead(riderId, type);
        return Result.success();
    }
}