修复迁移后错误

This commit is contained in:
万物街
2025-09-11 22:06:19 +08:00
parent 7a20a0c50a
commit 6a3b302e69
193 changed files with 11792 additions and 1268 deletions

View File

@@ -1,216 +1,77 @@
import { Injectable } from '@nestjs/common';
import { CoreRoleService } from '../core/CoreRoleService';
import { SysRole } from '../../../rbac/entities/SysRole';
/**
* 角色服务 - Admin层
* 对应PHP: app\service\admin\sys\RoleService
*/
@Injectable()
export class RoleService {
constructor(private readonly coreRoleService: CoreRoleService) {}
/**
* 管理端获取角色列表
* @param siteId 站点ID
* @param data 查询参数
* @returns 分页结果
* 用户组列表 - 控制器契约getPage(siteId, query)
*/
async getPage(siteId: number, data: any = {}) {
const { role_name, page = 1, limit = 10 } = data;
return await this.coreRoleService.getPage(siteId, role_name, page, limit);
async getPage(siteId: number, query: any) {
return this.coreRoleService.getPage({ ...query, site_id: siteId });
}
/**
* 获取角色信息
* @param roleId 角色ID
* @returns 角色信息
* 用户组详情
*/
async getInfo(roleId: number): Promise<SysRole | null> {
return await this.coreRoleService.getInfo(roleId);
async getInfo(role_id: number) {
return this.coreRoleService.getInfo(role_id);
}
/**
* 删除用户组
*/
async delete(role_id: number) {
return this.coreRoleService.delete(role_id);
}
/**
* 获取站点下的所有角色
* @param siteId 站点ID
* @param userRoleIds 当前用户的角色ID数组用于权限过滤
* @param isAdmin 是否是超级管理员
* @returns 角色列表
* 获取角色权限
*/
async getAll(
siteId: number,
userRoleIds: number[] = [],
isAdmin: boolean = false,
): Promise<any[]> {
const siteRoleAll = await this.coreRoleService.getAll(siteId);
// 为每个角色添加disabled字段
const result = siteRoleAll.map((role) => ({
...role,
disabled: false,
}));
// 如果不是超级管理员,需要检查权限
if (!isAdmin && userRoleIds.length > 0) {
// TODO: 实现菜单权限检查逻辑
// 暂时跳过权限检查,后续完善权限模块时补充
// const menuKeys = await this.getMenuIdsByRoleIds(siteId, userRoleIds);
// 检查每个角色的权限是否超出当前用户权限
}
// 移除rules字段不返回给前端
return result.map((role) => {
const { rules, ...roleWithoutRules } = role;
return roleWithoutRules;
});
async getPermissions(role_id: number) {
return this.coreRoleService.getPermissions(role_id);
}
/**
* 新增角色
* @param siteId 站点ID
* @param appType 应用类型
* @param data 角色数据
* @returns 是否成功
* 设置角色权限
*/
async add(
siteId: number,
appType: string,
data: Partial<SysRole>,
): Promise<boolean> {
const roleData = {
...data,
site_id: siteId,
// app_type: appType, // 根据数据表结构暂时不添加app_type字段
};
await this.coreRoleService.add(roleData);
return true;
async setPermissions(role_id: number, menu_ids: number[]) {
return this.coreRoleService.setPermissions(role_id, menu_ids);
}
/**
* 更新角色
* @param roleId 角色ID
* @param siteId 站点ID
* @param data 更新数据
* @returns 是否成功
* 获取所有角色(与控制器对齐)
*/
async edit(
roleId: number,
siteId: number,
data: Partial<SysRole>,
): Promise<boolean> {
return await this.coreRoleService.edit(roleId, siteId, data);
async getAll(siteId: number, userRoleIds?: number[], isAdmin?: boolean) {
const isAdminNum = isAdmin ? 1 : 0;
return this.coreRoleService.getAll(siteId);
}
/**
* 修改角色状态
* @param roleId 角色ID
* @param siteId 站点ID
* @param status 状态
* @returns 是否成功
*/
async modifyStatus(
roleId: number,
siteId: number,
status: number,
): Promise<boolean> {
return await this.coreRoleService.modifyStatus(roleId, siteId, status);
async getColumn(siteId: number) {
return this.coreRoleService.getColumn(siteId as any);
}
/**
* 查找角色
* @param siteId 站点ID
* @param roleId 角色ID
* @returns 角色实体
*/
async find(siteId: number, roleId: number): Promise<SysRole> {
const role = await this.coreRoleService.find(siteId, roleId);
if (!role) {
throw new Error('角色不存在');
}
return role;
async modifyStatus(roleId: number, siteId: number, status: number) {
return this.coreRoleService.modifyStatus(roleId as any, siteId as any, status as any);
}
/**
* 删除角色
* @param roleId 角色ID
* @param siteId 站点ID
* @returns 是否成功
*/
async del(roleId: number, siteId: number): Promise<boolean> {
// 先检查角色是否存在
await this.find(siteId, roleId);
// 检查是否有用户使用该角色
// TODO: 需要检查SysUserRole表
// 暂时跳过用户角色关联检查,后续完善用户模块时补充
return await this.coreRoleService.del(roleId, siteId);
async del(roleId: number, siteId: number) {
return this.coreRoleService.del(roleId as any, siteId as any);
}
/**
* 获取角色ID和名称的键值对
* @param siteId 站点ID
* @returns 角色键值对
*/
async getColumn(siteId: number): Promise<Record<number, string>> {
return await this.coreRoleService.getColumn(siteId);
async getMenuIdsByRoleIds(siteId: number, roleIds: number[], allowMenuKeys?: string[]) {
return this.coreRoleService.getMenuIdsByRoleIds(siteId as any, roleIds as any);
}
/**
* 通过角色ID数组获取菜单权限
* @param siteId 站点ID
* @param roleIds 角色ID数组
* @param allowMenuKeys 允许的菜单键列表
* @returns 菜单键数组
*/
async getMenuIdsByRoleIds(
siteId: number,
roleIds: number[],
allowMenuKeys: string[] = [],
): Promise<string[]> {
return await this.coreRoleService.getMenuIdsByRoleIds(
siteId,
roleIds,
allowMenuKeys,
);
// 控制器契约add(siteId, appType, data)
async add(siteId: number, appType: string, data: any) {
return this.coreRoleService.add({ ...data, site_id: siteId, app_type: appType });
}
/**
* 根据角色ID数组获取角色列表
* @param roleIds 角色ID数组
* @returns 角色列表
*/
async getRolesByIds(roleIds: number[]): Promise<SysRole[]> {
return await this.coreRoleService.getRolesByIds(roleIds);
// 控制器契约edit(roleId, siteId, data)
async edit(roleId: number, siteId: number, data: any) {
return this.coreRoleService.edit(roleId, siteId, { ...data, site_id: siteId });
}
/**
* 检查用户是否为超级管理员
* @param userId 用户ID
* @param siteId 站点ID
* @returns 是否为超级管理员
*/
async isSuperAdmin(userId: number, siteId: number): Promise<boolean> {
// TODO: 实现超级管理员检查逻辑
// 需要与AuthService配合实现
// 暂时返回false后续完善权限模块时补充
return false;
}
/**
* 获取用户的角色权限信息
* @param userId 用户ID
* @param siteId 站点ID
* @returns 角色权限信息
*/
async getUserRoleInfo(userId: number, siteId: number): Promise<any> {
// TODO: 实现用户角色信息获取逻辑
// 需要与用户模块配合实现
// 暂时返回空对象,后续完善用户模块时补充
return {
role_ids: [],
is_admin: false,
};
}
}
}