新版数智员工

This commit is contained in:
wong
2026-03-24 10:39:16 +08:00
parent 1853934d85
commit 7fb61b77a4
123 changed files with 38491 additions and 1018 deletions

View File

@@ -0,0 +1,252 @@
<?php
namespace app\store\controller;
use think\Db;
use think\facade\Log;
/**
* Agent功能模块控制器 - V2版本
*/
class AgentController extends BaseController
{
/**
* 获取Agent模块列表
* @return \think\response\Json
*/
public function getModules()
{
try {
// 从BaseController获取设备ID通过userInfo自动获取
$deviceId = $this->device['id'] ?? 0;
if (!$deviceId) {
return json(['code' => 400, 'msg' => '设备不存在,请先绑定设备']);
}
// 获取所有可用的模块定义
$modules = $this->getModuleDefinitions();
// 从旧表获取配置
$taskConfig = Db::name('device_taskconf')
->where('deviceId', $deviceId)
->where('deleteTime', 0)
->find();
// 如果没有配置,返回默认关闭状态
if (!$taskConfig) {
$taskConfig = [
'autoLike' => 0,
'momentsSync' => 0,
'autoCustomerDev' => 0,
'groupMessageDeliver' => 0,
'autoGroup' => 0
];
}
// 字段映射关系
$fieldMap = [
'auto_like' => 'autoLike',
'moments_sync' => 'momentsSync',
'auto_customer_dev' => 'autoCustomerDev',
'group_message_deliver' => 'groupMessageDeliver',
'auto_group' => 'autoGroup'
];
// 组装返回数据
$result = [];
foreach ($modules as $module) {
$moduleCode = $module['code'];
$fieldName = $fieldMap[$moduleCode] ?? null;
$moduleData = array_merge($module, [
'userEnabled' => $fieldName && isset($taskConfig[$fieldName]) ? (bool)$taskConfig[$fieldName] : false
]);
$result[] = $moduleData;
}
return json([
'code' => 200,
'msg' => 'success',
'data' => $result
]);
} catch (\Exception $e) {
Log::error('获取Agent模块列表失败' . $e->getMessage());
return json(['code' => 500, 'msg' => '获取失败:' . $e->getMessage()]);
}
}
/**
* 更新模块状态
* @param string $moduleCode 模块代码
* @return \think\response\Json
*/
public function updateModuleStatus($moduleCode)
{
try {
// 从BaseController获取设备ID通过userInfo自动获取
$deviceId = $this->device['id'] ?? 0;
$isEnabled = (bool)$this->request->param('isEnabled', false);
if (!$deviceId) {
return json(['code' => 400, 'msg' => '设备不存在,请先绑定设备']);
}
// 验证模块代码是否有效
$validModules = array_column($this->getModuleDefinitions(), 'code');
if (!in_array($moduleCode, $validModules)) {
return json(['code' => 400, 'msg' => '无效的模块代码']);
}
// 字段映射关系
$fieldMap = [
'auto_like' => 'autoLike',
'moments_sync' => 'momentsSync',
'auto_customer_dev' => 'autoCustomerDev',
'group_message_deliver' => 'groupMessageDeliver',
'auto_group' => 'autoGroup'
];
$fieldName = $fieldMap[$moduleCode] ?? null;
if (!$fieldName) {
return json(['code' => 400, 'msg' => '不支持的模块']);
}
// 查询现有配置
$taskConfig = Db::name('device_taskconf')
->where('deviceId', $deviceId)
->where('deleteTime', 0)
->find();
$now = time();
if ($taskConfig) {
// 更新现有配置
Db::name('device_taskconf')
->where('id', $taskConfig['id'])
->update([
$fieldName => $isEnabled ? 1 : 0,
'updateTime' => $now
]);
// 清除设备缓存
$this->clearDeviceCache();
} else {
// 创建新配置
$insertData = [
'deviceId' => $deviceId,
'autoLike' => 0,
'momentsSync' => 0,
'autoCustomerDev' => 0,
'groupMessageDeliver' => 0,
'autoGroup' => 0,
'companyId' => $this->device['companyId'] ?? $this->userInfo['companyId'] ?? 0,
'createTime' => $now,
'updateTime' => $now
];
$insertData[$fieldName] = $isEnabled ? 1 : 0;
Db::name('device_taskconf')->insert($insertData);
// 清除设备缓存
$this->clearDeviceCache();
}
return json([
'code' => 200,
'msg' => '操作成功',
'data' => [
'moduleCode' => $moduleCode,
'isEnabled' => $isEnabled
]
]);
} catch (\Exception $e) {
Log::error('更新模块状态失败:' . $e->getMessage());
return json(['code' => 500, 'msg' => '更新失败:' . $e->getMessage()]);
}
}
/**
* 获取模块定义
* @return array
*/
protected function getModuleDefinitions()
{
return [
[
'code' => 'auto_like',
'name' => '自动点赞',
'icon' => 'icon-dianzan',
'color' => '#ff6699',
'description' => '自动为好友朋友圈点赞',
'category' => 'social',
'sort' => 1,
'isEnabled' => true,
'needAuth' => true
],
[
'code' => 'moments_sync',
'name' => '朋友圈同步',
'icon' => 'icon-tupian',
'color' => '#9966ff',
'description' => '同步好友朋友圈内容',
'category' => 'social',
'sort' => 2,
'isEnabled' => true,
'needAuth' => true
],
[
'code' => 'auto_customer_dev',
'name' => '自动开发客户',
'icon' => 'icon-yonghu',
'color' => '#33cc99',
'description' => '自动化客户开发流程',
'category' => 'customer',
'sort' => 3,
'isEnabled' => true,
'needAuth' => true
],
[
'code' => 'group_message_deliver',
'name' => '群消息群发',
'icon' => 'icon-xiaoxi',
'color' => '#ff9966',
'description' => '批量推送消息到微信群',
'category' => 'message',
'sort' => 4,
'isEnabled' => true,
'needAuth' => false
],
[
'code' => 'auto_group',
'name' => '自动建群',
'icon' => 'icon-yonghuqun',
'color' => '#6699ff',
'description' => '自动创建和管理微信群',
'category' => 'group',
'sort' => 5,
'isEnabled' => true,
'needAuth' => true
],
[
'code' => 'video_distribute',
'name' => '视频分发',
'icon' => 'icon-video',
'color' => '#ff66cc',
'description' => '自动分发视频内容',
'category' => 'content',
'sort' => 6,
'isEnabled' => false,
'needAuth' => false
]
];
}
}