refactor: 统一代码风格并迁移至 ESLint 新配置
style(backend): 格式化模型文件代码 style(frontend): 调整组件代码格式 chore: 删除旧 ESLint 配置并添加新配置 refactor(backend): 重构模型定义语法 style: 统一箭头函数和对象属性简写
This commit is contained in:
+109
-67
@@ -32,7 +32,10 @@ router.get('/', authMiddleware, async (req, res) => {
|
||||
where,
|
||||
limit,
|
||||
offset,
|
||||
order: [['sort', 'ASC'], ['createdAt', 'DESC']]
|
||||
order: [
|
||||
['sort', 'ASC'],
|
||||
['createdAt', 'DESC'],
|
||||
],
|
||||
});
|
||||
|
||||
res.json({
|
||||
@@ -41,14 +44,14 @@ router.get('/', authMiddleware, async (req, res) => {
|
||||
total: count,
|
||||
page: parseInt(page),
|
||||
pageSize: parseInt(pageSize),
|
||||
roles
|
||||
}
|
||||
roles,
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('获取角色列表错误:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: '获取角色列表失败'
|
||||
message: '获取角色列表失败',
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -57,18 +60,18 @@ router.get('/all', authMiddleware, async (req, res) => {
|
||||
try {
|
||||
const roles = await Role.findAll({
|
||||
where: { status: 'active' },
|
||||
order: [['sort', 'ASC']]
|
||||
order: [['sort', 'ASC']],
|
||||
});
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: roles
|
||||
data: roles,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('获取所有角色错误:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: '获取角色列表失败'
|
||||
message: '获取角色列表失败',
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -80,13 +83,13 @@ router.get('/:roleId', authMiddleware, async (req, res) => {
|
||||
if (!role) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
message: '角色不存在'
|
||||
message: '角色不存在',
|
||||
});
|
||||
}
|
||||
|
||||
const permissions = await Permission.findAll({
|
||||
where: { status: 'active' },
|
||||
order: [['sort', 'ASC']]
|
||||
order: [['sort', 'ASC']],
|
||||
});
|
||||
|
||||
res.json({
|
||||
@@ -94,14 +97,14 @@ router.get('/:roleId', authMiddleware, async (req, res) => {
|
||||
data: {
|
||||
role,
|
||||
permissions,
|
||||
rolePermissions: role.permissions || []
|
||||
}
|
||||
rolePermissions: role.permissions || [],
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('获取角色详情错误:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: '获取角色详情失败'
|
||||
message: '获取角色详情失败',
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -113,7 +116,7 @@ router.post('/', authMiddleware, async (req, res) => {
|
||||
if (!roleName || !roleCode) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: '角色名称和角色编码不能为空'
|
||||
message: '角色名称和角色编码不能为空',
|
||||
});
|
||||
}
|
||||
|
||||
@@ -121,7 +124,7 @@ router.post('/', authMiddleware, async (req, res) => {
|
||||
if (existingRole) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: '角色编码已存在'
|
||||
message: '角色编码已存在',
|
||||
});
|
||||
}
|
||||
|
||||
@@ -132,31 +135,33 @@ router.post('/', authMiddleware, async (req, res) => {
|
||||
description,
|
||||
permissions: permissions || [],
|
||||
status: status || 'active',
|
||||
sort: sort || 0
|
||||
sort: sort || 0,
|
||||
});
|
||||
|
||||
const permissionNames = permissions && permissions.length > 0
|
||||
? permissions.join('、')
|
||||
: '无';
|
||||
const permissionNames = permissions && permissions.length > 0 ? permissions.join('、') : '无';
|
||||
|
||||
await logRoleOperation('create', `创建角色【${roleName}】(编码:${roleCode},权限:${permissionNames})`, {
|
||||
targetId: role.roleId,
|
||||
targetName: roleName,
|
||||
afterState: role.toJSON(),
|
||||
req,
|
||||
metadata: { roleCode, permissions, permissionNames }
|
||||
});
|
||||
await logRoleOperation(
|
||||
'create',
|
||||
`创建角色【${roleName}】(编码:${roleCode},权限:${permissionNames})`,
|
||||
{
|
||||
targetId: role.roleId,
|
||||
targetName: roleName,
|
||||
afterState: role.toJSON(),
|
||||
req,
|
||||
metadata: { roleCode, permissions, permissionNames },
|
||||
}
|
||||
);
|
||||
|
||||
res.status(201).json({
|
||||
success: true,
|
||||
message: '创建成功',
|
||||
data: role
|
||||
data: role,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('创建角色错误:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: '创建角色失败'
|
||||
message: '创建角色失败',
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -169,17 +174,27 @@ router.put('/:roleId', authMiddleware, async (req, res) => {
|
||||
if (!role) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
message: '角色不存在'
|
||||
message: '角色不存在',
|
||||
});
|
||||
}
|
||||
|
||||
const beforeState = role.toJSON();
|
||||
|
||||
if (roleName !== undefined) role.roleName = roleName;
|
||||
if (description !== undefined) role.description = description;
|
||||
if (permissions !== undefined) role.permissions = permissions;
|
||||
if (status !== undefined) role.status = status;
|
||||
if (sort !== undefined) role.sort = sort;
|
||||
if (roleName !== undefined) {
|
||||
role.roleName = roleName;
|
||||
}
|
||||
if (description !== undefined) {
|
||||
role.description = description;
|
||||
}
|
||||
if (permissions !== undefined) {
|
||||
role.permissions = permissions;
|
||||
}
|
||||
if (status !== undefined) {
|
||||
role.status = status;
|
||||
}
|
||||
if (sort !== undefined) {
|
||||
role.sort = sort;
|
||||
}
|
||||
|
||||
await role.save();
|
||||
|
||||
@@ -201,21 +216,33 @@ router.put('/:roleId', authMiddleware, async (req, res) => {
|
||||
}
|
||||
if (status !== undefined && beforeState.status !== status) {
|
||||
const statusText = { active: '启用', inactive: '禁用' };
|
||||
changedFields.status = { from: beforeState.status, to: status, fromText: statusText[beforeState.status], toText: statusText[status] };
|
||||
changedFields.status = {
|
||||
from: beforeState.status,
|
||||
to: status,
|
||||
fromText: statusText[beforeState.status],
|
||||
toText: statusText[status],
|
||||
};
|
||||
}
|
||||
|
||||
const changeDetails = Object.entries(changedFields).map(([field, values]) => {
|
||||
const fieldNames = { roleName: '角色名称', description: '描述', permissions: '权限', status: '状态' };
|
||||
const displayName = fieldNames[field] || field;
|
||||
const changeDetails = Object.entries(changedFields)
|
||||
.map(([field, values]) => {
|
||||
const fieldNames = {
|
||||
roleName: '角色名称',
|
||||
description: '描述',
|
||||
permissions: '权限',
|
||||
status: '状态',
|
||||
};
|
||||
const displayName = fieldNames[field] || field;
|
||||
|
||||
if (field === 'permissions') {
|
||||
return `权限: ${(values.from || []).join('、') || '无'} → ${(values.to || []).join('、') || '无'}`;
|
||||
}
|
||||
if (field === 'status') {
|
||||
return `状态: ${values.fromText} → ${values.toText}`;
|
||||
}
|
||||
return `${displayName}: ${values.from ?? '空'} → ${values.to ?? '空'}`;
|
||||
}).join(';');
|
||||
if (field === 'permissions') {
|
||||
return `权限: ${(values.from || []).join('、') || '无'} → ${(values.to || []).join('、') || '无'}`;
|
||||
}
|
||||
if (field === 'status') {
|
||||
return `状态: ${values.fromText} → ${values.toText}`;
|
||||
}
|
||||
return `${displayName}: ${values.from ?? '空'} → ${values.to ?? '空'}`;
|
||||
})
|
||||
.join(';');
|
||||
|
||||
const updateDesc = changeDetails
|
||||
? `更新角色【${role.roleName}】:${changeDetails}`
|
||||
@@ -227,19 +254,23 @@ router.put('/:roleId', authMiddleware, async (req, res) => {
|
||||
beforeState,
|
||||
afterState,
|
||||
req,
|
||||
metadata: { changedFields, oldRoleName: beforeState.roleName, oldPermissions: beforeState.permissions }
|
||||
metadata: {
|
||||
changedFields,
|
||||
oldRoleName: beforeState.roleName,
|
||||
oldPermissions: beforeState.permissions,
|
||||
},
|
||||
});
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
message: '更新成功',
|
||||
data: role
|
||||
data: role,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('更新角色错误:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: '更新角色失败'
|
||||
message: '更新角色失败',
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -251,14 +282,14 @@ router.delete('/:roleId', authMiddleware, async (req, res) => {
|
||||
if (!role) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
message: '角色不存在'
|
||||
message: '角色不存在',
|
||||
});
|
||||
}
|
||||
|
||||
if (role.roleCode === 'admin') {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: '不能删除管理员角色'
|
||||
message: '不能删除管理员角色',
|
||||
});
|
||||
}
|
||||
|
||||
@@ -266,7 +297,7 @@ router.delete('/:roleId', authMiddleware, async (req, res) => {
|
||||
if (userCount > 0) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: '该角色下有用户,不能删除'
|
||||
message: '该角色下有用户,不能删除',
|
||||
});
|
||||
}
|
||||
|
||||
@@ -276,23 +307,27 @@ router.delete('/:roleId', authMiddleware, async (req, res) => {
|
||||
|
||||
await role.destroy();
|
||||
|
||||
await logRoleOperation('delete', `删除角色【${roleName}】(编码:${roleCode},权限:${(role.permissions || []).join('、') || '无'})`, {
|
||||
targetId: req.params.roleId,
|
||||
targetName: roleName,
|
||||
beforeState,
|
||||
req,
|
||||
metadata: { roleCode, userCount, permissions: role.permissions }
|
||||
});
|
||||
await logRoleOperation(
|
||||
'delete',
|
||||
`删除角色【${roleName}】(编码:${roleCode},权限:${(role.permissions || []).join('、') || '无'})`,
|
||||
{
|
||||
targetId: req.params.roleId,
|
||||
targetName: roleName,
|
||||
beforeState,
|
||||
req,
|
||||
metadata: { roleCode, userCount, permissions: role.permissions },
|
||||
}
|
||||
);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
message: '删除成功'
|
||||
message: '删除成功',
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('删除角色错误:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: '删除角色失败'
|
||||
message: '删除角色失败',
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -307,16 +342,23 @@ router.post('/init-roles', async (req, res) => {
|
||||
description: '系统管理员,拥有所有权限',
|
||||
permissions: ['*'],
|
||||
status: 'active',
|
||||
sort: 1
|
||||
sort: 1,
|
||||
},
|
||||
{
|
||||
roleId: 'role_operator',
|
||||
roleName: '运维人员',
|
||||
roleCode: 'operator',
|
||||
description: '负责日常运维操作',
|
||||
permissions: ['devices:read', 'devices:write', 'racks:read', 'rooms:read', 'consumables:read', 'consumables:write'],
|
||||
permissions: [
|
||||
'devices:read',
|
||||
'devices:write',
|
||||
'racks:read',
|
||||
'rooms:read',
|
||||
'consumables:read',
|
||||
'consumables:write',
|
||||
],
|
||||
status: 'active',
|
||||
sort: 2
|
||||
sort: 2,
|
||||
},
|
||||
{
|
||||
roleId: 'role_viewer',
|
||||
@@ -325,8 +367,8 @@ router.post('/init-roles', async (req, res) => {
|
||||
description: '仅能查看数据',
|
||||
permissions: ['devices:read', 'racks:read', 'rooms:read', 'consumables:read'],
|
||||
status: 'active',
|
||||
sort: 3
|
||||
}
|
||||
sort: 3,
|
||||
},
|
||||
];
|
||||
|
||||
for (const roleData of defaultRoles) {
|
||||
@@ -335,13 +377,13 @@ router.post('/init-roles', async (req, res) => {
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
message: '初始化角色成功'
|
||||
message: '初始化角色成功',
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('初始化角色错误:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: '初始化角色失败'
|
||||
message: '初始化角色失败',
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user