chore: 针对ThinkPHP 6.x 系列,支持自定义.env 文件加载

This commit is contained in:
2025-11-18 18:35:05 +08:00
parent 4654bca6c3
commit 7ad78f1ee6
17 changed files with 81 additions and 3729 deletions

View File

@@ -93,19 +93,6 @@ class Config extends BaseModel
return $res;
}
/**
* 获取支持的应用模块
* @return array
*/
public function getSupportAppModules()
{
return [
['value' => 'shop', 'label' => '商家'],
['value' => 'h5', 'label' => 'H5轻应用'],
['value' => 'weixin', 'label' => '微信小程序'],
];
}
/**
* 默认图上传配置
* @param $data
@@ -299,300 +286,6 @@ class Config extends BaseModel
return $res;
}
/**
* 获取支持的AI平台类型
* @return array
*/
public function getSupportAIPlatformTypes()
{
return [
['value' => 'dify', 'label' => 'Dify'],
['value' => 'ragflow', 'label' => 'Ragflow'],
];
}
/**
* 通用AI相关配置获取方法
* @param int $site_id 站点ID, 默认为-1, 业务站点uniacid值与site_id保持一致
* @param string $app_module 应用模块, 默认为*,表示所有应用模块都生效
* @param string $config_key 配置键, 默认为空字符串, 表示获取通用配置信息
* @param array $common_config 通用配置信息, 默认为空数组
* @return array
*/
private function _getAIConfig($site_id = -1, $app_module = '*', $config_key ='', $common_config = [])
{
// 应用模块配置获取
try {
// 站点ID为-1时获取通用配置信息
if ($site_id == -1) {
return $this->error('', 'MISSING_SITE_ID');
}
// 配置键为空字符串, 表示获取通用配置信息
if (empty($config_key)) {
return $this->error('', 'MISSING_CONFIG_KEY');
}
$config = new ConfigModel();
$support_app_modules = $this->getSupportAppModules();
// 检查应用模块是否支持, 如果是*,则表示所有应用模块都生效
if ($app_module != '*') {
if (!in_array($app_module, array_column($support_app_modules, 'value'))) {
return $this->error('', 'APP_MODULE_NOT_SUPPORTED');
}
}
// 如果是*,则表示所有应用模块都生效, 遍历所有应用模块,根据应用模块获取配置信息, 为每一种应用模块生成独立的配置信息,每一种类型的应用模块,对应自己的配置信息,然后将所有的配置信息返回
$app_module_config = [];
foreach ($support_app_modules as $item) {
$app_module = $item['value'];
// 检查应用模块是否支持
try {
$res = $config->getConfig([['site_id', '=', $site_id], ['app_module', '=', $app_module], ['config_key', '=', $config_key]]);
if (empty($res['data']['value'])) {
$res['data']['value'] = $common_config;
}
} catch (\Exception $e) {
$res['data']['value'] = $common_config;
}
$app_module_config[$app_module] = $res['data']['value'];
}
$res['data']['value'] = $app_module_config;
return $res;
} catch (\Exception $e) {
return $this->error('', 'GET_CONFIG_ERROR' . $e->getMessage());
}
}
/**
* 通用AI相关配置设置方法
* @param $data 配置信息
* @param int $site_id 站点ID, 默认为-1, 业务站点uniacid值与site_id保持一致
* @param string $app_module 应用模块, 默认为空字符串
* @param string $config_key 配置键, 默认为空字符串
* @param string $data_desc 配置描述, 默认为空字符串
* @return array
*/
private function _setAIConfig($data, $site_id = -1, $app_module = '', $config_key = '', $data_desc = '')
{
// 站点ID为-1时设置通用配置信息
if ($site_id == -1) {
return $this->error('', 'MISSING_SITE_ID');
}
// 应用模块为空字符串
if (empty($app_module)) {
return $this->error('', 'MISSING_APP_MODULE');
}
// 配置键为空字符串
if (empty($config_key)) {
return $this->error('', 'MISSING_CONFIG_KEY');
}
$config = new ConfigModel();
$res = $config->setConfig($data, $data_desc, 1, [['site_id', '=', $site_id], ['app_module', '=', $app_module], ['config_key', '=', $config_key]]);
return $res;
}
/**
* 设置AI第三平台提供的配置信息
* @param $data 配置信息
* @param int $site_id 站点ID, 默认为-1, 业务站点uniacid值与site_id保持一致
* @param string $app_module 应用模块, 默认为*, 表示所有应用模块都生效
* @return array
*/
public function setAIPlatformConfig($data, $site_id = -1, $app_module = '')
{
return $this->_setAIConfig($data, $site_id, $app_module, 'AI_PLATFORM_CONFIG', 'AI第三平台提供的配置信息');
}
/**
* 设置AI智能客服配置信息
* @param $data 配置信息
* @param int $site_id 站点ID, 默认为1, 业务站点uniacid值与site_id保持一致
* @param string $app_module 应用模块, 默认为*, 表示所有应用模块都生效
* @return array
*/
public function setAIAgentServicesConfig($data, $site_id = 1, $app_module = '*')
{
return $this->_setAIConfig($data, $site_id, $app_module, 'AI_AGENT_SERVICES_CONFIG', 'AI智能客服配置信息');
}
/**
* 获取AI第三平台提供的通用配置信息
* @return array
*/
private function getCommonAIPlatformConfig()
{
// 默认ID
$id = time();
// 通用配置
return [
'default' => ['id' => $id, 'name' => 'dify-demo'],
'list' => [
// Dify Demo 版本,
['id' => $id, 'name' => 'dify-demo', 'type' => 'dify', 'type_label' => 'Dify', 'desc' => 'Dify 线上Demo 版本', 'enable' => 1, 'base_url' => 'https://localhost/api/ai', 'api_key' => 'xxxxxxx', 'create_time' => time()],
]
];
}
/**
* 获取AI第三平台提供的配置信息
* @param int $site_id 站点ID, 默认为1, 业务站点uniacid值与site_id保持一致
* @param string $app_module 应用模块, 默认为*, 表示所有应用模块都生效
* @return array
*/
public function getAIPlatformConfig($site_id = 1, $app_module = '*')
{
return $this->_getAIConfig($site_id, $app_module, 'AI_PLATFORM_CONFIG', $this->getCommonAIPlatformConfig());
}
/**
* 获取AI智能客服的通用配置信息
* @return array
*/
private function getCommonAIAgentServicesConfig()
{
return [
// 是否开启AI功能
'enable' => false,
// 用户头像url
'user_avatar' => [
'en' => '',
'zh_CN' => '',
],
// AI客服头像url
'ai_avatar' => [
'en' => '',
'zh_CN' => '',
],
// AI客服姓名
'ai_name' => [
'en' => '',
'zh_CN' => '',
],
// 欢迎语, 也称为开场白,初始化消息
'welcome_messages' => [
'en' => [],
'zh_CN' => [],
],
// 是否显示加载更多按钮
'show_load_more_button' => true,
// 最大消息数量
'max_messages' => 100,
// 是否启用流式响应
'stream_mode' => true,
// 流式响应的超时时间,单位:秒
'stream_timeout' => 30,
// 流式响应速度(字符/秒)
'stream_speed' => 20,
// 是否开启支持语音输入
'support_voice_input' => false,
// 语音输入的提示信息
'voice_input_prompt' => [
'en' => 'Please click the microphone icon to start recording',
'zh_CN' => '请点击麦克风图标开始录音',
],
// 是否开启语音输入提示
'support_voice_input_prompt' => false,
// 输入文本内容提示
'text_input_prompt' => [
'en' => 'Please enter your problem',
'zh_CN' => '请输入您的问题',
],
// 输入的问题描述的字符长度限制
'max_char_length_for_problem' => 500,
// 是否支持显示更多工具面板
'tool_panel_config' => [
'enable' => false,
'title' => [
'en' => 'More Tools',
'zh_CN' => '更多功能',
],
'icon' => 'icon-more',
// 工具面板中的工具项
'tools' => [
'image' => [
'enable' => false,
'name' => [
'en' => 'Image',
'zh_CN' => '图片',
],
'description' => [
'en' => 'Upload image',
'zh_CN' => '上传图片',
],
'icon' => 'icon-image',
],
'video' => [
'enable' => false,
'name' => [
'en' => 'Video',
'zh_CN' => '视频',
],
'description' => [
'en' => 'Upload video',
'zh_CN' => '上传视频',
],
'icon' => 'icon-video',
],
'file' => [
'enable' => false,
'name' => [
'en' => 'File',
'zh_CN' => '文件',
],
'description' => [
'en' => 'Upload file',
'zh_CN' => '上传文件',
],
'icon' => 'icon-file',
],
'voice' => [
'enable' => false,
'name' => [
'en' => 'Voice',
'zh_CN' => '语音',
],
'description' => [
'en' => 'Voice input',
'zh_CN' => '语音输入',
],
'icon' => 'icon-voice',
],
'location' => [
'enable' => false,
'name' => [
'en' => 'Location',
'zh_CN' => '位置',
],
'description' => [
'en' => 'Location input',
'zh_CN' => '位置输入',
],
'icon' => 'icon-location',
],
],
]
];
}
/**
* 获得AI智能客服配置信息
* @param int $site_id 站点ID, 默认为1, 业务站点uniacid值与site_id保持一致
* @param string $app_module 应用模块, 默认为*, 表示所有应用模块都生效
* @return array
*/
public function getAIAgentServicesConfig($site_id = 1, $app_module = '*')
{
return $this->_getAIConfig($site_id, $app_module, 'AI_AGENT_SERVICES_CONFIG', $this->getCommonAIAgentServicesConfig());
}
/**
* 设置获取H5域名配置
* @param $data