lip hai 3 meses
pai
achega
206d175278

+ 2 - 2
app/admin/command/UserQueue.php

@@ -77,8 +77,8 @@ class UserQueue extends Command
                 $friend->friend_user_id = $cs_uid;
                 $friend->save();
                 $chat_identify = $cs_uid . '-' . $user_id;
-                Message::where(['from_user' => $user_id, 'to_user' => $robot_id])->update(['to_user' => $cs_uid, 'chat_identify' => $chat_identify]);
-                Message::where(['from_user' => $robot_id, 'to_user' => $user_id])->update(['from_user' => $cs_uid, 'chat_identify' => $chat_identify]);
+                Message::where(['from_user' => $user_id, 'to_user' => $robot_id])->update(['to_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
+                Message::where(['from_user' => $robot_id, 'to_user' => $user_id])->update(['from_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
             }
 
             KefuWork::addNum($admin_id, 'chat_num');//客服接线次数更新

+ 20 - 0
app/admin/command/UserTimeout.php

@@ -8,6 +8,7 @@ use app\admin\model\User;
 use app\admin\model\Config;
 use app\admin\model\KefuTime;
 use think\facade\Db;
+use GatewayClient\Gateway;
 
 /**
  * Worker 命令行类
@@ -22,6 +23,11 @@ class UserTimeout extends Command
 
     public function execute(Input $input, Output $output)
     {
+
+        //检测离线用户状态
+        $this->checkOfflineUser();
+
+
         $config = Config::whereIn('field',['kefu_timeout_reminder','kefu_timeout_warning','user_timeouted_warning', 'user_timeout_warning','user_inline_finished'])->column('val','field');
        
         $user_timeout_warning = 0;
@@ -111,6 +117,20 @@ class UserTimeout extends Command
 
     }
 
+    //检测离线用户,更新在线状态
+    public function checkOfflineUser()
+    {
+        Gateway::$registerAddress = config('gateway.registerAddress');
+        $onlineList=Gateway::getAllUidList();
+        $userOnlineList = User::where('is_online', '>', 0)->column('user_id');
+        
+        foreach($userOnlineList as $user_id) {
+            if(!isset($onlineList[$user_id])) {
+                User::where('user_id', $user_id)->update(['is_online' => 0]);
+            }
+        }
+    }
+
     /**
      * 发送提醒通知
      */

+ 5 - 5
app/admin/controller/Admin.php

@@ -30,19 +30,19 @@ class Admin extends BaseController
             $params = $this->request->param();
             $query = new AdminModel();
             if (!empty($params['username'])) {
-                $query->where('username', 'like', "%{$params['username']}%");
+                $query = $query->where('username', 'like', "%{$params['username']}%");
             }
             if (!empty($params['phone'])) {
-                $query->where('phone', 'like', "%{$params['phone']}%");
+                $query = $query->where('phone', 'like', "%{$params['phone']}%");
             }
             if (isset($params['is_kefu']) && $params['is_kefu'] != '') {
-                $query->where('is_kefu', $params['is_kefu']);
+                $query = $query->where('is_kefu', $params['is_kefu']); 
             }
             if (!empty($params['role_id'])) {
-                $query->where('role_id', $params['role_id']);
+                $query = $query->where('role_id', $params['role_id']);
             }
             if (!empty($params['department_id'])) {
-                $query->where('department_id', $params['department_id']);
+                $query = $query->where('department_id', $params['department_id']);
             }
             
             $page = isset($params['page']) ? intval($params['page']) : 1;

+ 4 - 4
app/admin/controller/Complaint.php

@@ -32,16 +32,16 @@ class Complaint extends BaseController
                     ->whereOr('admin.phone', 'like', '%'.$params['keyword'].'%');
             }
             if (!empty($params['complaint_item_id'])) {
-                $query->where('complaint.complaint_item_id', $params['complaint_item_id']);
+                $query = $query->where('complaint.complaint_item_id', $params['complaint_item_id']);
             }
             if (isset($params['status'])) {
-                $query->where('complaint.status', $params['status']);
+                $query = $query->where('complaint.status', $params['status']);
             }
             if (!empty($params['start_time'])) {
-                $query->where('complaint.created_at', '>=', $params['start_time'] . ' 00:00:00');
+                $query = $query->where('complaint.created_at', '>=', $params['start_time'] . ' 00:00:00');
             }
             if (!empty($params['end_time'])) {
-                $query->where('complaint.created_at', '<=', $params['end_time'] . ' 23:59:59');
+                $query = $query->where('complaint.created_at', '<=', $params['end_time'] . ' 23:59:59');
             }
             $count = $query->count();
             $list = $query->with(['complaint_item', 'user', 'operation'])

+ 3 - 0
app/admin/controller/Config.php

@@ -25,6 +25,9 @@ class Config extends BaseController
             if (isset($select[$item['field']])) {
                 $item['select'] = $select[$item['field']];
             }
+            if ($item['type'] == 'rich_text') {
+                $item['val'] = $item['val'] ? json_decode($item['val'], true) : '';
+            }
         }
         return $this->success(['count' => count($list), 'list' => $list]);
     }

+ 4 - 4
app/admin/controller/Expression.php

@@ -26,16 +26,16 @@ class Expression extends BaseController
             $language_code = $params['language_code'] ?? $this->lang;
 
             $query = ExpressionLanguages::alias('expression_languages')->join('admin', 'admin.id = expression_languages.operation_id', 'left');
-            $query->where('expression_languages.language_code', $language_code);
+            $query = $query->where('expression_languages.language_code', $language_code);
 
             if (!empty($params['name'])) {
-                $query->where('expression_languages.name', 'like', "%{$params['name']}%");
+                $query = $query->where('expression_languages.name', 'like', "%{$params['name']}%");
             }
             if (!empty($params['category_id'])) {
-                $query->where('expression_languages.category_id', $params['category_id']);
+                $query = $query->where('expression_languages.category_id', $params['category_id']);
             }
             if (!empty($params['operation_name'])) {
-                $query->where('admin.nickname', 'like', "%{$params['operation_name']}%");
+                $query = $query->where('admin.nickname', 'like', "%{$params['operation_name']}%");
             }
             
 

+ 1 - 1
app/admin/controller/ExpressionCategory.php

@@ -27,7 +27,7 @@ class ExpressionCategory extends BaseController
 
             $query = ExpressionCategoryLanguages::where('language_code', $language_code);            
             if (isset($params['status'])) {
-                $query->where('status', $params['status']);
+                $query = $query->where('status', $params['status']);
             }
             $count = $query->count();
             $list = $query->where('language_code', $language_code)

+ 3 - 3
app/admin/controller/IpConfig.php

@@ -81,13 +81,13 @@ class IpConfig extends BaseController
             $limit = $params['limit'] ?? 15;
             $query = IpConfigModel::alias('ip_config')->join('admin', 'admin.id = ip_config.operation_id', 'left');
             if (!empty($params['keyword'])) {
-                $query->where('ip_config.ip', 'like', '%'.$params['keyword'].'%');
+                $query = $query->where('ip_config.ip', 'like', '%'.$params['keyword'].'%');
             }
             if (!empty($params['status'])) {
-                $query->where('ip_config.status', $params['status']);
+                $query = $query->where('ip_config.status', $params['status']);
             }
             if (!empty($params['type'])) {
-                $query->where('ip_config.type', $params['type']);
+                $query = $query->where('ip_config.type', $params['type']);
             }
             $count = $query->count();
             $list = $query

+ 7 - 8
app/admin/controller/Kefu.php

@@ -87,13 +87,13 @@ class Kefu extends BaseController
                         ->where('user.from', 0);
 
             if (isset($params['is_online'])) {
-                $query->where('user.is_online', $params['is_online']);
+                $query = $query->where('user.is_online', $params['is_online']);
             }
             if (!empty($params['start_time'])) {
-                $query->where('kefu_work.created_at', '>=', $params['start_time'].' 00:00:00');
+                $query = $query->where('kefu_work.created_at', '>=', $params['start_time'].' 00:00:00');
             }
             if (!empty($params['end_time'])) {
-                $query->where('kefu_work.created_at', '<=', $params['end_time'].' 23:59:59');
+                $query = $query->where('kefu_work.created_at', '<=', $params['end_time'].' 23:59:59');
             }
 
             $count = $query->count();
@@ -207,8 +207,8 @@ class Kefu extends BaseController
                 $friend->friend_user_id = $cs_uid;
                 $friend->save();
                 $chat_identify = $cs_uid . '-' . $user_id;
-                Message::where(['from_user' => $user_id, 'to_user' => $robot_id])->update(['to_user' => $cs_uid, 'chat_identify' => $chat_identify]);
-                Message::where(['from_user' => $robot_id, 'to_user' => $user_id])->update(['from_user' => $cs_uid, 'chat_identify' => $chat_identify]);
+                Message::where(['from_user' => $user_id, 'to_user' => $robot_id])->update(['to_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
+                Message::where(['from_user' => $robot_id, 'to_user' => $user_id])->update(['from_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
             }
 
             KefuWork::addNum($this->admin_id, 'chat_num');//客服接线次数更新
@@ -250,14 +250,13 @@ class Kefu extends BaseController
                 $old_cs_uid = $friend->friend_user_id;
                 $friend->friend_user_id = $cs_uid;
                 $friend->save();
-
                 
                 //更新客服接线数量
                 User::where('user_id', $old_cs_uid)->update(['chat_num'=>Db::raw('chat_num-1')]);
                 
                 $chat_identify = $cs_uid . '-' . $user_id;
-                Message::where(['from_user' => $user_id, 'to_user' => $old_cs_uid])->update(['to_user' => $cs_uid, 'chat_identify' => $chat_identify]);
-                Message::where(['from_user' => $old_cs_uid, 'to_user' => $user_id])->update(['from_user' => $cs_uid, 'chat_identify' => $chat_identify]);
+                Message::where(['from_user' => $user_id, 'to_user' => $old_cs_uid])->update(['to_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
+                Message::where(['from_user' => $old_cs_uid, 'to_user' => $user_id])->update(['from_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
                 KefuTime::endData($old_cs_uid, 3); //结束接线时间
             }
 

+ 1 - 1
app/admin/controller/Keyword.php

@@ -29,7 +29,7 @@ class Keyword extends BaseController
 
             $query = KeywordLanguages::where('language_code', $language_code);   
             if (!empty($params['name'])) {
-                $query->where('name', 'like', '%'.$params['name'].'%');
+                $query = $query->where('name', 'like', '%'.$params['name'].'%');
             }
             $field = !empty($params['field']) ? $params['field'] : 'weight';
             $order = !empty($params['order']) ? $params['order'] : 'desc';

+ 6 - 6
app/admin/controller/Question.php

@@ -31,25 +31,25 @@ class Question extends BaseController
                         ->join('keyword_languages', 'keyword_languages.id = question_languages.keyword_id', 'left');
                         
             if (!empty($language_code)) {
-                $query->where('question_languages.language_code', $language_code);
+                $query = $query->where('question_languages.language_code', $language_code);
             }
             if (!empty($question)) {
-                $query->where(function ($query) use ($question) {
+                $query = $query->where(function ($query) use ($question) {
                     $query->where('question_languages.question', 'like', "%{$question}%")
                         ->whereOr('keyword_languages.name', 'like', "%{$question}%");
                 });
             }
             if (!empty($params['category_id'])) {
-                $query->where('question_languages.category_id', $params['category_id']);
+                $query = $query->where('question_languages.category_id', $params['category_id']);
             }
             if (!empty($params['question_type'])) {
-                $query->where('question_languages.question_type', $params['question_type']);
+                $query = $query->where('question_languages.question_type', $params['question_type']);
             }
             if (!empty($params['start_time'])) {
-                $query->where('question_languages.created_at', '>=', $params['start_time'].' 00:00:00');
+                $query = $query->where('question_languages.created_at', '>=', $params['start_time'].' 00:00:00');
             }
             if (!empty($params['end_time'])) {
-                $query->where('question_languages.created_at', '<=', $params['end_time'].' 23:59:59');
+                $query = $query->where('question_languages.created_at', '<=', $params['end_time'].' 23:59:59');
             }
 
             $count = $query->count();

+ 1 - 1
app/admin/controller/Role.php

@@ -25,7 +25,7 @@ class Role extends BaseController
             $params = $this->request->param();
             $query = new RoleModel();
             if (!empty($params['name'])) {
-                $query->where('name', 'like', '%'.$params['name'].'%');
+                $query = $query->where('name', 'like', '%'.$params['name'].'%');
             }
             $page = $params['page'] ?? 1;
             $limit = $params['limit'] ?? 15;