lip 3 月之前
父节点
当前提交
7d5f91ecba
共有 4 个文件被更改,包括 47 次插入14 次删除
  1. 11 11
      app/admin/command/OperationData.php
  2. 4 0
      app/admin/controller/Kefu.php
  3. 29 0
      app/common.php
  4. 3 3
      app/enterprise/model/User.php

+ 11 - 11
app/admin/command/OperationData.php

@@ -25,17 +25,17 @@ class OperationData extends Command
 
     public function execute(Input $input, Output $output)
     {
-        //创建机器人客服的数据
-        $autoTask=Config::autoTask();
-        if ($autoTask &&!empty($autoTask['user_id'])) {
-            $admin_id = User::getAdminId($autoTask['user_id']);
-            $exists = KefuWork::where('admin_id', $admin_id)->where("created_at", '>=', date('Y-m-d'))->find();
-            if (!$exists) {
-                KefuWork::create([
-                    'admin_id'=>$admin_id,
-                ]);
-            }
-        }
+        // //创建机器人客服的数据
+        // $autoTask=Config::autoTask();
+        // if ($autoTask &&!empty($autoTask['user_id'])) {
+        //     $admin_id = User::getAdminId($autoTask['user_id']);
+        //     $exists = KefuWork::where('admin_id', $admin_id)->where("created_at", '>=', date('Y-m-d'))->find();
+        //     if (!$exists) {
+        //         KefuWork::create([
+        //             'admin_id'=>$admin_id,
+        //         ]);
+        //     }
+        // }
         //统计前一天的接线总数
         $exists = OperationDataModel::where('type', 1)->where("date", date("Y-m-d", strtotime("-1 day")))->find();
         if (!$exists) {

+ 4 - 0
app/admin/controller/Kefu.php

@@ -100,6 +100,10 @@ class Kefu extends BaseController
                         ->select();
             foreach ($list as &$value) {
                 $value['avg_time'] = $value['service_time'] && $value['chat_num'] ? intval($value['service_time'] / $value['chat_num']) : 0; //客服平均服务时间
+                $value['online_time'] = formatSecondsToTime($value['online_time']);
+                $value['busy_time'] = formatSecondsToTime($value['busy_time']);
+                $value['chat_time'] = formatSecondsToTime($value['chat_time']);
+                $value['service_time'] = formatSecondsToTime($value['service_time']);
             }
             
         } catch (Exception $e) {

+ 29 - 0
app/common.php

@@ -59,6 +59,35 @@ function ret($code, $msg = "",$data = [],$count=0, $page=0)
     return json($ret);
 }
 
+/**
+ * 将秒数转换为 HH:MM:SS 格式的时间字符串
+ * @param int $seconds 要转换的秒数(支持正数/0,负数会转为0)
+ * @param bool $padZero 是否补零(默认true,确保小时/分/秒都是两位)
+ * @return string 格式化后的时间,如 01:23:20、00:00:00
+ */
+function formatSecondsToTime(int $seconds, bool $padZero = true): string
+{
+    // 处理负数:转为0(避免出现负时间)
+    $seconds = max(0, $seconds);
+    
+    // 计算小时、分钟、秒
+    $hours = floor($seconds / 3600);       // 总小时数(1小时=3600秒)
+    $remainingSeconds = $seconds % 3600;   // 计算小时后剩余的秒数
+    $minutes = floor($remainingSeconds / 60); // 剩余秒数转分钟
+    $secs = $remainingSeconds % 60;        // 最终剩余的秒数
+
+    // 补零处理:确保每位都是两位(如 1小时→01,5分钟→05)
+    if ($padZero) {
+        $hours = str_pad($hours, 2, '0', STR_PAD_LEFT);
+        $minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT);
+        $secs = str_pad($secs, 2, '0', STR_PAD_LEFT);
+    }
+
+    // 拼接成 HH:MM:SS 格式
+    return "{$hours}:{$minutes}:{$secs}";
+}
+
+
 // 执行绑定
 function doBindUid($user_id,$client_id,$cid='',$isMobile = false){
     // 如果当前ID在线,将其他地方登陆挤兑下线

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

@@ -794,18 +794,18 @@ class User extends BaseModel
             KefuTime::endData($user->uid, 4);
         }
          //上线
-         if ($user->online == 0 && $is_online == 1 && $user->role == 3) {
+         if ($user->is_online == 0 && $is_online == 1 && $user->role == 3) {
             //添加客服服务时间
             KefuWork::addNum($user->uid, 'online_num');
          }
 
         //忙碌
-         if ($user->online != 2 && $is_online == 2 && $user->role == 3) {
+         if ($user->is_online != 2 && $is_online == 2 && $user->role == 3) {
             //更新客服忙碌次数
             KefuWork::addNum($user->uid, 'busy_num');
          }
 
-         if ($user->onlie == 2 && $is_online != 2 && $user->role == 3) {
+         if ($user->is_online == 2 && $is_online != 2 && $user->role == 3) {
             //结束客服忙碌时间
             KefuTime::endData($user->uid, 1);
          }