From 9d3143b261f8abc363a09c93707323a52827fb08 Mon Sep 17 00:00:00 2001
From: wanggeng888 <450292408@qq.com>
Date: Mon, 1 Mar 2021 18:00:25 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BE=9D=E8=B5=96=EF=BC=8C?=
=?UTF-8?q?=E8=B0=83=E6=95=B4APP=E4=BE=9D=E8=B5=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
basic-app/pom.xml | 5 -
.../java/ink/wgink/app/AppTokenManager.java | 14 +-
.../ink/wgink/app/enums/AppTokenTypeEnum.java | 27 ---
.../ink/wgink/app/filter/AppTokenFilter.java | 155 ++++++++++++++++++
.../wgink/exceptions/AppTokenException.java | 35 ++++
basic-interface/pom.xml | 5 +
.../wgink/interfaces/manager/IAppManager.java | 44 +++++
.../java/ink/wgink/pojo/app}/AppToken.java | 21 ++-
.../ink/wgink/pojo/app}/AppTokenUser.java | 2 +-
.../pojo/app}/AppTokenUserDepartment.java | 3 +-
.../wgink/pojo/app}/AppTokenUserGroup.java | 2 +-
.../wgink/pojo/app}/AppTokenUserPosition.java | 2 +-
.../ink/wgink/pojo/app}/AppTokenUserRole.java | 2 +-
.../ink/wgink/pojo/result/ErrorResult.java | 36 ++++
basic-util/pom.xml | 13 +-
.../wgink/common/advice/ResponseAdvice.java | 38 ++---
.../wgink/common/base/DefaultBaseService.java | 21 ++-
.../common/component/SecurityComponent.java | 51 +++++-
.../common/enums/ErrorResultCodeEnum.java | 43 -----
.../common/handler/AccessDenyHandler.java | 3 +-
module-file/pom.xml | 5 -
.../file/service/impl/FileServiceImpl.java | 7 +-
22 files changed, 395 insertions(+), 139 deletions(-)
delete mode 100644 basic-app/src/main/java/ink/wgink/app/enums/AppTokenTypeEnum.java
create mode 100644 basic-app/src/main/java/ink/wgink/app/filter/AppTokenFilter.java
create mode 100644 basic-exception/src/main/java/ink/wgink/exceptions/AppTokenException.java
create mode 100644 basic-interface/src/main/java/ink/wgink/interfaces/manager/IAppManager.java
rename {basic-app/src/main/java/ink/wgink/app/entity => basic-pojo/src/main/java/ink/wgink/pojo/app}/AppToken.java (84%)
rename {basic-app/src/main/java/ink/wgink/app/entity => basic-pojo/src/main/java/ink/wgink/pojo/app}/AppTokenUser.java (99%)
rename {basic-app/src/main/java/ink/wgink/app/entity => basic-pojo/src/main/java/ink/wgink/pojo/app}/AppTokenUserDepartment.java (97%)
rename {basic-app/src/main/java/ink/wgink/app/entity => basic-pojo/src/main/java/ink/wgink/pojo/app}/AppTokenUserGroup.java (97%)
rename {basic-app/src/main/java/ink/wgink/app/entity => basic-pojo/src/main/java/ink/wgink/pojo/app}/AppTokenUserPosition.java (97%)
rename {basic-app/src/main/java/ink/wgink/app/entity => basic-pojo/src/main/java/ink/wgink/pojo/app}/AppTokenUserRole.java (97%)
delete mode 100644 common/src/main/java/ink/wgink/common/enums/ErrorResultCodeEnum.java
diff --git a/basic-app/pom.xml b/basic-app/pom.xml
index b895e779..402484da 100644
--- a/basic-app/pom.xml
+++ b/basic-app/pom.xml
@@ -12,11 +12,6 @@
basic-app
-
- ink.wgink
- basic-exception
- 1.0-SNAPSHOT
-
ink.wgink
basic-interface
diff --git a/basic-app/src/main/java/ink/wgink/app/AppTokenManager.java b/basic-app/src/main/java/ink/wgink/app/AppTokenManager.java
index 5354d538..3ff43141 100644
--- a/basic-app/src/main/java/ink/wgink/app/AppTokenManager.java
+++ b/basic-app/src/main/java/ink/wgink/app/AppTokenManager.java
@@ -1,11 +1,11 @@
package ink.wgink.app;
import com.alibaba.fastjson.JSONObject;
-import ink.wgink.app.entity.AppToken;
-import ink.wgink.app.entity.AppTokenUser;
-import ink.wgink.app.enums.AppTokenTypeEnum;
+import ink.wgink.pojo.app.AppToken;
+import ink.wgink.pojo.app.AppTokenUser;
import ink.wgink.exceptions.TokenException;
import ink.wgink.interfaces.consts.ISystemConstant;
+import ink.wgink.interfaces.manager.IAppManager;
import ink.wgink.util.AesUtil;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
@@ -29,7 +29,8 @@ import java.util.concurrent.ConcurrentHashMap;
* @Date: 2019-08-02 11:08
* @Version: 1.0
**/
-public class AppTokenManager {
+public class AppTokenManager implements IAppManager {
+
private static final Logger LOG = LoggerFactory.getLogger(AppTokenManager.class);
private static AppTokenManager appTokenManager = AppTokenManagerBuilder.appTokenManager;
private static final Map tokens = new ConcurrentHashMap();
@@ -47,6 +48,7 @@ public class AppTokenManager {
* @param token
* @return
*/
+ @Override
public AppToken getToken(String token) {
AppToken appToken = tokens.get(token);
if (appToken != null) {
@@ -62,7 +64,7 @@ public class AppTokenManager {
* @param appTokenTypeEnum
* @param appTokenUser
*/
- public synchronized void addToken(String token, AppTokenTypeEnum appTokenTypeEnum, AppTokenUser appTokenUser) {
+ public synchronized void addToken(String token, AppToken.AppTokenTypeEnum appTokenTypeEnum, AppTokenUser appTokenUser) {
AppToken appToken = new AppToken();
appToken.setToken(token);
appToken.setAppTokenTypeEnum(appTokenTypeEnum);
@@ -78,6 +80,7 @@ public class AppTokenManager {
tokens.put(token, appToken);
}
+ @Override
public AppTokenUser parseToAppTokenUser(String token) throws TokenException {
String userInfo = null;
try {
@@ -119,6 +122,7 @@ public class AppTokenManager {
*
* @return
*/
+ @Override
public List listCurrentUsers() {
List users = new ArrayList<>();
for (Map.Entry kvs : tokens.entrySet()) {
diff --git a/basic-app/src/main/java/ink/wgink/app/enums/AppTokenTypeEnum.java b/basic-app/src/main/java/ink/wgink/app/enums/AppTokenTypeEnum.java
deleted file mode 100644
index 2e63d88a..00000000
--- a/basic-app/src/main/java/ink/wgink/app/enums/AppTokenTypeEnum.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package ink.wgink.app.enums;
-
-/**
- * When you feel like quitting. Think about why you started
- * 当你想要放弃的时候,想想当初你为何开始
- *
- * @ClassName: AppTokenTypeEnum
- * @Description: appToken类别
- * @Author: WangGeng
- * @Date: 2020/3/8 10:09 上午
- * @Version: 1.0
- **/
-public enum AppTokenTypeEnum {
-
- WECHAT("wechat"),
- WECHAT_MINI_APP("wxminiapp"),
- APP("app");
- private String type;
-
- AppTokenTypeEnum(String type) {
- this.type = type;
- }
-
- public String getType() {
- return type == null ? "" : type.trim();
- }
-}
diff --git a/basic-app/src/main/java/ink/wgink/app/filter/AppTokenFilter.java b/basic-app/src/main/java/ink/wgink/app/filter/AppTokenFilter.java
new file mode 100644
index 00000000..0848921f
--- /dev/null
+++ b/basic-app/src/main/java/ink/wgink/app/filter/AppTokenFilter.java
@@ -0,0 +1,155 @@
+package ink.wgink.app.filter;
+
+import com.alibaba.fastjson.JSON;
+import ink.wgink.app.AppTokenManager;
+import ink.wgink.exceptions.TokenException;
+import ink.wgink.pojo.app.AppToken;
+import ink.wgink.pojo.app.AppTokenUser;
+import ink.wgink.pojo.result.ErrorResult;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Component;
+import org.springframework.util.AntPathMatcher;
+import org.springframework.web.filter.GenericFilterBean;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: AppTokenFilter
+ * @Description: App过滤器
+ * @Author: wanggeng
+ * @Date: 2021/3/1 4:43 下午
+ * @Version: 1.0
+ */
+@Component
+public class AppTokenFilter extends GenericFilterBean implements InitializingBean {
+
+ private static final Logger LOG = LoggerFactory.getLogger(AppTokenFilter.class);
+ private AntPathMatcher antPathMatcher = new AntPathMatcher();
+ /**
+ * APP登录(用户名密码)
+ */
+ private static final String URL_LOGIN_DEFAULT = "/**/app/sign/login";
+ /**
+ * APP登录(手机验证码)
+ */
+ private static final String URL_LOGIN_PHONE = "/**/app/sign/loginphone";
+ /**
+ * APP注册
+ */
+ private static final String URL_REGISTER = "/**/app/register/saveregisteruser";
+ /**
+ * APP注册简单
+ */
+ private static final String URL_REGISTER_SIMPLE = "/**/app/register/saveregisterusersimple";
+ /**
+ * APP忘记密码
+ */
+ private static final String URL_FORGET_PASSWORD = "/**/app/user/forgetpassword";
+ /**
+ * 下载头像
+ */
+ private static final String URL_DOWNLOAD_AVATAR = "/**/app/user/downloadavatar/**";
+ /**
+ * APP下载
+ */
+ private static final String URL_DOWNLOAD_APP = "/**/app/appversion/downloadapp/**";
+ /**
+ * APP版本号
+ */
+ private static final String URL_APP_VERSION_NUM = "/**/app/appversion/getappversionnumber/**";
+ /**
+ * APP放行
+ */
+ private static final String URL_RELEASE_APP = "/**/app/**/**release/**";
+ /**
+ * APP路由放行
+ */
+ private static final String URL_RELEASE_APP_ROUTE = "/**/approute/**/**release/**";
+
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ HttpServletRequest request = (HttpServletRequest) servletRequest;
+ HttpServletResponse response = (HttpServletResponse) servletResponse;
+ String requestUri = request.getRequestURI();
+ // 非app 放行
+ boolean appMatcher = antPathMatcher.match("/**/app*/**", requestUri);
+ if (!appMatcher) {
+ filterChain.doFilter(request, response);
+ return;
+ }
+ boolean matcher = antPathMatcher.match(URL_LOGIN_DEFAULT, requestUri)
+ || antPathMatcher.match(URL_LOGIN_PHONE, requestUri)
+ || antPathMatcher.match(URL_REGISTER, requestUri)
+ || antPathMatcher.match(URL_REGISTER_SIMPLE, requestUri)
+ || antPathMatcher.match(URL_FORGET_PASSWORD, requestUri)
+ || antPathMatcher.match(URL_DOWNLOAD_AVATAR, requestUri)
+ || antPathMatcher.match(URL_DOWNLOAD_APP, requestUri)
+ || antPathMatcher.match(URL_APP_VERSION_NUM, requestUri)
+ || antPathMatcher.match(URL_RELEASE_APP, requestUri)
+ || antPathMatcher.match(URL_RELEASE_APP_ROUTE, requestUri);
+ if (matcher) {
+ filterChain.doFilter(request, response);
+ return;
+ }
+ String token = request.getHeader("token");
+ if (StringUtils.isBlank(token)) {
+ errorResponse(response, "token不能为空");
+ return;
+ }
+ LOG.debug("校验token");
+ try {
+ checkToken(token);
+ } catch (TokenException e) {
+ errorResponse(response, e.getMessage());
+ return;
+ }
+ filterChain.doFilter(request, response);
+ }
+
+ /**
+ * 校验token
+ *
+ * @param token
+ * @return
+ * @throws TokenException
+ */
+ private void checkToken(String token) throws TokenException {
+ AppTokenManager appTokenManager = AppTokenManager.getInstance();
+ LOG.debug("检查token是否存在");
+ AppToken appToken = appTokenManager.getToken(token);
+ if (appToken != null) {
+ return;
+ }
+ LOG.debug("解析token是否合法");
+ AppTokenUser appTokenUser = appTokenManager.parseToAppTokenUser(token);
+ appTokenManager.addToken(token, AppToken.AppTokenTypeEnum.APP, appTokenUser);
+ }
+
+ /**
+ * 错误返回
+ *
+ * @param response
+ * @param errorInfo
+ * @throws IOException
+ */
+ private void errorResponse(HttpServletResponse response, String errorInfo) throws IOException {
+ response.setStatus(HttpStatus.BAD_REQUEST.value());
+ response.setHeader("Content-Type", "application/json;charset=UTF-8");
+ ErrorResult result = new ErrorResult(ErrorResult.ErrorResultCodeEnum.PARAMS_ERROR.getValue(), errorInfo);
+ response.getWriter().write(JSON.toJSONString(result));
+ }
+
+}
diff --git a/basic-exception/src/main/java/ink/wgink/exceptions/AppTokenException.java b/basic-exception/src/main/java/ink/wgink/exceptions/AppTokenException.java
new file mode 100644
index 00000000..48c0b0b4
--- /dev/null
+++ b/basic-exception/src/main/java/ink/wgink/exceptions/AppTokenException.java
@@ -0,0 +1,35 @@
+package ink.wgink.exceptions;
+
+import ink.wgink.exceptions.base.SystemException;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: AppTokenException
+ * @Description: AppToken异常
+ * @Author: wanggeng
+ * @Date: 2021/3/1 5:43 下午
+ * @Version: 1.0
+ */
+public class AppTokenException extends SystemException {
+
+ public AppTokenException() {
+ }
+
+ public AppTokenException(String message) {
+ super(message);
+ }
+
+ public AppTokenException(String message, boolean withMsg) {
+ super(message, withMsg);
+ }
+
+ public AppTokenException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public AppTokenException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/basic-interface/pom.xml b/basic-interface/pom.xml
index f90abb08..a7703e4d 100644
--- a/basic-interface/pom.xml
+++ b/basic-interface/pom.xml
@@ -12,6 +12,11 @@
basic-interface
+
+ ink.wgink
+ basic-exception
+ 1.0-SNAPSHOT
+
ink.wgink
basic-pojo
diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/manager/IAppManager.java b/basic-interface/src/main/java/ink/wgink/interfaces/manager/IAppManager.java
new file mode 100644
index 00000000..7d8a538a
--- /dev/null
+++ b/basic-interface/src/main/java/ink/wgink/interfaces/manager/IAppManager.java
@@ -0,0 +1,44 @@
+package ink.wgink.interfaces.manager;
+
+import ink.wgink.exceptions.TokenException;
+import ink.wgink.pojo.app.AppToken;
+import ink.wgink.pojo.app.AppTokenUser;
+
+import java.util.List;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: IAppManager
+ * @Description: app管理
+ * @Author: wanggeng
+ * @Date: 2021/3/1 4:33 下午
+ * @Version: 1.0
+ */
+public interface IAppManager {
+
+ /**
+ * 获取AppToken对象
+ *
+ * @param token token 字符串
+ * @return
+ */
+ AppToken getToken(String token);
+
+ /**
+ * 解析 token 串为 AppTokenUser 对象
+ *
+ * @param token token 字符串
+ * @return
+ * @throws TokenException
+ */
+ AppTokenUser parseToAppTokenUser(String token) throws TokenException;
+
+ /**
+ * 当前用户列表
+ *
+ * @return
+ */
+ List listCurrentUsers();
+}
diff --git a/basic-app/src/main/java/ink/wgink/app/entity/AppToken.java b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppToken.java
similarity index 84%
rename from basic-app/src/main/java/ink/wgink/app/entity/AppToken.java
rename to basic-pojo/src/main/java/ink/wgink/pojo/app/AppToken.java
index cb9e50b8..60978204 100644
--- a/basic-app/src/main/java/ink/wgink/app/entity/AppToken.java
+++ b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppToken.java
@@ -1,7 +1,4 @@
-package ink.wgink.app.entity;
-
-
-import ink.wgink.app.enums.AppTokenTypeEnum;
+package ink.wgink.pojo.app;
/**
* When you feel like quitting. Think about why you started
@@ -77,4 +74,20 @@ public class AppToken {
sb.append('}');
return sb.toString();
}
+
+ public enum AppTokenTypeEnum {
+
+ WECHAT("wechat"),
+ WECHAT_MINI_APP("wxminiapp"),
+ APP("app");
+ private String type;
+
+ AppTokenTypeEnum(String type) {
+ this.type = type;
+ }
+
+ public String getType() {
+ return type == null ? "" : type.trim();
+ }
+ }
}
diff --git a/basic-app/src/main/java/ink/wgink/app/entity/AppTokenUser.java b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUser.java
similarity index 99%
rename from basic-app/src/main/java/ink/wgink/app/entity/AppTokenUser.java
rename to basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUser.java
index 89c77661..9967e16c 100644
--- a/basic-app/src/main/java/ink/wgink/app/entity/AppTokenUser.java
+++ b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUser.java
@@ -1,4 +1,4 @@
-package ink.wgink.app.entity;
+package ink.wgink.pojo.app;
import java.util.List;
diff --git a/basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserDepartment.java b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserDepartment.java
similarity index 97%
rename from basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserDepartment.java
rename to basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserDepartment.java
index b3f94237..e1e98fec 100644
--- a/basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserDepartment.java
+++ b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserDepartment.java
@@ -1,4 +1,4 @@
-package ink.wgink.app.entity;
+package ink.wgink.pojo.app;
/**
* When you feel like quitting. Think about why you started
@@ -11,6 +11,7 @@ package ink.wgink.app.entity;
* @Version: 1.0
**/
public class AppTokenUserDepartment {
+
private String departmentId;
private String departmentName;
diff --git a/basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserGroup.java b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserGroup.java
similarity index 97%
rename from basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserGroup.java
rename to basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserGroup.java
index fa24e78d..8645acb0 100644
--- a/basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserGroup.java
+++ b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserGroup.java
@@ -1,4 +1,4 @@
-package ink.wgink.app.entity;
+package ink.wgink.pojo.app;
/**
* When you feel like quitting. Think about why you started
diff --git a/basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserPosition.java b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserPosition.java
similarity index 97%
rename from basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserPosition.java
rename to basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserPosition.java
index 78ea249a..b07e0ad8 100644
--- a/basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserPosition.java
+++ b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserPosition.java
@@ -1,4 +1,4 @@
-package ink.wgink.app.entity;
+package ink.wgink.pojo.app;
/**
* When you feel like quitting. Think about why you started
diff --git a/basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserRole.java b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserRole.java
similarity index 97%
rename from basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserRole.java
rename to basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserRole.java
index 55c2c942..06e2cdfd 100644
--- a/basic-app/src/main/java/ink/wgink/app/entity/AppTokenUserRole.java
+++ b/basic-pojo/src/main/java/ink/wgink/pojo/app/AppTokenUserRole.java
@@ -1,4 +1,4 @@
-package ink.wgink.app.entity;
+package ink.wgink.pojo.app;
/**
* When you feel like quitting. Think about why you started
diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/result/ErrorResult.java b/basic-pojo/src/main/java/ink/wgink/pojo/result/ErrorResult.java
index dc5b38c9..939b5868 100644
--- a/basic-pojo/src/main/java/ink/wgink/pojo/result/ErrorResult.java
+++ b/basic-pojo/src/main/java/ink/wgink/pojo/result/ErrorResult.java
@@ -59,4 +59,40 @@ public class ErrorResult implements Serializable {
sb.append('}');
return sb.toString();
}
+
+ public enum ErrorResultCodeEnum {
+
+ /**
+ * 错误类型
+ */
+ SYSTEM_ERROR(40001),
+ ENCODE_ERROR(40002),
+ DECODE_ERROR(40003),
+ APP_DEPENDENCY_ERROR(40004),
+ TEXT_ILLEGAL(40101),
+ PARAMS_ERROR(40102),
+ QUERY_ERROR(40101),
+ SAVE_ERROR(40102),
+ UPDATE_ERROR(40103),
+ REMOVE_ERROR(40104),
+ FILE_ERROR(40401),
+ TEST_ERROR(40201),
+ LOGIN_OUT(40301),
+ TOKEN_ERROR(40302),
+ USERNAME_PASSWORD_ERROR(40303),
+ USER_EXIST(40304),
+ PERMISSION_ERROR(40401),
+ DEVICE_ERROR(40501),
+ DEVICE_VERSION_ERROR(40502);
+
+ private int value;
+
+ ErrorResultCodeEnum(int value) {
+ this.value = value;
+ }
+
+ public int getValue() {
+ return value;
+ }
+ }
}
diff --git a/basic-util/pom.xml b/basic-util/pom.xml
index c4e4a7d0..d536ab78 100644
--- a/basic-util/pom.xml
+++ b/basic-util/pom.xml
@@ -12,12 +12,6 @@
basic-util
-
- ink.wgink
- basic-pojo
- 1.0-SNAPSHOT
-
-
org.springframework
@@ -134,6 +128,13 @@
+
+
+ ink.wgink
+ basic-pojo
+ 1.0-SNAPSHOT
+
+
\ No newline at end of file
diff --git a/common/src/main/java/ink/wgink/common/advice/ResponseAdvice.java b/common/src/main/java/ink/wgink/common/advice/ResponseAdvice.java
index ab4bbc0b..afef5937 100644
--- a/common/src/main/java/ink/wgink/common/advice/ResponseAdvice.java
+++ b/common/src/main/java/ink/wgink/common/advice/ResponseAdvice.java
@@ -1,7 +1,6 @@
package ink.wgink.common.advice;
import com.alibaba.fastjson.JSON;
-import ink.wgink.common.enums.ErrorResultCodeEnum;
import ink.wgink.exceptions.*;
import ink.wgink.exceptions.base.SystemException;
import ink.wgink.interfaces.consts.ISystemConstant;
@@ -9,8 +8,6 @@ import ink.wgink.pojo.result.ErrorResult;
import ink.wgink.util.AesUtil;
import ink.wgink.util.ReflectUtil;
import ink.wgink.util.map.HashMapUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
@@ -24,14 +21,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.sql.SQLSyntaxErrorException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.regex.Pattern;
/**
@@ -59,23 +49,25 @@ public class ResponseAdvice {
} else {
LOG.error(e.getMessage(), e);
}
- ErrorResult result = new ErrorResult(ErrorResultCodeEnum.SYSTEM_ERROR.getValue(), "系统错误");
+ ErrorResult result = new ErrorResult(ErrorResult.ErrorResultCodeEnum.SYSTEM_ERROR.getValue(), "系统错误");
if (e instanceof SaveException) {
- result.setCode(ErrorResultCodeEnum.SAVE_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.SAVE_ERROR.getValue());
} else if (e instanceof RemoveException) {
- result.setCode(ErrorResultCodeEnum.REMOVE_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.REMOVE_ERROR.getValue());
} else if (e instanceof UpdateException) {
- result.setCode(ErrorResultCodeEnum.UPDATE_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.UPDATE_ERROR.getValue());
} else if (e instanceof SearchException) {
- result.setCode(ErrorResultCodeEnum.QUERY_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.QUERY_ERROR.getValue());
} else if (e instanceof ParamsException) {
- result.setCode(ErrorResultCodeEnum.PARAMS_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.PARAMS_ERROR.getValue());
} else if (e instanceof FileException) {
- result.setCode(ErrorResultCodeEnum.FILE_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.FILE_ERROR.getValue());
+ } else if (e instanceof AppTokenException) {
+ result.setCode(ErrorResult.ErrorResultCodeEnum.APP_DEPENDENCY_ERROR.getValue());
} else if (e instanceof AppDeviceException) {
- result.setCode(ErrorResultCodeEnum.DEVICE_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.DEVICE_ERROR.getValue());
} else if (e instanceof AppVersionException) {
- result.setCode(ErrorResultCodeEnum.DEVICE_VERSION_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.DEVICE_VERSION_ERROR.getValue());
} else if (e instanceof AccessTokenException) {
response.setStatus(HttpStatus.UNAUTHORIZED.value());
}
@@ -83,16 +75,16 @@ public class ResponseAdvice {
if (e instanceof SystemException) {
result.setMsg(e.getMessage());
} else if (e instanceof UnsupportedEncodingException) {
- result.setCode(ErrorResultCodeEnum.ENCODE_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.ENCODE_ERROR.getValue());
result.setMsg(e.getMessage());
} else if (e instanceof AesUtil.AesEncodeException) {
- result.setCode(ErrorResultCodeEnum.ENCODE_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.ENCODE_ERROR.getValue());
result.setMsg(e.getMessage());
} else if (e instanceof AesUtil.AesDecodeException) {
- result.setCode(ErrorResultCodeEnum.DECODE_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.DECODE_ERROR.getValue());
result.setMsg(e.getMessage());
} else if (e instanceof ReflectUtil.ReflectException) {
- result.setCode(ErrorResultCodeEnum.SYSTEM_ERROR.getValue());
+ result.setCode(ErrorResult.ErrorResultCodeEnum.SYSTEM_ERROR.getValue());
} else {
StringBuilder errorMessageSB = new StringBuilder();
for (StackTraceElement stackTraceElement : e.getStackTrace()) {
diff --git a/common/src/main/java/ink/wgink/common/base/DefaultBaseService.java b/common/src/main/java/ink/wgink/common/base/DefaultBaseService.java
index 7623d9b3..ac26f88f 100644
--- a/common/src/main/java/ink/wgink/common/base/DefaultBaseService.java
+++ b/common/src/main/java/ink/wgink/common/base/DefaultBaseService.java
@@ -4,10 +4,14 @@ import com.alibaba.fastjson.JSONObject;
import ink.wgink.common.component.SecurityComponent;
import ink.wgink.common.enums.RoleDataRightEnum;
import ink.wgink.exceptions.AccessTokenException;
+import ink.wgink.exceptions.AppTokenException;
import ink.wgink.exceptions.SearchException;
+import ink.wgink.exceptions.TokenException;
import ink.wgink.interfaces.consts.ISystemConstant;
+import ink.wgink.pojo.app.AppTokenUser;
import ink.wgink.pojo.bos.UserInfoBO;
import ink.wgink.pojo.dtos.ZTreeDTO;
+import ink.wgink.util.ReflectUtil;
import ink.wgink.util.date.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,13 +45,22 @@ public class DefaultBaseService {
*/
protected void setSaveInfo(Map params) {
UserInfoBO userInfoBO = securityComponent.getCurrentUser();
- if (userInfoBO != null) {
- setSave(userInfoBO.getUserId(), params);
- } else {
- setSave("1", params);
+ setSave(userInfoBO.getUserId(), params);
+ }
+
+ protected AppTokenUser getAppTokenUser(String token) {
+ try {
+ return securityComponent.getAppTokenUser(token);
+ } catch (ReflectUtil.ReflectException e) {
+ throw new AppTokenException("未引入APP的依赖");
}
}
+ protected void setAppSaveInfo(Map params, String token) {
+ AppTokenUser appTokenUser = getAppTokenUser(token);
+ setSave(appTokenUser.getId(), params);
+ }
+
/**
* 设置新增基础信息
*
diff --git a/common/src/main/java/ink/wgink/common/component/SecurityComponent.java b/common/src/main/java/ink/wgink/common/component/SecurityComponent.java
index 3cd528ab..1a591dda 100644
--- a/common/src/main/java/ink/wgink/common/component/SecurityComponent.java
+++ b/common/src/main/java/ink/wgink/common/component/SecurityComponent.java
@@ -1,11 +1,17 @@
package ink.wgink.common.component;
+import ink.wgink.interfaces.manager.IAppManager;
+import ink.wgink.pojo.app.AppToken;
+import ink.wgink.pojo.app.AppTokenUser;
import ink.wgink.pojo.bos.*;
import ink.wgink.pojo.dtos.CurrentUserIdInfoDTO;
import ink.wgink.pojo.pos.DepartmentPO;
import ink.wgink.pojo.pos.GroupPO;
import ink.wgink.pojo.pos.PositionPO;
import ink.wgink.pojo.pos.RolePO;
+import ink.wgink.util.ReflectUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
@@ -25,6 +31,8 @@ import java.util.List;
@Component
public class SecurityComponent {
+ private static final Logger LOG = LoggerFactory.getLogger(SecurityComponent.class);
+
/**
* 获取当前用户
*
@@ -54,12 +62,6 @@ public class SecurityComponent {
if (user instanceof UserInfoBO) {
userInfoBO = (UserInfoBO) user;
}
- if (userInfoBO == null) {
- userInfoBO = new UserInfoBO();
- userInfoBO.setUserId("1");
- userInfoBO.setUserName("admin");
- userInfoBO.setUserUsername("admin");
- }
return userInfoBO;
}
@@ -158,4 +160,41 @@ public class SecurityComponent {
return currentUserIdInfoDTO;
}
+ /**
+ * AppManager
+ *
+ * @return
+ */
+ public IAppManager getAppManager() throws ReflectUtil.ReflectException {
+ return ReflectUtil.getSingleInstance("ink.wgink.app.AppTokenManager", IAppManager.class);
+ }
+
+ /**
+ * AppToken 对象
+ *
+ * @param token
+ * @return
+ */
+ public AppToken getAppToken(String token) throws ReflectUtil.ReflectException {
+ IAppManager appManager = getAppManager();
+ if (appManager == null) {
+ return null;
+ }
+ return appManager.getToken(token);
+ }
+
+ /**
+ * token 对应的 app 用户
+ *
+ * @param token
+ * @return
+ */
+ public AppTokenUser getAppTokenUser(String token) throws ReflectUtil.ReflectException {
+ AppToken appToken = getAppToken(token);
+ if (appToken == null) {
+ return null;
+ }
+ return appToken.getAppTokenUser();
+ }
+
}
diff --git a/common/src/main/java/ink/wgink/common/enums/ErrorResultCodeEnum.java b/common/src/main/java/ink/wgink/common/enums/ErrorResultCodeEnum.java
deleted file mode 100644
index 89c669fa..00000000
--- a/common/src/main/java/ink/wgink/common/enums/ErrorResultCodeEnum.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package ink.wgink.common.enums;
-
-/**
- * @ClassName: ErrorResultCodeEnum
- * @Description: 错误代码
- * @Author: WangGeng
- * @Date: 2019/3/2 3:51 PM
- * @Version: 1.0
- **/
-public enum ErrorResultCodeEnum {
-
- /**
- * 错误类型
- */
- SYSTEM_ERROR(40001),
- ENCODE_ERROR(40002),
- DECODE_ERROR(40003),
- TEXT_ILLEGAL(40101),
- PARAMS_ERROR(40102),
- QUERY_ERROR(40101),
- SAVE_ERROR(40102),
- UPDATE_ERROR(40103),
- REMOVE_ERROR(40104),
- FILE_ERROR(40401),
- TEST_ERROR(40201),
- LOGIN_OUT(40301),
- TOKEN_ERROR(40302),
- USERNAME_PASSWORD_ERROR(40303),
- USER_EXIST(40304),
- PERMISSION_ERROR(40401),
- DEVICE_ERROR(40501),
- DEVICE_VERSION_ERROR(40502);
-
- private int value;
-
- ErrorResultCodeEnum(int value) {
- this.value = value;
- }
-
- public int getValue() {
- return value;
- }
-}
diff --git a/common/src/main/java/ink/wgink/common/handler/AccessDenyHandler.java b/common/src/main/java/ink/wgink/common/handler/AccessDenyHandler.java
index 3401465a..7e6eb5f5 100644
--- a/common/src/main/java/ink/wgink/common/handler/AccessDenyHandler.java
+++ b/common/src/main/java/ink/wgink/common/handler/AccessDenyHandler.java
@@ -1,7 +1,6 @@
package ink.wgink.common.handler;
import com.alibaba.fastjson.JSONObject;
-import ink.wgink.common.enums.ErrorResultCodeEnum;
import ink.wgink.pojo.result.ErrorResult;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@@ -28,7 +27,7 @@ public class AccessDenyHandler implements AccessDeniedHandler {
if (contentType != null && contentType.contains(MediaType.APPLICATION_JSON_VALUE)) {
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
response.setStatus(HttpStatus.FORBIDDEN.value());
- response.getWriter().write(JSONObject.toJSONString(new ErrorResult(ErrorResultCodeEnum.PERMISSION_ERROR.getValue(), "权限不足")));
+ response.getWriter().write(JSONObject.toJSONString(new ErrorResult(ErrorResult.ErrorResultCodeEnum.PERMISSION_ERROR.getValue(), "权限不足")));
} else {
response.setContentType(MediaType.TEXT_HTML_VALUE);
request.getRequestDispatcher("/error/403.html").forward(request, response);
diff --git a/module-file/pom.xml b/module-file/pom.xml
index 069a8905..3cca457a 100644
--- a/module-file/pom.xml
+++ b/module-file/pom.xml
@@ -13,11 +13,6 @@
文件模块
-
- ink.wgink
- basic-app
- 1.0-SNAPSHOT
-
ink.wgink
common
diff --git a/module-file/src/main/java/ink/wgink/module/file/service/impl/FileServiceImpl.java b/module-file/src/main/java/ink/wgink/module/file/service/impl/FileServiceImpl.java
index cdd7b8aa..e9c92765 100644
--- a/module-file/src/main/java/ink/wgink/module/file/service/impl/FileServiceImpl.java
+++ b/module-file/src/main/java/ink/wgink/module/file/service/impl/FileServiceImpl.java
@@ -4,9 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
-import ink.wgink.app.AppTokenManager;
import ink.wgink.common.base.DefaultBaseService;
-import ink.wgink.common.enums.ErrorResultCodeEnum;
import ink.wgink.exceptions.FileException;
import ink.wgink.exceptions.ParamsException;
import ink.wgink.exceptions.SaveException;
@@ -20,6 +18,7 @@ import ink.wgink.module.file.pojo.dtos.FileInfoDTO;
import ink.wgink.module.file.service.IFileService;
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.pos.FilePO;
+import ink.wgink.pojo.result.ErrorResult;
import ink.wgink.pojo.result.SuccessResultData;
import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.util.ResourceUtil;
@@ -312,7 +311,7 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
if (StringUtils.isBlank(token)) {
setSaveInfo(params);
} else {
- setSaveInfoByUserId(params, AppTokenManager.getInstance().getToken(token).getAppTokenUser().getId());
+ setAppSaveInfo(params, token);
}
fileDao.save(params);
}
@@ -442,7 +441,7 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
result.put("data", fileArray);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
- result.put("errno", ErrorResultCodeEnum.FILE_ERROR.getValue());
+ result.put("errno", ErrorResult.ErrorResultCodeEnum.FILE_ERROR.getValue());
}
return result;
}