Pārlūkot izejas kodu

feat(message): 添加消息模板关联并优化通知查询

- 在 MessageNotificationsModel 中新增与 MessageTemplatesModel 的关联关系
- 修改 getUserNotifications 方法以包含模板数据的预加载
- 更新未读数量统计逻辑以使用新的模型类
- 创建 MessageTemplatesModel 并定义其基础配置选项
runphp 5 mēneši atpakaļ
vecāks
revīzija
9d54b4c1f0

+ 6 - 0
src/Model/MessageNotificationsModel.php

@@ -4,6 +4,7 @@ namespace SixShop\Message\Model;
 
 use SixShop\Message\Enum\NotificationsTypeEnum;
 use think\Model;
+use think\model\relation\BelongsTo;
 
 class MessageNotificationsModel extends Model
 {
@@ -17,4 +18,9 @@ class MessageNotificationsModel extends Model
             ]
         ];
     }
+
+    public function template():BelongsTo
+    {
+        return $this->belongsTo(MessageTemplatesModel::class, 'template_code', 'code');
+    }
 }

+ 15 - 0
src/Model/MessageTemplatesModel.php

@@ -0,0 +1,15 @@
+<?php
+declare(strict_types=1);
+namespace SixShop\Message\Model;
+
+use think\Model;
+
+class MessageTemplatesModel extends  Model
+{
+    protected function getOptions(): array
+    {
+        return [
+            'name' => 'message_templates',
+        ];
+    }
+}

+ 3 - 2
src/Model/NotificationModel.php

@@ -80,7 +80,8 @@ class NotificationModel
      */
     public function getUserNotifications(int $userId, array $params = [], int $page = 1, int $limit = 10)
     {
-        $query = NotificationEntity::where(function ($query) use ($userId) {
+        $query = MessageNotificationsModel::with(['template'])
+            ->where(function ($query) use ($userId) {
             $query->where('user_id', $userId)
                 ->whereOr('user_id', 0); // 包括全局通知
         });
@@ -105,7 +106,7 @@ class NotificationModel
             ->toArray();
         
         // 获取未读数量
-        $unreadCount = NotificationEntity::where(function ($query) use ($userId) {
+        $unreadCount = MessageNotificationsModel::where(function ($query) use ($userId) {
             $query->where('user_id', $userId)
                 ->whereOr('user_id', 0);
         })->where('is_read', 0)->count();