Files
cunkebao_v3/Server/application/chukebao/config/route.php
Manus AI 5182529a58 sync(本地→GitHub): 2026-05-30 21:41 全量单向同步
## GitHub 同步说明

| 项 | 内容 |
|:---|:---|
| 仓库 | https://github.com/fnvtk/cunkebao_v3 |
| 分支 | develop |
| 方向 | 本地 → GitHub(单向 push) |
| 是否拉取远程 | 否(未 fetch / pull / merge) |
| 是否改本地文件 | 否(仅 git add/commit,未编辑任何源文件正文) |
| 基准 commit | 0643e78a |
| 变更规模 | 709 files, +26436 / -3407 lines |

## 目录变更统计

| 目录 | 文件数 | 说明 |
|:---|---:|:---|
| 开发文档/ | 404 | 四端进行中/已完成需求、接口文档、官网需求、部署脚本 |
| Server/ | 95 | 后端 API、迁移脚本、触客宝/超管/存客宝服务 |
| Cunkebao/ | 85 | 移动端 H5、设备绑定、客服、转号审批等 |
| Touchkebao/ | 68 | PC 工作台、AI 获客、算力中心、Glass UI |
| SuperAdmin/ | 33 | 超管项目中心、算力计费、内容库 |
| 官网/ | 19 | 新增存客宝官网静态页(index/pricing/solutions 等) |
| .cursor/ | 3 | Cursor 规则与 Skill |
| .obsidian/ | 2 | Obsidian 工作区配置 |

## 重点新增/更新(本地为准)

- 官网/: 完整静态站点(index、pricing、manual、solutions、api)
- 开发文档/1、需求/修改/*_进行中_20260530.md(存客宝/触客宝/AI数智员工)
- 开发文档/1、需求/官网需求.md
- 开发文档/5、接口/开发进度_接口文档.md 等接口文档迭代
- Touchkebao Glass UI 与 P0 收尾、通道获客算力
- SuperAdmin 算力计费规则、项目工作台

## 刻意未上传(本地保留)

- node_modules/
- .DS_Store、.smart-env/
- .开发文档_nested_git_backup/(旧嵌套 git 备份)
- **/__pycache__/

## 验收

GitHub 浏览: https://github.com/fnvtk/cunkebao_v3/tree/develop

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-30 21:41:40 +08:00

296 lines
17 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// +----------------------------------------------------------------------
// | 设备管理模块路由配置
// +----------------------------------------------------------------------
use think\facade\Route;
// 定义RESTful风格的API路由
Route::group('v1/', function () {
Route::group('kefu/', function () {
//好友相关
Route::group('wechatFriend/', function () {
Route::get('list', 'app\chukebao\controller\WechatFriendController@getList'); // 获取好友列表
Route::get('detail', 'app\chukebao\controller\WechatFriendController@getDetail'); // 获取好友详情
Route::post('updateInfo', 'app\chukebao\controller\WechatFriendController@updateFriendInfo'); // 更新好友资料
// 添加好友任务记录相关接口
Route::get('addTaskList', 'app\chukebao\controller\WechatFriendController@getAddTaskList'); // 获取添加好友任务记录列表包含添加者信息、状态、时间等支持状态筛选无需传好友ID
});
//群相关
Route::group('wechatChatroom/', function () {
Route::get('list', 'app\chukebao\controller\WechatChatroomController@getList'); // 获取好友列表
Route::get('detail', 'app\chukebao\controller\WechatChatroomController@getDetail'); // 获取群详情
Route::get('members', 'app\chukebao\controller\WechatChatroomController@getMembers'); // 获取群成员列表
Route::post('aiAnnouncement', 'app\chukebao\controller\WechatChatroomController@aiAnnouncement'); // AI群公告
});
//客服相关
Route::group('customerService/', function () {
Route::get('list', 'app\chukebao\controller\CustomerServiceController@getList'); // 获取好友列表
});
//账号管理
Route::group('accounts/', function () {
Route::get('list', 'app\chukebao\controller\AccountsController@getList'); // 获取账号列表
});
//微信号用户管理 / 账号估值 / 转移申请(代理 cunkebao 真源 · 需求九 §9.3/§9.5
Route::group('wechat-account/', function () {
// 转移申请(静态段在前,避免被 :id 捕获)
Route::post('transfer/apply', 'app\chukebao\controller\WechatAccountController@transferApply'); // 客服发起申请
Route::get('transfer/status', 'app\chukebao\controller\WechatAccountController@transferStatus'); // 申请状态
// :id = 微信号 wechatId
Route::get(':id/valuation', 'app\chukebao\controller\WechatAccountController@valuation'); // 账号估值(只读)
Route::get(':id/manage', 'app\chukebao\controller\WechatAccountController@manage'); // 管理页聚合
Route::get(':id/friends', 'app\chukebao\controller\WechatAccountController@friends'); // 本号好友分页
});
//消息相关
Route::group('message/', function () {
Route::get('list', 'app\chukebao\controller\MessageController@getList'); // 获取好友列表
Route::get('readMessage', 'app\chukebao\controller\MessageController@readMessage'); // 读取消息
Route::get('details', 'app\chukebao\controller\MessageController@details'); // 消息详情
Route::get('getMessageStatus', 'app\chukebao\controller\MessageController@getMessageStatus'); // 获取单条消息发送状态
});
//微信分组
Route::group('wechatGroup/', function () {
Route::get('list', 'app\chukebao\controller\WechatGroupController@getList'); // 获取分组列表
Route::post('add', 'app\chukebao\controller\WechatGroupController@create'); // 新增分组
Route::post('update', 'app\chukebao\controller\WechatGroupController@update'); // 更新分组
Route::delete('delete', 'app\chukebao\controller\WechatGroupController@delete'); // 删除分组(假删除)
Route::post('move', 'app\chukebao\controller\WechatGroupController@move'); // 移动分组(好友/群移动到指定分组)
});
//AI相关
Route::group('ai/', function () {
//问答
Route::group('questions/', function () {
Route::get('list', 'app\chukebao\controller\QuestionsController@getList'); // 问答列表
Route::post('add', 'app\chukebao\controller\QuestionsController@create'); // 问答添加
Route::post('update', 'app\chukebao\controller\QuestionsController@update'); // 问答更新
Route::delete('delete', 'app\chukebao\controller\QuestionsController@delete'); // 问答删除
Route::get('detail', 'app\chukebao\controller\QuestionsController@detail'); // 问答详情
});
//全局配置
Route::group('settings/', function () {
Route::get('get', 'app\chukebao\controller\AiSettingsController@getSetting');
Route::post('set', 'app\chukebao\controller\AiSettingsController@setSetting');
});
//好友配置
Route::group('friend/', function () {
Route::post('set', 'app\chukebao\controller\AiSettingsController@setFriend');
Route::get('get', 'app\chukebao\controller\AiSettingsController@getFriend');
Route::post('setAll', 'app\chukebao\controller\AiSettingsController@setAllFriend');
});
//ai对话
Route::get('getUserTokens', 'app\chukebao\controller\AiSettingsController@getUserTokens');
Route::post('chat', 'app\chukebao\controller\AiChatController@index');
});
//代办事项
Route::group('todo/', function () {
Route::get('list', 'app\chukebao\controller\ToDoController@getList');
Route::post('add', 'app\chukebao\controller\ToDoController@create');
Route::get('process', 'app\chukebao\controller\ToDoController@process');
});
//跟进提醒
Route::group('followUp/', function () {
Route::get('list', 'app\chukebao\controller\FollowUpController@getList');
Route::post('add', 'app\chukebao\controller\FollowUpController@create');
Route::get('process', 'app\chukebao\controller\FollowUpController@process');
});
//算力相关
Route::group('tokensRecord/', function () {
Route::get('list', 'app\chukebao\controller\TokensRecordController@getList');
});
//内容管理
Route::group('content/', function () {
//素材管理
Route::group('material/', function () {
Route::get('all', 'app\chukebao\controller\ContentController@getAllMaterial');
Route::get('list', 'app\chukebao\controller\ContentController@getMaterial');
Route::post('add', 'app\chukebao\controller\ContentController@createMaterial');
Route::get('details', 'app\chukebao\controller\ContentController@detailsMaterial');
Route::delete('del', 'app\chukebao\controller\ContentController@delMaterial');
Route::post('update', 'app\chukebao\controller\ContentController@updateMaterial');
});
//违禁词管理
Route::group('sensitiveWord/', function () {
Route::get('list', 'app\chukebao\controller\ContentController@getSensitiveWord');
Route::post('add', 'app\chukebao\controller\ContentController@createSensitiveWord');
Route::get('details', 'app\chukebao\controller\ContentController@detailsSensitiveWord');
Route::delete('del', 'app\chukebao\controller\ContentController@delSensitiveWord');
Route::post('update', 'app\chukebao\controller\ContentController@updateSensitiveWord');
Route::get('setStatus', 'app\chukebao\controller\ContentController@setSensitiveWordStatus');
});
//关键词管理
Route::group('keywords/', function () {
Route::get('list', 'app\chukebao\controller\ContentController@getKeywords');
Route::post('add', 'app\chukebao\controller\ContentController@createKeywords');
Route::get('details', 'app\chukebao\controller\ContentController@detailsKeywords');
Route::delete('del', 'app\chukebao\controller\ContentController@delKeywords');
Route::post('update', 'app\chukebao\controller\ContentController@updateKeywords');
Route::get('setStatus', 'app\chukebao\controller\ContentController@setKeywordStatus');
});
});
//自动问候
Route::group('autoGreetings/', function () {
Route::get('list', 'app\chukebao\controller\AutoGreetingsController@getList');
Route::post('add', 'app\chukebao\controller\AutoGreetingsController@create');
Route::get('details', 'app\chukebao\controller\AutoGreetingsController@details');
Route::delete('del', 'app\chukebao\controller\AutoGreetingsController@del');
Route::post('update', 'app\chukebao\controller\AutoGreetingsController@update');
Route::get('setStatus', 'app\chukebao\controller\AutoGreetingsController@setStatus');
Route::get('copy', 'app\chukebao\controller\AutoGreetingsController@copy');
Route::get('stats', 'app\chukebao\controller\AutoGreetingsController@stats');
});
//AI智能推送
Route::group('aiPush/', function () {
Route::get('list', 'app\chukebao\controller\AiPushController@getList'); // 获取推送列表
Route::post('add', 'app\chukebao\controller\AiPushController@add'); // 添加推送
Route::get('details', 'app\chukebao\controller\AiPushController@details'); // 推送详情
Route::delete('del', 'app\chukebao\controller\AiPushController@del'); // 删除推送
Route::post('update', 'app\chukebao\controller\AiPushController@update'); // 更新推送
Route::get('setStatus', 'app\chukebao\controller\AiPushController@setStatus'); // 修改状态
Route::get('stats', 'app\chukebao\controller\AiPushController@stats'); // 统计概览
});
Route::group('notice/', function () {
Route::get('list', 'app\chukebao\controller\NoticeController@getList');
Route::put('readMessage', 'app\chukebao\controller\NoticeController@readMessage');
Route::put('readAll', 'app\chukebao\controller\NoticeController@readAll');
});
Route::group('reply/', function () {
Route::get('list', 'app\chukebao\controller\ReplyController@getList');
Route::post('addGroup', 'app\chukebao\controller\ReplyController@addGroup');
Route::post('addReply', 'app\chukebao\controller\ReplyController@addReply');
Route::post('updateGroup', 'app\chukebao\controller\ReplyController@updateGroup');
Route::post('updateReply', 'app\chukebao\controller\ReplyController@updateReply');
Route::delete('deleteGroup', 'app\chukebao\controller\ReplyController@deleteGroup');
Route::delete('deleteReply', 'app\chukebao\controller\ReplyController@deleteReply');
});
Route::group('moments/', function () {
Route::post('add', 'app\chukebao\controller\MomentsController@create');
Route::post('update', 'app\chukebao\controller\MomentsController@update');
Route::delete('delete', 'app\chukebao\controller\MomentsController@delete');
Route::get('list', 'app\chukebao\controller\MomentsController@getList');
});
Route::post('dataProcessing', 'app\chukebao\controller\DataProcessing@index'); // 修改数据
// ============ 2026-05-29 新增(需求一/三/六/七/八/九)============
// 模块 A · AI 获客webhook 在非 jwt 组)
Route::group('ai-lead/', function () {
Route::get('list', 'app\chukebao\controller\AiLeadController@getList');
Route::get('unread-count', 'app\chukebao\controller\AiLeadController@unreadCount');
Route::get('detail', 'app\chukebao\controller\AiLeadController@getDetail');
Route::post('mark-read', 'app\chukebao\controller\AiLeadController@markRead');
Route::post('add-tag', 'app\chukebao\controller\AiLeadController@addTag');
Route::post('transfer', 'app\chukebao\controller\AiLeadController@transfer');
Route::get('add-friend-devices', 'app\chukebao\controller\AiLeadController@addFriendDevices');
Route::post('add-wechat', 'app\chukebao\controller\AiLeadController@addWechat');
Route::get('webhook-config', 'app\chukebao\controller\AiLeadController@webhookConfig');
});
Route::get('project-context', 'app\chukebao\controller\AiLeadController@projectContext');
// 模块 B · 客户资料池 / 流量池
Route::group('traffic-pool/', function () {
Route::get('options', 'app\chukebao\controller\TrafficPoolKefuController@getOptions');
});
Route::group('customer-pool/', function () {
Route::get('list', 'app\chukebao\controller\TrafficPoolKefuController@customerPoolList');
Route::get('detail', 'app\chukebao\controller\TrafficPoolKefuController@customerPoolDetail');
Route::rule('update', 'app\chukebao\controller\TrafficPoolKefuController@customerPoolUpdate', 'POST|PATCH');
});
Route::post('wechatFriend/add-with-pool', 'app\chukebao\controller\TrafficPoolKefuController@addWithPool');
// 模块 E · 快捷语扩展(置顶/导出/AI生成
Route::post('reply/pin', 'app\chukebao\controller\QuickReplyExtController@pin');
Route::get('reply/export', 'app\chukebao\controller\QuickReplyExtController@export');
Route::post('quick-reply/export-kb', 'app\chukebao\controller\QuickReplyExtController@exportKb');
Route::post('quick-reply/ai-generate', 'app\chukebao\controller\QuickReplyExtController@aiGenerate');
// 模块 D · 知识库 + 算力消耗
Route::get('ai/knowledge-bases', 'app\chukebao\controller\KnowledgeBaseController@knowledgeBases');
Route::post('ai/knowledge-base/select', 'app\chukebao\controller\KnowledgeBaseController@selectKnowledgeBase');
Route::post('ai/consume', 'app\chukebao\controller\AiConsumeController@consume');
Route::post('ai/assist', 'app\chukebao\controller\AiAssistController@assist');
Route::get('ai/suggest', 'app\chukebao\controller\AiAssistController@suggest');
// 模块 F · 设备 / 微信号 / 字典
Route::get('device-wechat/overview', 'app\chukebao\controller\DeviceWechatController@overview');
Route::get('device/detail', 'app\chukebao\controller\DeviceWechatController@detail');
Route::get('wechat-dict', 'app\chukebao\controller\DeviceWechatController@dict');
// 模块 G / G2 · 转移申请 + 微信号用户管理/估值
Route::post('wechat-account/transfer/apply', 'app\chukebao\controller\TransferController@applyWechatAccount');
Route::get('wechat-account/transfer/status', 'app\chukebao\controller\TransferController@status');
Route::post('session/transfer/apply', 'app\chukebao\controller\TransferController@applySession');
Route::post('transfer/apply', 'app\chukebao\controller\TransferController@apply');
Route::get('transfer/list', 'app\chukebao\controller\TransferController@list');
Route::get('wechatGroup/transfer/preview', 'app\chukebao\controller\TransferController@groupPreview');
Route::get('wechat-account/<id>/manage', 'app\chukebao\controller\WechatAccountController@manage');
Route::get('wechat-account/<id>/valuation', 'app\chukebao\controller\WechatAccountController@valuation');
Route::get('wechat-account/<id>/friends', 'app\chukebao\controller\WechatAccountController@friends');
// 模块 I · 设置聚合
Route::group('settings/', function () {
Route::get('profile', 'app\chukebao\controller\SettingsKefuController@profile');
Route::post('avatar', 'app\chukebao\controller\SettingsKefuController@saveAvatar');
Route::get('ai', 'app\chukebao\controller\SettingsKefuController@getAi');
Route::post('ai', 'app\chukebao\controller\SettingsKefuController@saveAi');
});
// 模块 J · 客户协同 / 同步 Outbox
Route::post('customer-profile/sync', 'app\chukebao\controller\CustomerProfileController@sync');
Route::post('sync/outbox/batch', 'app\chukebao\controller\CustomerProfileController@outboxBatch');
Route::get('sync/outbox/status', 'app\chukebao\controller\CustomerProfileController@outboxStatus');
});
})->middleware(['jwt']);
// 客服登录 + AI 获客 Webhook 入站(非客服 JWT存客宝 Server 推送)
Route::group('v1/kefu', function () {
Route::post('login', 'app\chukebao\controller\LoginController@index'); // 登录
Route::post('ai-lead/webhook', 'app\chukebao\controller\AiLeadController@webhook'); // 场景获客客资推送
});
return [];