Browse Source

feat: update

igb 4 months ago
parent
commit
09a340865b

+ 30 - 11
app/Distributor/Controllers/DistMessageController.php

@@ -14,15 +14,24 @@ use Dcat\Admin\Show;
 
 class DistMessageController extends AdminController
 {
+    public function title()
+    {
+        return admin_trans('admin.messages');
+
+    }
     /**
      * page index
      */
     public function index(Content $content)
     {
+
+
+
         return $content
-            ->header('列表')
-            ->description('全部')
-            ->breadcrumb(['text'=>'列表','url'=>''])
+
+            ->header(admin_trans( 'admin.messages'))
+            ->description(admin_trans('admin.all'))
+            ->breadcrumb(['text'=>'list','url'=>''])
             ->body($this->grid());
     }
 
@@ -36,24 +45,30 @@ class DistMessageController extends AdminController
 
         return Grid::make(new DistCustomMessage(), function (Grid $grid)  {
 
+
 //            $grid->setActionClass(Grid\Displayers\Actions::class);
 //            // 添加“查看”按钮
 //            $grid->actions(function (Grid\Displayers\Actions $actions) {
 //                $actions->append('<a href="/dist/messages/' . $actions->row->id . '" class="btn btn-sm btn-primary">View Detail</a>');
 //            });
 
-            $grid->column('created_at','time');
+            $grid->column('created_at',admin_trans_field('time'));
+
+            $grid->column('is_read', admin_trans_field('is_read'))->display(function ($isRead) {
+                $text = $isRead == 1 ? admin_trans_label('read') : "<strong>".admin_trans_label('unread')."</strong>";
+                return $text;
+            });
 
-            $grid->column('title','message_title')->display(function ($title) {
+            $grid->column('title',admin_trans_field('message_title'))->display(function ($title) {
                 $isRead = $this->is_read;
                 $style = $isRead == 0 ? 'font-weight: bold;' : '';
                 $label = $isRead == 0 ? ' (Unread) ' : '';
-                return "<span style='{$style}'>{$title} {$label}</span>";
+                return "<span style='{$style}'>{$title}</span>";
             });
             $grid->column('content');
-            $grid->column('is_read');
 
-            $grid->column('custom_column', admin_trans_field('action'))->display(function () {
+
+            $grid->column('custom_column', admin_trans('admin.action'))->display(function () {
                 return view('admin.grid.actions-view', ['id' => $this->id,'text'=>admin_trans('admin.view')]);
             });
 
@@ -74,12 +89,16 @@ class DistMessageController extends AdminController
      */
     protected function detail($id)
     {
+
+        if(!DistCustomMessage::canViewMessage($id))
+        {
+            abort('403');
+        };
+
         $this->markAsRead($id);
         return Show::make($id, new DistMessage(), function (Show $show) {
             //$show->field('id');
-
-            //$show->field('sender_id');
-            $show->field('created_at');
+            $show->field('created_at',admin_trans_field('time'));
             $show->field('title');
             $show->field('content');
             // Disable all toolbar actions and buttons

+ 3 - 1
app/Distributor/Controllers/HomeController.php

@@ -14,11 +14,13 @@ use Dcat\Admin\Layout\Row;
 
 class HomeController extends Controller
 {
+
     public function index(Content $content)
     {
         return $content
+            ->title(admin_trans('site_name'))
             ->view('distributor.layouts.content')
-            ->header(' ')
+            ->header(admin_trans( 'admin.home'))
             ->body(function (Row $row) {
                 $row->column(12, function (Column $column) {
                    $column->row(Dashboard::title());

+ 15 - 5
app/Distributor/Metrics/DistMessage.php

@@ -4,10 +4,11 @@ namespace App\Distributor\Metrics;
 
 use Dcat\Admin\Widgets\Metrics\Round;
 use Illuminate\Http\Request;
-use App\Models\DistMessage as DistMessageModel;
+use App\Distributor\Repositories\DistCustomMessage;
 
 class DistMessage extends Round
 {
+    protected $limit = 10;
     /**
      * 初始化卡片内容
      */
@@ -17,7 +18,7 @@ class DistMessage extends Round
 
         // 卡片内容宽度
         $this->contentWidth(12, 0);
-        $this->title('Messages');
+        $this->title(admin_trans( 'admin.messages')); // 标题'Messages');
 
     }
 
@@ -31,7 +32,10 @@ class DistMessage extends Round
     public function handle(Request $request)
     {
         // 获取最新的10条消息
-        $messages = DistMessageModel::latest()->take(10)->get();
+
+
+        $messages = (new DistCustomMessage())->getRecentMessages($this->limit);
+
 
 
         // 卡片内容
@@ -49,15 +53,21 @@ class DistMessage extends Round
     {
         $content = '';
 
+
+
         foreach ($messages as $message) {
+
+            $isReadText = $message['is_read'] == 0 ? admin_trans_label('unread') : '';
+            $isReadClass = $message['is_read'] == 0 ? 'font-weight-bold' : '';
+
             $content .= <<<HTML
 <div class="chart-info d-flex justify-content-between mb-1">
     <div class="series-info d-flex align-items-center">
-        . <a href="/dist/messages/{$message->id}"><span class="text-bold-600 ml-50">{$message->title} ({$message->created_at->toDateString()})</span>
+        <i class="fa fa-fw feather icon-message-circle"></i> <a href="/dist/messages/{$message['id']}"><span class="text-bold-600 ml-50 {$isReadClass}">{$message['title']}  ({$message['created_at']->toDateString()})</span>
         </a>
     </div>
     <div class="product-result">
-        <span>{$message->status}</span>
+        <span>{$isReadText}</span>
     </div>
 </div>
 HTML;

+ 46 - 0
app/Distributor/Repositories/DistCustomMessage.php

@@ -66,6 +66,25 @@ class DistCustomMessage extends Repository
         );
     }
 
+    /**
+     * 获取最近 N 条消息
+     *
+     * @param int $limit
+     * @return \Illuminate\Support\Collection
+     */
+    public function getRecentMessages($limit = 10)
+    {
+        // 获取当前登录用户的 ID
+        $userId = getDistributorId();
+
+        // 使用 getMessagesForUser 方法获取消息列表
+        $messages = $this->getMessagesForUser($userId);
+
+        // 获取最近 N 条消息
+        $recentMessages = $messages->take($limit);
+
+        return $recentMessages;
+    }
 
 
     public function getMessagesForUser($userId)
@@ -97,5 +116,32 @@ class DistCustomMessage extends Repository
             });
     }
 
+    /**
+     * 判断用户是否有权限查看指定 ID 的消息
+     *
+     * @param int $messageId
+     * @return bool
+     */
+    public static function canViewMessage($messageId)
+    {
+
+        // 获取当前登录用户的 ID
+        $userId = getDistributorId();
+
+        // 检查消息是否存在且属于当前用户
+        $message = DistMessageModel::where('id', $messageId)
+            ->where(function ($query) use ($userId) {
+                $query->where('target_type', 'all')
+                    ->orWhere(function ($query) use ($userId) {
+                        $query->where('target_type', 'users')
+                            ->whereJsonContains('target_ids', $userId);
+                    });
+            })
+            ->first();
+
+
+
+        return $message !== null;
+    }
 
 }

+ 1 - 0
lang/en/admin.php

@@ -250,4 +250,5 @@ return [
     'view_website'  => 'View Online Site',
     'banner_list' => 'Banner List',
     'landing_page' => 'Landing Page',
+    'messages' => 'Messages',
 ];

+ 1 - 0
lang/zh_CN/admin.php

@@ -257,4 +257,5 @@ return [
     'view_website'  => '查看在线网站',
     'banner_list' => 'banner列表',
     'landing_page' => '独立页',
+    'messages' => '消息',
 ];

+ 4 - 0
lang/zh_CN/global.php

@@ -97,6 +97,8 @@ return [
         'target_ids'            => '接收用户',
         'message_title'         => '消息标题',
         'video_category' => '视频分类',
+        'is_read' => '是否已读',
+        'time' => '时间',
     ],
     'labels' => [
         'list'         => '列表',
@@ -182,6 +184,8 @@ return [
         'no_selected_data'       => '未选择数据',
         'select_distributor'     => '分销商',
         'confirm_process_inquiry' => '确认处理询价?',
+        'read'                  => '已读',
+        'unread'                => '未读',
     ],
     'options' => [
         //

+ 1 - 0
lang/zh_CN/menu.php

@@ -51,5 +51,6 @@ return [
         'distributor' => '分销商',
         'appearance_list' => '外观列表',
         'landing_page' => '独立页',
+        'messages' => '消息',
     ],
 ];