xiaogang 4 лет назад
Родитель
Сommit
c818d66211

+ 70 - 0
app/Admin/Actions/Chat/ChatAction.php

xqd
@@ -0,0 +1,70 @@
+<?php
+
+
+namespace App\Admin\Actions\Chat;
+
+
+use App\admin\Actions\Users\UsersInfo;
+use Dcat\Admin\Grid\RowAction;
+use Dcat\Admin\Widgets\Modal;
+
+class ChatAction extends RowAction
+{
+    protected $title = '聊天记录';
+
+    protected $model;
+
+    public function __construct(string $model = null)
+    {
+        $this->model = $model;
+    }
+
+    /**
+     * 设置确认弹窗信息,如果返回空值,则不会弹出弹窗
+     *
+     * 允许返回字符串或数组类型
+     *
+     * @return array|string|void
+     */
+    public function confirm()
+    {
+
+    }
+
+    /**
+     * 处理请求
+     *
+     * @param Request $request
+     *
+     * @return \Dcat\Admin\Actions\Response
+     */
+    public function handle(Request $request)
+    {
+        return $this->response()
+            ->success('Processed successfully: '.$this->getKey())
+            ->redirect('/');
+    }
+
+    /**
+     * 设置要POST到接口的数据
+     *
+     * @return array
+     */
+    public function parameters()
+    {
+        return [];
+    }
+
+    public function render()
+    {
+        $form = ChatLog::make();
+        return Modal::make()
+            ->lg()
+            ->title($this->title)
+            ->body($form)
+            ->button('<i class="feather icon-list"></i> '.$this->title);
+    }
+}
+{
+
+}

+ 27 - 0
app/Admin/Actions/Chat/ChatLog.php

xqd
@@ -0,0 +1,27 @@
+<?php
+namespace App\Admin\Actions\Chat;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Grid\LazyRenderable;
+
+class ChatLog extends LazyRenderable
+{
+
+    public function grid(): Grid
+    {
+        return Grid::make(new \App\Models\UserInfoModel(), function (Grid $grid) {
+            $grid->column('user_id', 'ID')->sortable();
+            $grid->column('nickname');
+            $grid->column('created_at');
+            $grid->column('updated_at');
+
+            $grid->quickSearch(['user_id', 'nickname']);
+
+            $grid->paginate(10);
+            $grid->disableActions();
+
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->like('nickname','昵称')->width(4);
+            });
+        });
+    }
+}

+ 22 - 3
app/Admin/Controllers/ChatListController.php

xqd xqd xqd
@@ -2,6 +2,8 @@
 
 namespace App\Admin\Controllers;
 
+use App\Admin\Actions\Chat\ChatAction;
+use App\Admin\Actions\Chat\ChatLog;
 use App\Models\ChatList;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
@@ -19,10 +21,16 @@ class ChatListController extends AdminController
     {
         $grid = new Grid(new ChatList());
         $grid->model()->with(['user','user_info','to_user','to_user_info'])->orderBy('id','desc');
-
         $grid->column('id')->sortable();
-        $grid->column('user_id');
-        $grid->column('to_user_id');
+        $grid->combine('user', ['user_info.avatar', 'user_info.nickname'],'发消息用户');
+        $grid->combine('to_user', ['to_user_info.avatar', 'to_user_info.nickname'],'接收消息用户');
+
+        $grid->column('user_info.avatar','头像')->image('',50);
+        $grid->column('user_info.nickname','昵称');
+
+        $grid->column('to_user_info.avatar','头像')->image('',50);
+        $grid->column('to_user_info.nickname','昵称');
+
         $grid->column('last_msg');
         $grid->column('last_time');
         $grid->column('atime');
@@ -32,6 +40,17 @@ class ChatListController extends AdminController
             $filter->equal('id');
 
         });
+        //批量操作
+        $grid->batchActions(function (Grid\Tools\BatchActions $batch) {
+            $batch->disableDelete();
+        });
+        //操作管理
+        $grid->actions(function (Grid\Displayers\Actions $actions) {
+            $actions->disableView();
+            $actions->disableEdit();
+
+            $actions->append(new ChatAction());
+        });
         return $grid;
     }
 

+ 1 - 1
app/Services/NoticeService.php

xqd
@@ -54,7 +54,7 @@ class NoticeService
         $query = DynamicZanModel::query();
         if($param['type']==1){
             //他赞了我
-            $query = $query->with(['dynamic'])->whereHas('dynamic',function ($query)use($param){
+            $query = $query->with(['dynamic','dynamic.user_info'])->whereHas('dynamic',function ($query)use($param){
                 $query->where('user_id',$param['user_id'])->select();
             });