初始化项目:添加后端代码、ThinkPHP框架、前端资源

This commit is contained in:
amb
2026-09-03 12:42:39 +08:00
commit 482bece22e
3726 changed files with 416708 additions and 0 deletions
+157
View File
@@ -0,0 +1,157 @@
<?php
namespace app\common\library\live;
use app\common\library\live\message\Manager;
use app\common\library\live\message\Result as ProviderResult;
/**
* 直播消息
* 兼容历史调用入口:send / del / getOnlineUser
* 内部统一委托给 message\Manager 按 provider 路由到具体服务商实现
* 新业务建议直接使用 \app\common\library\live\message\Manager
*/
class Message
{
/**
* 发送消息(兼容历史接口)
* 默认使用配置中的 provider;如需指定 provider 请使用 sendByProvider
* @param string $topic 群组ID(奥点云 topic / 阿里云 GroupId
* @param string $message 消息体(JSON 字符串)
* @return array 历史返回结构(兼容奥点云格式 ['Flag'=>200,'uuid'=>xxx]);失败时返回 false
*/
public static function send($topic, $message){
return self::sendByProvider(null, $topic, $message);
}
/**
* 按指定服务商发送消息
* @param string|null $provider 服务商名称(aodianyun/aliyun),null 则用配置默认值
* @param string $topic 群组ID
* @param string $message 消息体
* @param int $msgType 消息类型(阿里云 MsgType,默认 10001 文本)
* @param string $senderId 发送者ID(阿里云必填,奥点云忽略)
* @param string $senderMeta 发送者扩展信息
* @param string $msgTid 消息唯一标识
* @return array 兼容历史返回结构:成功返回 ['Flag'=>200, 'uuid'=>xxx, 'msg_tid'=>xxx],失败返回 ['Flag'=>0, 'FlagString'=>error]
*/
public static function sendByProvider($provider, $topic, $message, $msgType = 10001, $senderId = '', $senderMeta = '', $msgTid = ''){
try {
$result = Manager::provider($provider)->send($topic, $message, $msgType, $senderId, $senderMeta, $msgTid);
} catch (\Exception $e) {
return ['Flag' => 0, 'FlagString' => $e->getMessage()];
}
return self::resultToSendArray($result);
}
/**
* 撤回/删除消息(兼容历史接口)
* @param string $topic 群组ID
* @param string $uuid 消息唯一标识(奥点云 uuid / 阿里云 MsgTid
* @return array|false
*/
public static function del($topic, $uuid){
return self::delByProvider(null, $topic, $uuid);
}
/**
* 按指定服务商撤回/删除消息
* @param string|null $provider
* @param string $topic
* @param string $uuid
* @return array
*/
public static function delByProvider($provider, $topic, $uuid){
try {
$result = Manager::provider($provider)->del($topic, $uuid);
} catch (\Exception $e) {
return ['Flag' => 0, 'FlagString' => $e->getMessage()];
}
return self::resultToDelArray($result);
}
/**
* 获取分组中的在线用户(兼容历史接口)
* @param string $topic
* @param int $skip
* @param int $num
* @return array|false 失败返回 false,成功返回 ['total'=>int, 'list'=>array]
*/
public static function getOnlineUser($topic, $skip=0, $num=0){
return self::getOnlineUserByProvider(null, $topic, $skip, $num);
}
/**
* 按指定服务商获取在线用户
* @param string|null $provider
* @param string $topic
* @param int $skip
* @param int $num
* @return array|false
*/
public static function getOnlineUserByProvider($provider, $topic, $skip=0, $num=0){
try {
$result = Manager::provider($provider)->getOnlineUser($topic, $num, $skip);
} catch (\Exception $e) {
return false;
}
if (!$result->isSuccess()) {
return false;
}
$data = $result->data;
if (!is_array($data)) {
return false;
}
return [
'total' => isset($data['total']) ? (int)$data['total'] : 0,
'list' => isset($data['list']) ? $data['list'] : [],
];
}
/**
* 将服务商 Result 转换为历史 send 接口返回结构
* 兼容奥点云 Dms::sendMsg 的 ['Flag'=>200,'uuid'=>xxx] 格式
* @param ProviderResult $result
* @return array
*/
protected static function resultToSendArray(ProviderResult $result){
if ($result->isSuccess()) {
$data = $result->data;
$uuid = is_array($data) && isset($data['uuid']) ? $data['uuid'] : '';
$msgTid = is_array($data) && isset($data['msg_tid']) ? $data['msg_tid'] : $uuid;
return [
'Flag' => 200,
'FlagString' => '',
'uuid' => $uuid,
'msg_tid' => $msgTid,
];
}
return [
'Flag' => 0,
'FlagString' => $result->error ? $result->error : '发送失败',
];
}
/**
* 将服务商 Result 转换为历史 del 接口返回结构
* @param ProviderResult $result
* @return array
*/
protected static function resultToDelArray(ProviderResult $result){
if ($result->isSuccess()) {
return [
'Flag' => 200,
'FlagString' => '',
];
}
return [
'Flag' => 0,
'FlagString' => $result->error ? $result->error : '删除失败',
];
}
}