Jelajahi Sumber

feat(message): 新增消息列表接口及权限控制

- 在API路由中新增消息列表资源路由,支持index和read操作
- 添加MacroPageMiddleware中间件以增强权限验证
- 实现MessageController控制器,提供消息分页查询和标记已读功能
- 扩展MessageNotificationsEntity实体,增加对admin_id参数的支持
-修正Admin模块中用户ID字段为adminID以适配后台查询逻辑
runphp 4 bulan lalu
induk
melakukan
30dc988b1e

+ 8 - 1
route/api.php

@@ -5,8 +5,10 @@ use SixShop\Message\Controller\Api\{
     AnnouncementController,
     NotificationController,
     PrivateMessageController,
-    MessageSettingController
+    MessageSettingController,
+    MessageController,
 };
+use SixShop\System\Middleware\MacroPageMiddleware;
 use think\facade\Route;
 
 // API路由
@@ -67,3 +69,8 @@ Route::group('setting', function () {
     // 更新用户消息设置
     Route::post('update', [MessageSettingController::class, 'updateSetting']);
 })->middleware(['auth']);
+
+// 获取消息列表
+Route::resource('', MessageController::class)
+    ->only(['index', 'read'])
+    ->middleware(['auth', MacroPageMiddleware::class]);

+ 1 - 1
src/Controller/Admin/MessageController.php

@@ -19,7 +19,7 @@ class MessageController
         $params = $request->get([
             'is_read/d' => 0,
         ]);
-        $params['user_id'] = $request->userID;
+        $params['admin_id'] = $request->adminID;
         return page_response($messageNotificationsEntity->getList($params, $request->pageAndLimit()));
     }
 

+ 33 - 0
src/Controller/Api/MessageController.php

@@ -0,0 +1,33 @@
+<?php
+declare(strict_types=1);
+namespace SixShop\Message\Controller\Api;
+
+use SixShop\Core\Request;
+use SixShop\Message\Entity\MessageNotificationsEntity;
+use think\Response;
+
+use function SixShop\Core\page_response;
+use function SixShop\Core\success_response;
+
+class MessageController
+{
+    /**
+     * 获取新消息数量
+     */
+    public function index(Request $request, MessageNotificationsEntity $messageNotificationsEntity)
+    {
+        $params = $request->get([
+            'is_read/d' => 0,
+        ]);
+        $params['user_id'] = $request->userID;
+        return page_response($messageNotificationsEntity->getList($params, $request->pageAndLimit()));
+    }
+
+    /**
+     * 标记消息为已读
+     */
+    public function read(int $id, MessageNotificationsEntity $messageNotificationsEntity):Response
+    {
+        return success_response($messageNotificationsEntity->read($id));
+    }
+}

+ 1 - 1
src/Entity/MessageNotificationsEntity.php

@@ -14,7 +14,7 @@ class MessageNotificationsEntity extends BaseEntity
 {
     public function getList(array $params, array $pageAndLimit): Paginator
     {
-        return $this->withSearch(['user_id', 'is_read'], $params)
+        return $this->withSearch(['user_id', 'is_read', 'admin_id'], $params)
             ->paginate($pageAndLimit);
     }