feat: 完成sys模块迁移,对齐PHP/Java框架
- 重构sys模块架构,严格按admin/api/core分层 - 对齐所有sys实体与数据库表结构 - 实现完整的adminapi控制器,匹配PHP/Java契约 - 修复依赖注入问题,确保服务正确注册 - 添加自动迁移工具和契约验证 - 完善多租户支持和审计功能 - 统一命名规范,与PHP业务逻辑保持一致
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
import {
|
||||
Controller,
|
||||
Get,
|
||||
Param,
|
||||
Post,
|
||||
Put,
|
||||
Delete,
|
||||
Body,
|
||||
} from '@nestjs/common';
|
||||
import { ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||
import { SysMenuService } from '../../services/admin/sysMenu.service';
|
||||
import { SysMenu } from '../../entity/sysMenu.entity';
|
||||
|
||||
@ApiTags('系统菜单')
|
||||
@Controller('adminapi/sys/menu')
|
||||
export class SysMenuController {
|
||||
constructor(private readonly sysMenuService: SysMenuService) {}
|
||||
|
||||
@Get(':type')
|
||||
@ApiOperation({ summary: '获取全部菜单(按应用类型)' })
|
||||
async getMenus(@Param('type') type: string): Promise<SysMenu[]> {
|
||||
return this.sysMenuService.list(type);
|
||||
}
|
||||
|
||||
@Get(':app_type/info/:menu_key')
|
||||
@ApiOperation({ summary: '获取菜单信息' })
|
||||
getMenuInfo(
|
||||
@Param('app_type') appType: string,
|
||||
@Param('menu_key') menuKey: string,
|
||||
): Promise<SysMenu | null> {
|
||||
return this.sysMenuService.findOne(appType, menuKey);
|
||||
}
|
||||
|
||||
@Post()
|
||||
@ApiOperation({ summary: '添加菜单' })
|
||||
addMenu(@Body() payload: Partial<SysMenu>) {
|
||||
return this.sysMenuService.createByKey(payload);
|
||||
}
|
||||
|
||||
@Put(':app_type/:menu_key')
|
||||
@ApiOperation({ summary: '更新菜单' })
|
||||
editMenu(
|
||||
@Param('app_type') appType: string,
|
||||
@Param('menu_key') menuKey: string,
|
||||
@Body() payload: Partial<SysMenu>,
|
||||
) {
|
||||
return this.sysMenuService.updateByKey(appType, menuKey, payload);
|
||||
}
|
||||
|
||||
@Delete(':app_type/:menu_key')
|
||||
@ApiOperation({ summary: '删除菜单' })
|
||||
deleteMenu(
|
||||
@Param('app_type') appType: string,
|
||||
@Param('menu_key') menuKey: string,
|
||||
) {
|
||||
return this.sysMenuService.deleteByKey(appType, menuKey);
|
||||
}
|
||||
|
||||
@Get('system_menu')
|
||||
@ApiOperation({ summary: '获取系统菜单' })
|
||||
async getSystemMenu(): Promise<SysMenu[]> {
|
||||
return this.sysMenuService.list('system');
|
||||
}
|
||||
|
||||
@Get('addon_menu/:key')
|
||||
@ApiOperation({ summary: '获取应用菜单' })
|
||||
async getAddonMenu(@Param('key') key: string): Promise<SysMenu[]> {
|
||||
return this.sysMenuService.list(key);
|
||||
}
|
||||
|
||||
@Get('dir/:key')
|
||||
@ApiOperation({ summary: '获取类型为目录的菜单' })
|
||||
getDirMenus(@Param('key') key: string): Promise<SysMenu[]> {
|
||||
return this.sysMenuService.listDir(key || 'system');
|
||||
}
|
||||
|
||||
// no tree route in contract
|
||||
}
|
||||
Reference in New Issue
Block a user