fix(app-assets): 修复公开API路径双重前缀 + Kong网关路由缺失
问题:移动端配置的开屏图/引导图无效
根因:
1. PublicAppAssetController 和 PublicSystemConfigController 的
@Controller('api/v1/xxx') 与 NestJS 全局前缀 api/v1 叠加,
导致实际端点为 api/v1/api/v1/xxx(双重前缀)
2. Kong 网关缺少 /api/v1/app-assets 和 /api/v1/system-config 路由
3. Flutter 端使用 /admin-service/api/v1/xxx 路径,不匹配任何 Kong 路由
修复:
- 后端:Controller 路径去掉 api/v1 前缀,由全局前缀统一添加
- Kong:新增 admin-app-assets-public 和 admin-system-config-public 路由
- Flutter:API 路径改为 /app-assets 和 /system-config/display/settings
受影响文件:
- backend/api-gateway/kong.yml (新增2条路由)
- backend/.../app-asset.controller.ts (Controller路径修正)
- backend/.../system-config.controller.ts (Controller路径修正)
- frontend/.../app_asset_service.dart (API路径修正)
- frontend/.../system_config_service.dart (API路径修正)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
cba7ff590a
commit
34ba209e44
|
|
@ -228,6 +228,14 @@ services:
|
||||||
paths:
|
paths:
|
||||||
- /api/v1/mobile/system
|
- /api/v1/mobile/system
|
||||||
strip_path: false
|
strip_path: false
|
||||||
|
- name: admin-app-assets-public
|
||||||
|
paths:
|
||||||
|
- /api/v1/app-assets
|
||||||
|
strip_path: false
|
||||||
|
- name: admin-system-config-public
|
||||||
|
paths:
|
||||||
|
- /api/v1/system-config
|
||||||
|
strip_path: false
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Presence Service - 在线状态服务
|
# Presence Service - 在线状态服务
|
||||||
|
|
|
||||||
|
|
@ -229,7 +229,7 @@ export class AdminAppAssetController {
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
||||||
@ApiTags('App Assets (Public)')
|
@ApiTags('App Assets (Public)')
|
||||||
@Controller('api/v1/app-assets')
|
@Controller('app-assets')
|
||||||
export class PublicAppAssetController {
|
export class PublicAppAssetController {
|
||||||
constructor(private readonly prisma: PrismaService) {}
|
constructor(private readonly prisma: PrismaService) {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@ export class AdminSystemConfigController {
|
||||||
* 移动端/公开系统配置控制器
|
* 移动端/公开系统配置控制器
|
||||||
* 用于 mobile-app 获取展示相关的配置
|
* 用于 mobile-app 获取展示相关的配置
|
||||||
*/
|
*/
|
||||||
@Controller('api/v1/system-config')
|
@Controller('system-config')
|
||||||
export class PublicSystemConfigController {
|
export class PublicSystemConfigController {
|
||||||
constructor(
|
constructor(
|
||||||
@Inject(SYSTEM_CONFIG_REPOSITORY)
|
@Inject(SYSTEM_CONFIG_REPOSITORY)
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,7 @@ class AppAssetService {
|
||||||
Future<AppAssetConfig?> _fetchFromApi() async {
|
Future<AppAssetConfig?> _fetchFromApi() async {
|
||||||
try {
|
try {
|
||||||
final response = await _apiClient.get(
|
final response = await _apiClient.get(
|
||||||
'/admin-service/api/v1/app-assets',
|
'/app-assets',
|
||||||
);
|
);
|
||||||
if (response.data is List) {
|
if (response.data is List) {
|
||||||
return AppAssetConfig.fromList(response.data as List);
|
return AppAssetConfig.fromList(response.data as List);
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ class SystemConfigService {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final response = await _apiClient.get(
|
final response = await _apiClient.get(
|
||||||
'/admin-service/api/v1/system-config/display/settings',
|
'/system-config/display/settings',
|
||||||
);
|
);
|
||||||
|
|
||||||
_cachedDisplaySettings = DisplaySettings.fromJson(response.data);
|
_cachedDisplaySettings = DisplaySettings.fromJson(response.data);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue