zzw
22 小时以前 1332cc511936d7dbe804921bc733c83d5e4d1400
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
106
107
108
109
110
111
112
113
114
115
116
117
118
package com.emergencyrepair.system.service;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.stereotype.Component;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
 
/**
 * Declarative catalog of the operation buttons each page exposes.
 * Menu management uses it to create MENU_TYPE=2 entries automatically.
 */
@Component
public class ButtonPermissionCatalog {
    @Data
    @AllArgsConstructor
    public static class ButtonDefinition {
        private String code;
        private String name;
    }
 
    private static final Map<String, List<ButtonDefinition>> CATALOG = new LinkedHashMap<>();
 
    static {
        put("/dashboard",
                def("dashboard:query", "\u67e5\u8be2"));
        put("/fault/report",
                def("fault:report:query", "\u67e5\u8be2"),
                def("fault:report:add", "\u65b0\u589e"),
                def("fault:report:edit", "\u4fee\u6539"),
                def("fault:report:delete", "\u5220\u9664"),
                def("fault:report:export", "\u5bfc\u51fa"),
                def("fault:report:report", "\u4e0a\u62a5"));
        put("/fault/review",
                def("fault:review:query", "\u67e5\u8be2"),
                def("fault:review:audit", "\u5ba1\u6838"),
                def("fault:review:edit", "\u4fee\u6539"),
                def("fault:review:cancel", "\u9500\u9879"));
        put("/fault/approval/cmb",
                def("fault:approval:query", "\u67e5\u8be2"),
                def("fault:approval:approve", "\u5ba1\u6279"));
        put("/fault/approval/jcc-assistant",
                def("fault:approval:query", "\u67e5\u8be2"),
                def("fault:approval:approve", "\u5ba1\u6279"));
        put("/fault/approval/jcc-director",
                def("fault:approval:query", "\u67e5\u8be2"),
                def("fault:approval:approve", "\u5ba1\u6279"));
        put("/fault/dispatch",
                def("fault:dispatch:query", "\u67e5\u8be2"),
                def("fault:dispatch:dispatch", "\u4e00\u952e\u6d3e\u5355"));
        put("/fault/completion",
                def("fault:completion:query", "\u67e5\u8be2"),
                def("fault:completion:status", "\u5b8c\u5de5\u72b6\u6001\u8bbe\u7f6e"),
                def("fault:completion:score", "rk_T\u5458\u8bc4\u5206"));
        put("/completion/report",
                def("completion:report:save", "\u4fdd\u5b58"),
                def("completion:report:submit", "\u63d0\u4ea4"));
        put("/completion/query",
                def("completion:query:query", "\u67e5\u8be2"));
        put("/acceptance/application",
                def("acceptance:application:query", "\u67e5\u8be2"),
                def("acceptance:application:apply", "\u7533\u8bf7"));
        put("/acceptance/inspector",
                def("acceptance:inspector:query", "\u67e5\u8be2"),
                def("acceptance:inspector:pass", "\u901a\u8fc7"),
                def("acceptance:inspector:reject", "\u6253\u56de"));
        put("/acceptance/leader",
                def("acceptance:leader:query", "\u67e5\u8be2"),
                def("acceptance:leader:pass", "\u901a\u8fc7"),
                def("acceptance:leader:reject", "\u6253\u56de"));
        put("/acceptance/print",
                def("acceptance:print:query", "\u67e5\u8be2"),
                def("acceptance:print:print", "\u6253\u5370"));
        put("/acceptance/rating",
                def("acceptance:rating:query", "\u67e5\u8be2"),
                def("acceptance:rating:grade", "\u8bc4\u7ea7"));
        put("/reports/overview", def("report:common:query", "\u67e5\u8be2"), def("report:common:export", "\u5bfc\u51fa"));
        put("/reports/top-equipment", def("report:common:query", "\u67e5\u8be2"), def("report:common:export", "\u5bfc\u51fa"));
        put("/reports/by-team", def("report:common:query", "\u67e5\u8be2"), def("report:common:export", "\u5bfc\u51fa"));
        put("/reports/contractors", def("report:common:query", "\u67e5\u8be2"), def("report:common:export", "\u5bfc\u51fa"));
        put("/reports/trend", def("report:common:query", "\u67e5\u8be2"), def("report:common:export", "\u5bfc\u51fa"));
        put("/system/product-tree", def("system:tree:add", "\u65b0\u589e"), def("system:tree:edit", "\u7f16\u8f91"), def("system:tree:delete", "\u5220\u9664"));
        put("/system/base-equipment", def("system:tree:add", "\u65b0\u589e"), def("system:tree:edit", "\u7f16\u8f91"), def("system:tree:delete", "\u5220\u9664"));
        put("/system/engineering-majors", def("system:major:add", "\u65b0\u589e"), def("system:major:edit", "\u7f16\u8f91"), def("system:major:delete", "\u5220\u9664"));
        put("/system/team-majors", def("system:major:add", "\u65b0\u589e"), def("system:major:edit", "\u7f16\u8f91"), def("system:major:delete", "\u5220\u9664"));
        put("/system/users", def("system:users:query", "\u67e5\u8be2"), def("system:users:assign", "\u89d2\u8272\u6388\u6743"));
        put("/system/roles", def("system:roles:add", "\u65b0\u589e"), def("system:roles:edit", "\u7f16\u8f91"), def("system:roles:delete", "\u5220\u9664"), def("system:roles:assign", "\u7528\u6237\u8bbe\u7f6e"), def("system:roles:permission", "\u6743\u9650\u8bbe\u7f6e"));
        put("/system/menus", def("system:menus:add", "\u65b0\u589e"), def("system:menus:edit", "\u7f16\u8f91"), def("system:menus:delete", "\u5220\u9664"), def("system:menus:buttons", "\u83dc\u5355\u6309\u94ae\u540c\u6b65"));
        put("/system/login-logs", def("system:login-logs:query", "\u67e5\u8be2"), def("system:login-logs:export", "\u5bfc\u51fa"));
        put("/system/operation-logs", def("system:operation-logs:query", "\u67e5\u8be2"), def("system:operation-logs:export", "\u5bfc\u51fa"));
        put("/system/error-logs", def("system:error-logs:query", "\u67e5\u8be2"), def("system:error-logs:detail", "\u8be6\u60c5"));
    }
 
    private static void put(String url, ButtonDefinition... definitions) {
        List<ButtonDefinition> list = new ArrayList<>();
        Collections.addAll(list, definitions);
        CATALOG.put(url, Collections.unmodifiableList(list));
    }
 
    private static ButtonDefinition def(String code, String name) {
        return new ButtonDefinition(code, name);
    }
 
    public List<ButtonDefinition> buttonsFor(String url) {
        if (url == null) {
            return Collections.emptyList();
        }
        return CATALOG.getOrDefault(url, Collections.emptyList());
    }
 
    public Map<String, List<ButtonDefinition>> catalog() {
        return CATALOG;
    }
}