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/organization", def("system:organization:query", "\u67e5\u8be2"), def("system:organization:ext", "\u6269\u5c55\u5c5e\u6027\u8bbe\u7f6e"));
|
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"), def("system:users:ext", "\u6269\u5c55\u5c5e\u6027\u8bbe\u7f6e"));
|
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;
|
}
|
}
|