- 重构sys模块架构,严格按admin/api/core分层 - 对齐所有sys实体与数据库表结构 - 实现完整的adminapi控制器,匹配PHP/Java契约 - 修复依赖注入问题,确保服务正确注册 - 添加自动迁移工具和契约验证 - 完善多租户支持和审计功能 - 统一命名规范,与PHP业务逻辑保持一致
79 lines
2.2 KiB
TypeScript
79 lines
2.2 KiB
TypeScript
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
|
|
}
|