Files
wwjcloud-nest-v1/wwjcloud/src/common/sys/controllers/adminapi/sysMenu.controller.ts
万物街 127a4db1e3 feat: 完成sys模块迁移,对齐PHP/Java框架
- 重构sys模块架构,严格按admin/api/core分层
- 对齐所有sys实体与数据库表结构
- 实现完整的adminapi控制器,匹配PHP/Java契约
- 修复依赖注入问题,确保服务正确注册
- 添加自动迁移工具和契约验证
- 完善多租户支持和审计功能
- 统一命名规范,与PHP业务逻辑保持一致
2025-09-21 21:29:28 +08:00

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
}