├── .gitignore
├── LICENSE
├── README.md
├── pom.xml
├── zhcc-common
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── hu
│ └── zhcc
│ └── common
│ ├── cache
│ └── CacheManager.java
│ ├── entity
│ ├── Page.java
│ ├── PageRequest.java
│ └── Result.java
│ ├── exception
│ ├── CustomException.java
│ ├── DAOException.java
│ ├── ExceptionEnum.java
│ ├── GlobalCustomRestExceptionHandler.java
│ └── ServiceException.java
│ ├── filter
│ └── CORSFilter.java
│ └── utils
│ ├── DateTimeUtils.java
│ ├── PropertiesFileUtil.java
│ ├── RedisUtil.java
│ └── clearMaven.py
├── zhcc-shiro
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── hu
│ │ │ └── zhcc
│ │ │ └── shiro
│ │ │ ├── controller
│ │ │ ├── AuthController.java
│ │ │ ├── BaseController.java
│ │ │ ├── HomeController.java
│ │ │ ├── ResourceController.java
│ │ │ ├── RoleController.java
│ │ │ ├── RouterController.java
│ │ │ └── UserController.java
│ │ │ ├── dao
│ │ │ ├── ResourceDAO.java
│ │ │ ├── ResourcePermissionDAO.java
│ │ │ ├── RoleDAO.java
│ │ │ ├── RouterDAO.java
│ │ │ ├── RouterPermissionDAO.java
│ │ │ ├── UserDAO.java
│ │ │ └── UserRoleDAO.java
│ │ │ ├── entity
│ │ │ ├── bo
│ │ │ │ ├── Resource.java
│ │ │ │ ├── Role.java
│ │ │ │ ├── Router.java
│ │ │ │ └── User.java
│ │ │ ├── dto
│ │ │ │ ├── AvailableResourceDTO.java
│ │ │ │ ├── PermissionDTO.java
│ │ │ │ ├── ResourceDTO.java
│ │ │ │ ├── ResourcePermissionDTO.java
│ │ │ │ ├── RoleDTO.java
│ │ │ │ ├── RouterDTO.java
│ │ │ │ └── UserDTO.java
│ │ │ └── vo
│ │ │ │ ├── AvailableResourceListVO.java
│ │ │ │ ├── ResourceDetailVO.java
│ │ │ │ ├── ResourceListVO.java
│ │ │ │ ├── ResourcePermissionVO.java
│ │ │ │ ├── RoleDetailVO.java
│ │ │ │ ├── RoleListVO.java
│ │ │ │ ├── RouterDetailVO.java
│ │ │ │ ├── RouterListVO.java
│ │ │ │ ├── RouterNavVO.java
│ │ │ │ ├── UserDetailVO.java
│ │ │ │ └── UserListVO.java
│ │ │ ├── security
│ │ │ ├── ChainDefinitionSectionMetaSource.java
│ │ │ ├── JwtAuthcFilter.java
│ │ │ ├── JwtDefaultSubjectFactory.java
│ │ │ ├── JwtRealm.java
│ │ │ ├── JwtToken.java
│ │ │ └── RestfulPermissionFilter.java
│ │ │ ├── service
│ │ │ ├── ResourceService.java
│ │ │ ├── ResourceServiceImpl.java
│ │ │ ├── RoleService.java
│ │ │ ├── RoleServiceImpl.java
│ │ │ ├── RouterService.java
│ │ │ ├── RouterServiceImpl.java
│ │ │ ├── UserService.java
│ │ │ └── UserServiceImpl.java
│ │ │ └── utils
│ │ │ └── JwtUtils.java
│ └── resources
│ │ └── mapper.com.hu.zhcc.shiro.dao
│ │ ├── ResourceDAO.xml
│ │ ├── ResourcePermissionDAO.xml
│ │ ├── RoleDAO.xml
│ │ ├── RouterDAO.xml
│ │ ├── RouterPermissionDAO.xml
│ │ ├── UserDAO.xml
│ │ └── UserRoleDAO.xml
│ └── test
│ ├── java
│ └── com
│ │ └── hu
│ │ └── TestParameter8.java
│ └── resources
│ └── spring-test-mybatis.xml
├── zhcc-test
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── hu
│ │ └── zhcc
│ │ └── BaseJunit4Test.java
│ └── resources
│ ├── db.properties
│ ├── logback.xml
│ ├── mybatis
│ └── mybatis-config.xml
│ └── spring
│ ├── applicationContext-jedis.xml
│ ├── applicationContext.xml
│ └── spring-mybatis.xml
└── zhcc-web
├── .gitignore
├── Dockerfile
├── pom.xml
└── src
└── main
├── resources
├── db.properties
├── logback.xml
├── mybatis
│ └── mybatis-config.xml
└── spring
│ ├── applicationContext-jedis.xml
│ ├── applicationContext.xml
│ ├── spring-beans.xml
│ ├── spring-mvc.xml
│ ├── spring-mybatis.xml
│ └── spring-shiro.xml
└── webapp
├── WEB-INF
└── web.xml
├── index.html
├── sql
└── zhcc.sql
└── static
├── css
├── app.bba252ef599858dbecf587e65afe3e37.css
└── app.bba252ef599858dbecf587e65afe3e37.css.map
├── fonts
└── element-icons.6f0a763.ttf
├── img
└── personal_avatar.67a7159.png
└── js
├── 0.db58244402cde7c6d910.js
├── 0.db58244402cde7c6d910.js.map
├── 1.d291e6bff81b0d67d3f3.js
├── 1.d291e6bff81b0d67d3f3.js.map
├── app.3d68ad0c82fb017b0ed3.js
├── app.3d68ad0c82fb017b0ed3.js.map
├── manifest.bb527afcf3012cd9ef8e.js
├── manifest.bb527afcf3012cd9ef8e.js.map
├── vendor.9585d0402147dbec02e5.js
└── vendor.9585d0402147dbec02e5.js.map
/.gitignore:
--------------------------------------------------------------------------------
1 | # DIY
2 | target/
3 |
4 | # svn
5 | .svn/
6 | # Linux System
7 | *~
8 |
9 | # KDE directory preferences
10 | .directory
11 |
12 | # Linux trash folder which might appear on any partition or disk
13 | .Trash-*
14 |
15 | # Windows System
16 | # Windows image file caches
17 | Thumbs.db
18 | ehthumbs.db
19 |
20 | # Folder config file
21 | Desktop.ini
22 |
23 | # Recycle Bin used on file shares
24 | $RECYCLE.BIN/
25 |
26 | # Windows Installer files
27 | *.cab
28 | *.msi
29 | *.msm
30 | *.msp
31 |
32 | # Windows shortcuts
33 | *.lnk
34 |
35 | # OSX System
36 | .DS_Store
37 | .AppleDouble
38 | .LSOverride
39 |
40 | # Icon must end with two \r
41 | Icon
42 |
43 |
44 | # Thumbnails
45 | ._*
46 |
47 | # Files that might appear in the root of a volume
48 | .DocumentRevisions-V100
49 | .fseventsd
50 | .Spotlight-V100
51 | .TemporaryItems
52 | .Trashes
53 | .VolumeIcon.icns
54 |
55 | # Directories potentially created on remote AFP share
56 | .AppleDB
57 | .AppleDesktop
58 | Network Trash Folder
59 | Temporary Items
60 | .apdisk
61 |
62 | # Eclipse
63 | *.pydevproject
64 | .metadata
65 | .gradle
66 | bin/
67 | tmp/
68 | *.tmp
69 | *.bak
70 | *.swp
71 | *~.nib
72 | local.properties
73 | .settings/
74 | .loadpath
75 |
76 | # Eclipse Core
77 | .project
78 |
79 | # External tool builders
80 | .externalToolBuilders/
81 |
82 | # Locally stored "Eclipse launch configurations"
83 | *.launch
84 |
85 | # CDT-specific
86 | .cproject
87 |
88 | # JDT-specific (Eclipse Java Development Tools)
89 | .classpath
90 |
91 | # Java annotation processor (APT)
92 | .factorypath
93 | # PDT-specific
94 | .buildpath
95 | # sbteclipse plugin
96 | .target
97 | # TeXlipse plugin
98 | .texlipse
99 | # JetBrains
100 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
101 | *.iml
102 | ## Directory-based project format:
103 | .idea/
104 | # if you remove the above rule, at least ignore the following:
105 | # User-specific stuff:
106 | # .idea/workspace.xml
107 | # .idea/tasks.xml
108 | # .idea/dictionaries
109 | # Sensitive or high-churn files:
110 | # .idea/dataSources.ids
111 | # .idea/dataSources.xml
112 | # .idea/sqlDataSources.xml
113 | # .idea/dynamic.xml
114 | # .idea/uiDesigner.xml
115 | # Gradle:
116 | # .idea/gradle.xml
117 | # .idea/libraries
118 | # Mongo Explorer plugin:
119 | # .idea/mongoSettings.xml
120 | ## File-based project format:
121 | *.ipr
122 | *.iws
123 | ## Plugin-specific files:
124 | # IntelliJ
125 | /out/
126 | # mpeltonen/sbt-idea plugin
127 | .idea_modules/
128 | # JIRA plugin
129 | atlassian-ide-plugin.xml
130 | # Crashlytics plugin (for Android Studio and IntelliJ)
131 | com_crashlytics_export_strings.xml
132 | crashlytics.properties
133 | crashlytics-build.properties
134 | # JAVA
135 |
136 | *.class
137 | # Mobile Tools for Java (J2ME)
138 | .mtj.tmp/
139 | # Package Files #
140 | *.jar
141 | *.war
142 | *.ear
143 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
144 | hs_err_pid*
145 | #Maven
146 | target/
147 | **/target/
148 | pom.xml.tag
149 | pom.xml.releaseBackup
150 | pom.xml.versionsBackup
151 | pom.xml.next
152 | release.properties
153 | dependency-reduced-pom.xml
154 | buildNumber.properties
155 | .mvn/timing.properties
156 | logs/
157 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | com.hu.zhcc
7 | zhcc-server
8 | 1.0
9 | pom
10 |
11 | zhcc-server
12 | http://hulichao.top
13 |
14 | UTF-8
15 | 1.8
16 | 3.7.0
17 | 4.3.14.RELEASE
18 | 1.6.0
19 |
20 |
21 |
22 |
23 | org.slf4j
24 | slf4j-api
25 | 1.7.25
26 |
27 |
28 | ch.qos.logback
29 | logback-classic
30 | 1.2.3
31 |
32 |
33 | org.apache.commons
34 | commons-pool2
35 | 2.5.0
36 |
37 |
38 | org.apache.commons
39 | commons-lang3
40 | 3.7
41 |
42 |
43 |
44 | org.springframework
45 | spring-test
46 | ${spring.version}
47 | provided
48 |
49 |
50 | org.mybatis
51 | mybatis
52 | 3.5.6
53 |
54 |
55 | org.mybatis
56 | mybatis-spring
57 | 1.3.1
58 |
59 |
60 | mysql
61 | mysql-connector-java
62 | 8.0.16
63 |
64 |
65 | com.alibaba
66 | druid
67 | 1.1.7
68 |
69 |
70 |
71 | org.springframework
72 | spring-context
73 | ${spring.version}
74 |
75 |
76 | org.springframework
77 | spring-context-support
78 | ${spring.version}
79 |
80 |
81 | org.springframework
82 | spring-tx
83 | ${spring.version}
84 |
85 |
86 | org.springframework
87 | spring-jdbc
88 | ${spring.version}
89 |
90 |
91 |
92 |
93 |
94 | javax.servlet
95 | javax.servlet-api
96 | 4.0.0
97 | provided
98 |
99 |
100 |
101 | org.springframework
102 | spring-webmvc
103 | ${spring.version}
104 |
105 |
106 |
107 | io.jsonwebtoken
108 | jjwt
109 | 0.9.0
110 |
111 |
112 |
113 | com.alibaba
114 | fastjson
115 | 1.2.46
116 |
117 |
118 |
119 | com.fasterxml.jackson.core
120 | jackson-databind
121 | 2.9.10.7
122 |
123 |
124 |
125 | com.baidu.unbiz
126 | fluent-validator-jsr303
127 | 1.0.2
128 |
129 |
130 |
131 |
132 |
133 | org.apache.shiro
134 | shiro-core
135 | ${shiro.version}
136 |
137 |
138 | org.apache.shiro
139 | shiro-web
140 | ${shiro.version}
141 |
142 |
143 | org.apache.shiro
144 | shiro-spring
145 | ${shiro.version}
146 |
147 |
148 |
149 |
150 | redis.clients
151 | jedis
152 | 2.8.2
153 |
154 |
155 |
156 |
157 | io.springfox
158 | springfox-swagger2
159 | 2.2.2
160 |
161 |
162 | io.springfox
163 | springfox-swagger-ui
164 | 2.2.2
165 |
166 |
167 |
168 |
169 |
170 |
171 | org.apache.maven.plugins
172 | maven-compiler-plugin
173 | ${maven-compiler-plugin.version}
174 |
175 | ${java.version}
176 | ${java.version}
177 | UTF-8
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 | src/main/java
186 |
187 | **/*.properties
188 | **/*.xml
189 |
190 | false
191 |
192 |
193 | src/main/resources
194 |
195 | **/*.properties
196 | **/*.xml
197 |
198 | false
199 |
200 |
201 |
202 |
203 | zhcc-web
204 | zhcc-common
205 | zhcc-shiro
206 | zhcc-test
207 |
208 |
209 |
--------------------------------------------------------------------------------
/zhcc-common/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 | zhcc-server
7 | com.hu.zhcc
8 | 1.0
9 |
10 | 4.0.0
11 |
12 | zhcc-common
13 |
14 | zhcc-common
15 | http://www.hulichao.top
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/zhcc-common/src/main/java/com/hu/zhcc/common/cache/CacheManager.java:
--------------------------------------------------------------------------------
1 | package com.hu.zhcc.common.cache;
2 |
3 | /**
4 | * 缓存管理器接口,暂时还未实现
5 | *
6 | * @author hulichao
7 | * @date 2018/3/18
8 | */
9 | public interface CacheManager {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/zhcc-common/src/main/java/com/hu/zhcc/common/entity/Page.java:
--------------------------------------------------------------------------------
1 | package com.hu.zhcc.common.entity;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * 分页查询结果类
7 | *
8 | * Created by hulichao
9 | * @param
10 | */
11 | public final class Page implements java.io.Serializable {
12 |
13 | private static final long serialVersionUID = 1L;
14 |
15 | private long total;
16 |
17 | private List rows;
18 |
19 | public Page(long total, List rows) {
20 | this.total = total;
21 | this.rows = rows;
22 | }
23 |
24 | public long getTotal() {
25 | return this.total;
26 | }
27 |
28 | public List getRows() {
29 | return this.rows;
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/zhcc-common/src/main/java/com/hu/zhcc/common/entity/PageRequest.java:
--------------------------------------------------------------------------------
1 | package com.hu.zhcc.common.entity;
2 |
3 | import java.util.Map;
4 |
5 | /**
6 | * 分页请求类
7 | *
8 | * Created by hulichao
9 | */
10 | public final class PageRequest implements java.io.Serializable {
11 |
12 | private static final long serialVersionUID = 1L;
13 |
14 | private int offset;
15 |
16 | private int limit;
17 |
18 | private String order;
19 |
20 | private Map parameters;
21 |
22 | public PageRequest(int offset, int limit) {
23 | this(offset, limit, null);
24 | }
25 |
26 | public PageRequest(int offset, int limit, Map parameters) {
27 | this(offset, limit, parameters, null);
28 | }
29 |
30 | public PageRequest(int offset, int limit, Map parameters, String order) {
31 | if (offset < 0) {
32 | throw new IllegalArgumentException("Offset must not be less than zero!");
33 | }
34 |
35 | if (limit < 1) {
36 | throw new IllegalArgumentException("Limit must not be less than one!");
37 | }
38 |
39 | this.offset = offset;
40 | this.limit = limit;
41 | this.parameters = parameters;
42 | this.order = order;
43 | }
44 |
45 | public int getPage() {
46 | return this.offset;
47 | }
48 |
49 | public int getSize() {
50 | return this.limit;
51 | }
52 |
53 | public String getOrder() {
54 | return this.order;
55 | }
56 |
57 | public Map getSearch() {
58 | return this.parameters;
59 | }
60 |
61 | public int getOffset() {
62 | return this.offset;
63 | }
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/zhcc-common/src/main/java/com/hu/zhcc/common/entity/Result.java:
--------------------------------------------------------------------------------
1 | package com.hu.zhcc.common.entity;
2 |
3 | import com.baidu.unbiz.fluentvalidator.ValidationError;
4 |
5 | import java.util.HashMap;
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | /**
10 | * 页面响应通用entity,在本项目中封装到ResponseEntity中返回。
11 | *
12 | * Created by hulichao on 2018/6/20
13 | */
14 | public class Result extends HashMap {
15 |
16 | private static final long serialVersionUID = 1L;
17 |
18 | public Result() {
19 | put("code", 20000);
20 | }
21 |
22 | public static Result fail() {
23 | return fail(50000, "未知异常,请联系管理员");
24 | }
25 |
26 | public static Result fail(String msg) {
27 | return fail(50000, msg);
28 | }
29 |
30 | public static Result fail(List fails) {
31 | return fail(fails.get(0).getErrorMsg()).put("data",fails);
32 | }
33 |
34 | public static Result fail(int code, String msg) {
35 | Result result = new Result();
36 | result.put("code", code);
37 | result.put("msg", msg);
38 | return result;
39 | }
40 |
41 | public static Result success(String msg) {
42 | Result result = new Result();
43 | result.put("msg", msg);
44 | return result;
45 | }
46 |
47 | public static Result success(Map map) {
48 | Result result = new Result();
49 | result.putAll(map);
50 | return result;
51 | }
52 |
53 | public static Result success() {
54 | return new Result();
55 | }
56 |
57 | @Override
58 | public Result put(String key, Object value) {
59 | super.put(key, value);
60 | return this;
61 | }
62 | }
--------------------------------------------------------------------------------
/zhcc-common/src/main/java/com/hu/zhcc/common/exception/CustomException.java:
--------------------------------------------------------------------------------
1 | package com.hu.zhcc.common.exception;
2 |
3 | import org.springframework.http.HttpStatus;
4 |
5 | /**
6 | * 客户端异常类, CustomException
7 | *
8 | * @author hulichao
9 | * @date 2018/7/20
10 | */
11 | public class CustomException extends RuntimeException {
12 |
13 | private static final long serialVersionUID = -2499344353634158686L;
14 |
15 | private HttpStatus httpStatus;
16 |
17 | private int code;
18 |
19 | public CustomException(HttpStatus httpStatus, int code, String message) {
20 | this(message);
21 | this.httpStatus = httpStatus;
22 | this.code = code;
23 | }
24 |
25 | public CustomException(String message) {
26 | super(message);
27 | this.httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
28 | this.code = 50000;
29 | }
30 |
31 | public CustomException(String message, int code, Exception e) {
32 |
33 | super(message, e.getCause());
34 | this.code = code;
35 | }
36 |
37 | public HttpStatus getHttpStatus() {
38 | return httpStatus;
39 | }
40 |
41 | public void setHttpStatus(HttpStatus httpStatus) {
42 | this.httpStatus = httpStatus;
43 | }
44 |
45 | public int getCode() {
46 | return code;
47 | }
48 |
49 | public void setCode(int state) {
50 | this.code = code;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/zhcc-common/src/main/java/com/hu/zhcc/common/exception/DAOException.java:
--------------------------------------------------------------------------------
1 | package com.hu.zhcc.common.exception;
2 |
3 | import org.springframework.http.HttpStatus;
4 |
5 | /**
6 | * dao层异常
7 | *
8 | * Created by hulichao
9 | */
10 | public class DAOException extends RuntimeException {
11 |
12 | private static final long serialVersionUID = -4537960897528403282L;
13 |
14 | private HttpStatus httpStatus;
15 |
16 | private int code;
17 |
18 | public DAOException(HttpStatus httpStatus, int code, String message) {
19 | this(message);
20 | this.httpStatus = httpStatus;
21 | this.code = code;
22 | }
23 |
24 | public DAOException(String message) {
25 | super(message);
26 | this.httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
27 | this.code = 50000;
28 | }
29 |
30 | public DAOException(String message, int code, Exception e) {
31 |
32 | super(message, e.getCause());
33 | this.code = code;
34 | }
35 |
36 | public HttpStatus getHttpStatus() {
37 | return httpStatus;
38 | }
39 |
40 | public void setHttpStatus(HttpStatus httpStatus) {
41 | this.httpStatus = httpStatus;
42 | }
43 |
44 | public int getCode() {
45 | return code;
46 | }
47 |
48 | public void setCode(int state) {
49 | this.code = code;
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/zhcc-common/src/main/java/com/hu/zhcc/common/exception/ExceptionEnum.java:
--------------------------------------------------------------------------------
1 | package com.hu.zhcc.common.exception;
2 | import org.springframework.http.HttpStatus;
3 |
4 | /**
5 | * 异常枚举,设置目的,异常格式化调用
6 | *
7 | * @author hulichao
8 | * @date 2018/7/20
9 | */
10 | public enum ExceptionEnum {
11 | LOGIN_USERNAME_ERROR(40001, "登录失败,用户名不存在", HttpStatus.BAD_REQUEST),
12 |
13 | LOGIN_PASSWORD_ERROR(40002, "登录失败,密码错误", HttpStatus.BAD_REQUEST),
14 |
15 | RESOURCE_PERMISSSION_ERROR(40101, "没有权限,请联系管理员", HttpStatus.UNAUTHORIZED);
16 |
17 | private int code;
18 |
19 | private String msg;
20 |
21 | private HttpStatus httpStatus;
22 |
23 | ExceptionEnum(int code, String msg, HttpStatus status) {
24 | this.code = code;
25 | this.msg = msg;
26 | this.httpStatus = status;
27 | }
28 |
29 | public int getCode() {
30 | return code;
31 | }
32 |
33 | public void setCode(int code) {
34 | this.code = code;
35 | }
36 |
37 | public String getMsg() {
38 | return msg;
39 | }
40 |
41 | public void setMsg(String msg) {
42 | this.msg = msg;
43 | }
44 |
45 | public HttpStatus getHttpStatus() {
46 | return httpStatus;
47 | }
48 |
49 | public void setHttpStatus(HttpStatus httpStatus) {
50 | this.httpStatus = httpStatus;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/zhcc-common/src/main/java/com/hu/zhcc/common/exception/GlobalCustomRestExceptionHandler.java:
--------------------------------------------------------------------------------
1 | package com.hu.zhcc.common.exception;
2 |
3 | import com.hu.zhcc.common.entity.Result;
4 | import org.springframework.core.Ordered;
5 | import org.springframework.core.annotation.Order;
6 | import org.springframework.http.HttpHeaders;
7 | import org.springframework.http.HttpStatus;
8 | import org.springframework.http.ResponseEntity;
9 | import org.springframework.web.HttpRequestMethodNotSupportedException;
10 | import org.springframework.web.bind.annotation.ControllerAdvice;
11 | import org.springframework.web.bind.annotation.ExceptionHandler;
12 | import org.springframework.web.context.request.WebRequest;
13 | import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
14 |
15 | /**
16 | * 全局Rest异常处理
17 | *
18 | * @author hulichao
19 | * @date 2018/7/20
20 | */
21 | @ControllerAdvice
22 | @Order(Ordered.HIGHEST_PRECEDENCE)
23 | public class GlobalCustomRestExceptionHandler extends ResponseEntityExceptionHandler {
24 | //处理客户端自定义异常
25 | @ExceptionHandler(CustomException.class)
26 | public ResponseEntity