Socket/app/models/chat/ChatSession.php
2026-01-28 23:48:20 +08:00

59 lines
1.3 KiB
PHP

<?php
namespace app\models\chat;
use think\Model;
/**
* 客服会话模型
* Class ChatSession
* @package app\models\chat
*/
class ChatSession extends Model
{
protected $table = 'cg_chat_session';
protected $pk = 'id';
protected $autoWriteTimestamp = true;
// 会话状态
const STATUS_PENDING = 0; // 待分配
const STATUS_ACTIVE = 1; // 进行中
const STATUS_ENDED = 2; // 已结束
// 来源
const SOURCE_PC = 1;
const SOURCE_GAME = 2;
const SOURCE_PORTAL = 3;
/**
* 获取用户活跃会话
*/
public static function getActiveByUserId(int $userId): ?array
{
$session = self::where('user_id', $userId)
->whereIn('status', [self::STATUS_PENDING, self::STATUS_ACTIVE])
->find();
return $session ? $session->toArray() : null;
}
/**
* 获取客服进行中的会话列表
*/
public static function getActiveByAdminId(int $adminId): array
{
return self::where('admin_id', $adminId)
->where('status', self::STATUS_ACTIVE)
->order('last_msg_time', 'desc')
->select()
->toArray();
}
/**
* 获取待分配会话数量
*/
public static function getPendingCount(): int
{
return self::where('status', self::STATUS_PENDING)->count();
}
}