mirror of
https://github.com/kuaifan/dootask.git
synced 2026-07-28 00:48:02 +00:00
新移动端 (Expo App) 使用 doopush-react-native-sdk 完成设备注册;服务端
按 userid 标签 OR 并集定向推送,替代原友盟 alias 链路。
- 新增 app/Services/DooPushClient.php:DooPush 服务端 HTTP 客户端
POST /apps/{appId}/push(按 tags 定向)
POST /apps/{appId}/device-tags/{deviceToken}(绑定 userid 标签)
DELETE 同上(解绑)
X-API-Key 鉴权
- 新增 app/Module/Push/PushService.php:推送业务编排
按 badge(未读数)分组合并下发,减少 HTTP 次数
- 新增 app/Http/Controllers/Api/PushController.php:设备注册/解绑接口
api/push/register、api/push/unregister
- 修改 app/Models/UmengAlias.php:pushMsgToUserid 入口在
DooPushClient::enabled() 时委托新通道,否则保留旧友盟链路
- 修改 config/dootask.php:新增 doopush 段(appId/apiKey/baseURL/tag_name)
- 修改 routes/web.php:注册 api/push/{method} 路由
- 同步 routes/api-map.md(doc:api-map 自动生成)
旧 EEUI App 推送链路完全不动;新 App 通过 .env 的 DOOPUSH_ENABLED=yes 启用。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
83 lines
3.8 KiB
PHP
83 lines
3.8 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\AssistantController;
|
||
use App\Http\Controllers\Api\ProjectController;
|
||
use App\Http\Controllers\Api\ComplaintController;
|
||
use App\Http\Controllers\Api\SearchController;
|
||
use App\Http\Controllers\Api\PushController;
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| 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('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('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('test/{method}', TestController::class);
|
||
Route::any('test/{method}/{action}', TestController::class);
|
||
// 推送(DooPush 设备注册/解绑)
|
||
Route::any('push/{method}', PushController::class);
|
||
Route::any('push/{method}/{action}', PushController::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)).*');
|
||
});
|