lip 3 luni în urmă
părinte
comite
950d3d64ac

+ 1 - 0
app/admin/command/UserQueue.php

@@ -66,6 +66,7 @@ class UserQueue extends Command
             $user->cs_uid = $cs_uid;
             $user->cs_uid = $cs_uid;
             $user->service_status = 1;
             $user->service_status = 1;
             $user->service_start = time();
             $user->service_start = time();
+            $user->timeout_type = 0;
             $user->save();
             $user->save();
             
             
             //更新客服接线数量
             //更新客服接线数量

+ 7 - 1
app/admin/command/UserTimeout.php

@@ -36,6 +36,7 @@ class UserTimeout extends Command
             //用户等待即将超时预警
             //用户等待即将超时预警
             $list = User::where('status', 1)->where('is_online', 1)->where('service_status', 1)
             $list = User::where('status', 1)->where('is_online', 1)->where('service_status', 1)
                     ->where('service_start', '<=', time() - $user_timeout_warning)
                     ->where('service_start', '<=', time() - $user_timeout_warning)
+                    ->where('timeout_type', 0)
                     ->select()
                     ->select()
                     ->toArray();
                     ->toArray();
             $this->sendMessage($list, 1);
             $this->sendMessage($list, 1);
@@ -52,6 +53,7 @@ class UserTimeout extends Command
                             $query->where('service_start', '>', time() - $user_timeout_warning);
                             $query->where('service_start', '>', time() - $user_timeout_warning);
                         }
                         }
                     })
                     })
+                    ->where('timeout_type', '<',2)
                     ->select()
                     ->select()
                     ->toArray();
                     ->toArray();
             $this->sendMessage($list, 2);
             $this->sendMessage($list, 2);
@@ -64,6 +66,7 @@ class UserTimeout extends Command
             //用户服务中-即将超时预警时间
             //用户服务中-即将超时预警时间
             $list = User::where('status', 1)->where('is_online', 1)->where('service_status', 2)
             $list = User::where('status', 1)->where('is_online', 1)->where('service_status', 2)
                     ->where('service_start', '<=', time() - $kefu_timeout_warning)
                     ->where('service_start', '<=', time() - $kefu_timeout_warning)
+                    ->where('timeout_type', '<',3)
                     ->select()
                     ->select()
                     ->toArray();
                     ->toArray();
             $this->sendMessage($list, 3);
             $this->sendMessage($list, 3);
@@ -80,6 +83,7 @@ class UserTimeout extends Command
                             $query->where('service_start', '>', time() - $kefu_timeout_warning);
                             $query->where('service_start', '>', time() - $kefu_timeout_warning);
                         }
                         }
                     })
                     })
+                    ->where('timeout_type', '<',4)
                     ->select()
                     ->select()
                     ->toArray();
                     ->toArray();
             $output->writeln('用户服务中-已超时提醒'.count($list));
             $output->writeln('用户服务中-已超时提醒'.count($list));
@@ -100,7 +104,7 @@ class UserTimeout extends Command
                 try {
                 try {
                     Db::startTrans();
                     Db::startTrans();
                     //用户转给机器人客服
                     //用户转给机器人客服
-                    User::where('user_id', $user['user_id'])->update(['service_status' => 0, 'service_start' => 0, 'cs_uid'=>$cs_uid]);
+                    User::where('user_id', $user['user_id'])->update(['service_status' => 0, 'service_start' => 0, 'timeout_type' => 0, 'cs_uid'=>$cs_uid]);
                     KefuTime::endData($user['uid'], 3, $user['cs_uid']); //结束接线时间
                     KefuTime::endData($user['uid'], 3, $user['cs_uid']); //结束接线时间
 
 
                     Db::commit();
                     Db::commit();
@@ -162,6 +166,8 @@ class UserTimeout extends Command
     public function sendMessage($list, $type)
     public function sendMessage($list, $type)
     {
     {
         foreach($list as $user) {
         foreach($list as $user) {
+            //更新用户超时提醒的状态
+            User::where('user_id', $user['user_id'])->update(['timeout_type' => $type]);
             //通知客服已结束
             //通知客服已结束
             wsSendMsg($user['cs_uid'],'timeout',['user_id'=>$user['user_id'], 'realname'=>$user['realname'], 'type'=>$type]);
             wsSendMsg($user['cs_uid'],'timeout',['user_id'=>$user['user_id'], 'realname'=>$user['realname'], 'type'=>$type]);
         }
         }

+ 9 - 6
app/admin/controller/Kefu.php

@@ -41,18 +41,18 @@ class Kefu extends BaseController
             $params = $this->request->param();
             $params = $this->request->param();
             $page = $params['page'] ?? 1;
             $page = $params['page'] ?? 1;
             $limit = $params['limit'] ?? 15;
             $limit = $params['limit'] ?? 15;
-            $query = KefuWork::alias('kefu_work')->join('admin', 'kefu_work.admin_id = admin.id', 'left')
+            $query = KefuWork::alias('kefu_work')
                         ->join('user', 'kefu_work.admin_id = user.uid', 'left')
                         ->join('user', 'kefu_work.admin_id = user.uid', 'left')
-                        ->where('kefu_work.created_at', '>=', date('Y-m-d 00:00:00'));
+                        ->where('kefu_work.created_at', '>=', date('Y-m-d 00:00:00'))
+                        ->where('user.role', 3);
 
 
             if (isset($params['is_online']) && $params['is_online'] != '') {
             if (isset($params['is_online']) && $params['is_online'] != '') {
                 $query->where('user.is_online', $params['is_online']);
                 $query->where('user.is_online', $params['is_online']);
             }
             }
 
 
             $count = $query->count();
             $count = $query->count();
-            $list = $query->field([' kefu_work.id', 'admin.nickname','user.is_online', 'user.chat_num','kefu_work.transfer_num','kefu_work.intervention_num','kefu_work.completed_num'])
-                        ->order('user.is_online', 'desc')    
-                        ->group('kefu_work.id')
+            $list = $query->field([' kefu_work.id', 'user.realname as nickname','user.is_online', 'user.chat_num','kefu_work.transfer_num','kefu_work.intervention_num','kefu_work.completed_num','kefu_work.created_at'])
+                        ->order('user.is_online', 'desc')  
                         ->limit($limit)
                         ->limit($limit)
                         ->page($page)
                         ->page($page)
                         ->select();
                         ->select();
@@ -207,6 +207,7 @@ class Kefu extends BaseController
             $user->cs_uid = $cs_uid;
             $user->cs_uid = $cs_uid;
             $user->service_status = 2;
             $user->service_status = 2;
             $user->service_start = time();
             $user->service_start = time();
+            $user->timeout_type = 0;
             $user->save();
             $user->save();
 
 
             //更新客服接线数量
             //更新客服接线数量
@@ -252,6 +253,7 @@ class Kefu extends BaseController
             $user->cs_uid = $cs_uid;
             $user->cs_uid = $cs_uid;
             $user->service_status = 1;
             $user->service_status = 1;
             $user->service_start = time();
             $user->service_start = time();
+            $user->timeout_type = 0;
             $user->save();
             $user->save();
             //更新客服接线数量
             //更新客服接线数量
             User::where('user_id', $cs_uid)->update(['chat_num'=>Db::raw('chat_num+1')]);
             User::where('user_id', $cs_uid)->update(['chat_num'=>Db::raw('chat_num+1')]);
@@ -331,6 +333,7 @@ class Kefu extends BaseController
                 //转成机器人聊天
                 //转成机器人聊天
                 $user->service_status = -1;
                 $user->service_status = -1;
                 $user->service_time = 0;
                 $user->service_time = 0;
+                $user->timeout_type = 0;
                 $user->cs_uid = getAutoCsUid();//获取机器人ID
                 $user->cs_uid = getAutoCsUid();//获取机器人ID
                 $user->save();
                 $user->save();
 
 
@@ -360,7 +363,7 @@ class Kefu extends BaseController
                 if ($user_open_comment == 1 ) {
                 if ($user_open_comment == 1 ) {
                     $param = [
                     $param = [
                         'id' => \utils\Str::getUuid(),
                         'id' => \utils\Str::getUuid(),
-                        'type' => 'text',
+                        'type' => 'score',
                         'status' => 'going',
                         'status' => 'going',
                         'sendTime' => time() * 1000,
                         'sendTime' => time() * 1000,
                         'toContactId' => $user_id,
                         'toContactId' => $user_id,

+ 1 - 1
app/admin/model/User.php

@@ -89,7 +89,7 @@ class User extends BaseModel
         $list = User::where('cs_uid', $kefu_user_id)->select()->toArray();
         $list = User::where('cs_uid', $kefu_user_id)->select()->toArray();
         foreach($list as $item) {
         foreach($list as $item) {
             //更新用户会话状态
             //更新用户会话状态
-            User::where('user_id', $item['user_id'])->update(['cs_uid' => $cs_uid, 'service_status' => 0, 'service_start' => time()]);
+            User::where('user_id', $item['user_id'])->update(['cs_uid' => $cs_uid, 'service_status' => 0, 'service_start' => time(), 'timeout_type' => 0]);
 
 
             $user_id = $item['user_id'];
             $user_id = $item['user_id'];
             $old_cs_uid = $item['cs_uid'];
             $old_cs_uid = $item['cs_uid'];

+ 1 - 0
app/enterprise/controller/Im.php

@@ -238,6 +238,7 @@ class Im extends BaseController
             if($user->service_status == -1) {
             if($user->service_status == -1) {
                 $user->service_status = 0;
                 $user->service_status = 0;
                 $user->service_start = time();
                 $user->service_start = time();
+                $user->timeout_type = 0;
                 $user->cs_uid = 0;
                 $user->cs_uid = 0;
                 $user->save();
                 $user->save();
 
 

+ 2 - 2
app/enterprise/model/User.php

@@ -24,7 +24,7 @@ class User extends BaseModel
 
 
    protected $pk = "user_id";
    protected $pk = "user_id";
    
    
-   public static $defaultField = 'user_id,realname,realname as displayName,account,avatar,name_py,email,last_login_ip,service_status,cs_uid';
+   public static $defaultField = 'user_id,realname,realname as displayName,account,avatar,name_py,email,last_login_ip,service_status,cs_uid,timeout_type';
 
 
    protected $json = ['setting'];
    protected $json = ['setting'];
    protected $jsonAssoc = true;
    protected $jsonAssoc = true;
@@ -156,7 +156,7 @@ class User extends BaseModel
          $map[] = ['user_id','in',$userList];
          $map[] = ['user_id','in',$userList];
          $list = self::where($map)->whereOr(function ($query) use ($role) {
          $list = self::where($map)->whereOr(function ($query) use ($role) {
              if ($role > 0) {
              if ($role > 0) {
-                $query->where('role', 0)->where('service_status', 0);
+                $query->where('role', 0)->where('service_status', 0)->where('is_online', 1);
              }
              }
          })->field($field)->select();
          })->field($field)->select();
       }
       }