UserRole.java
2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package com.aigeo.common.enums;
import lombok.Getter;
/**
* 用户角色枚举
* 对应数据库字段:ai_users.role
*
* 角色权限说明:
* - ADMIN: 超级管理员,拥有所有权限,包括用户管理、系统配置等
* - MANAGER: 管理者,可管理内容和用户,但不能修改系统级设置
* - EDITOR: 编辑者,可创建、编辑、发布内容,不能管理用户
* - VIEWER: 观察者,只能查看内容,不能编辑或创建
*
* @author AIGEO Team
* @since 1.0.0
*/
@Getter
public enum UserRole {
/**
* 超级管理员 - 拥有所有权限
* 可以管理用户、修改公司设置、查看所有数据
*/
ADMIN("admin", "超级管理员", 4),
/**
* 管理者 - 内容和用户管理权限
* 可以管理用户角色、查看统计数据、管理所有内容
*/
MANAGER("manager", "管理者", 3),
/**
* 编辑者 - 内容创建和编辑权限
* 可以创建文章、落地页、网站,管理自己的内容
*/
EDITOR("editor", "编辑者", 2),
/**
* 观察者 - 只读权限
* 只能查看内容和统计数据,不能进行任何修改操作
*/
VIEWER("viewer", "观察者", 1);
/**
* 数据库存储值
*/
private final String code;
/**
* 显示名称
*/
private final String displayName;
/**
* 权限级别(数字越大权限越高)
*/
private final Integer level;
UserRole(String code, String displayName, Integer level) {
this.code = code;
this.displayName = displayName;
this.level = level;
}
/**
* 根据代码获取枚举
*/
public static UserRole fromCode(String code) {
for (UserRole role : values()) {
if (role.code.equals(code)) {
return role;
}
}
throw new IllegalArgumentException("未知的用户角色代码: " + code);
}
/**
* 检查是否有管理权限
*/
public boolean hasManagementPermission() {
return this == ADMIN || this == MANAGER;
}
/**
* 检查是否有编辑权限
*/
public boolean hasEditPermission() {
return this.level >= EDITOR.level;
}
/**
* 检查是否有系统管理权限
*/
public boolean hasSystemPermission() {
return this == ADMIN;
}
/**
* 检查权限是否高于指定角色
*/
public boolean isHigherThan(UserRole other) {
return this.level > other.level;
}
}