mirror of
https://github.com/kuaifan/dootask.git
synced 2026-07-03 12:55:13 +00:00
- 新增 api/upload/{init,chunk,merge} 入口与 ChunkUpload 模块(5MB 分片、3 并发、Redis 状态机)
- 5 场景接入:文件柜 / 聊天 / 任务附件 / 头像&系统图片 / 编辑器粘贴
- 秒传:同用户同 hash 复用 FileContent 物理文件,零传输
- 续传:Redis + localStorage 双索引,24h TTL
- 与老接口对齐:pid 锁、≤300 上限、webkit_relative_path 目录递归、overwrite 替换语义
- init 阶段读 file_upload_limit 拦截超限,避免传完分片才报错
- DeleteTmpTask 加 tmp_chunks case 兜底清理 24h 未合并目录
- files 表新增 hash 列(migration)
- 前端 chunkedUpload wrapper:主线程 spark-md5 流式 + 指数退避重试
- ai-kb 同步:upload / file-upload-limit / upload-size-limit 三个 chunk
91 lines
4.3 KiB
PHP
91 lines
4.3 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\IndexController;
|
|
use App\Http\Controllers\Api\TestController;
|
|
use App\Http\Controllers\Api\FileController;
|
|
use App\Http\Controllers\Api\UsersController;
|
|
use App\Http\Controllers\Api\DialogController;
|
|
use App\Http\Controllers\Api\PublicController;
|
|
use App\Http\Controllers\Api\ReportController;
|
|
use App\Http\Controllers\Api\SystemController;
|
|
use App\Http\Controllers\Api\LicenseController;
|
|
use App\Http\Controllers\Api\AssistantController;
|
|
use App\Http\Controllers\Api\ProjectController;
|
|
use App\Http\Controllers\Api\ComplaintController;
|
|
use App\Http\Controllers\Api\SearchController;
|
|
use App\Http\Controllers\Api\AppsController;
|
|
use App\Http\Controllers\Api\UploadController;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Web Routes
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Here is where you can register web routes for your application. These
|
|
| routes are loaded by the RouteServiceProvider within a group which
|
|
| contains the "web" middleware group. Now create something great!
|
|
|
|
|
*/
|
|
|
|
|
|
/**
|
|
* 接口
|
|
*/
|
|
Route::prefix('api')->middleware(['webapi'])->group(function () {
|
|
// 会员
|
|
Route::any('users/{method}', UsersController::class);
|
|
Route::any('users/{method}/{action}', UsersController::class);
|
|
// 项目
|
|
Route::any('project/{method}', ProjectController::class);
|
|
Route::any('project/{method}/{action}', ProjectController::class);
|
|
// 系统
|
|
Route::any('system/{method}', SystemController::class);
|
|
Route::any('system/{method}/{action}', SystemController::class);
|
|
// 在线授权
|
|
Route::any('license/{method}', LicenseController::class);
|
|
Route::any('license/{method}/{action}', LicenseController::class);
|
|
// 对话
|
|
Route::any('dialog/{method}', DialogController::class);
|
|
Route::any('dialog/{method}/{action}', DialogController::class);
|
|
// 文件
|
|
Route::any('file/{method}', FileController::class);
|
|
Route::any('file/{method}/{action}', FileController::class);
|
|
// 分片上传
|
|
Route::any('upload/{method}', UploadController::class);
|
|
Route::any('upload/{method}/{action}', UploadController::class);
|
|
// 报告
|
|
Route::any('report/{method}', ReportController::class);
|
|
Route::any('report/{method}/{action}', ReportController::class);
|
|
// 公开接口
|
|
Route::any('public/{method}', PublicController::class);
|
|
Route::any('public/{method}/{action}', PublicController::class);
|
|
// 助手
|
|
Route::any('assistant/{method}', AssistantController::class);
|
|
Route::any('assistant/{method}/{action}', AssistantController::class);
|
|
// 投诉
|
|
Route::any('complaint/{method}', ComplaintController::class);
|
|
Route::any('complaint/{method}/{action}', ComplaintController::class);
|
|
// 智能搜索
|
|
Route::any('search/{method}', SearchController::class);
|
|
Route::any('search/{method}/{action}', SearchController::class);
|
|
// 应用相关
|
|
Route::any('apps/{method}', AppsController::class);
|
|
Route::any('apps/{method}/{action}', AppsController::class);
|
|
// 测试
|
|
Route::any('test/{method}', TestController::class);
|
|
Route::any('test/{method}/{action}', TestController::class);
|
|
});
|
|
|
|
/**
|
|
* 页面
|
|
*/
|
|
Route::middleware(['webapi'])->group(function () {
|
|
Route::any('/', IndexController::class);
|
|
Route::any('/{method}', IndexController::class);
|
|
Route::any('/{method}/{action}', IndexController::class);
|
|
Route::any('/{method}/{action}/{child}', IndexController::class);
|
|
Route::any('/{method}/{action}/{child}/{n}', IndexController::class)->where('method', '^(?!(uploads|images)).*');
|
|
Route::any('/{method}/{action}/{child}/{n}/{c}', IndexController::class)->where('method', '^(?!(uploads|images)).*');
|
|
});
|