From f862a844ea7e212f8cc0622b858308e2b91dca2e Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 04 七月 2020 16:35:50 +0800
Subject: [PATCH] 后台管理相关Controller注入系统

---
 fanli/src/main/java/com/yeshi/fanli/aspect/AdminLoginAspect.java |  169 ++++++++++++++++++++++++++++++++------------------------
 1 files changed, 97 insertions(+), 72 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/aspect/AdminLoginAspect.java b/fanli/src/main/java/com/yeshi/fanli/aspect/AdminLoginAspect.java
index 77c11d7..c02fc44 100644
--- a/fanli/src/main/java/com/yeshi/fanli/aspect/AdminLoginAspect.java
+++ b/fanli/src/main/java/com/yeshi/fanli/aspect/AdminLoginAspect.java
@@ -8,6 +8,10 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.aliyun.openservices.ons.api.Admin;
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.accept.AdminAcceptData;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.Signature;
 import org.aspectj.lang.annotation.Around;
@@ -32,90 +36,111 @@
 @Aspect
 public class AdminLoginAspect {
 
-	@Resource
-	private AdminUserService adminUserService;
+    @Resource
+    private AdminUserService adminUserService;
 
-	@Around("execution(public * com.yeshi.fanli.controller.admin..*.*(..))")
-	public Object verifyLoginState(ProceedingJoinPoint joinPoint) throws IOException {
+    @Around("execution(public * com.yeshi.fanli.controller.admin..*.*(..))")
+    public Object verifyLoginState(ProceedingJoinPoint joinPoint) throws IOException {
+        Object[] args = joinPoint.getArgs();
+        Signature signature = joinPoint.getSignature();
+        MethodSignature methodSignature = (MethodSignature) signature;
+        Method targetMethod = methodSignature.getMethod();
 
-		Signature signature = joinPoint.getSignature();
-		MethodSignature methodSignature = (MethodSignature) signature;
-		Method targetMethod = methodSignature.getMethod();
+        ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder
+                .getRequestAttributes();
 
-		ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder
-				.getRequestAttributes();
+        HttpServletRequest request = servletContainer.getRequest();
 
-		HttpServletRequest request = servletContainer.getRequest();
+        AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
 
-		AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
+        if (admin == null) {
 
-		if (admin == null) {
+            String from = request.getParameter("from");
+            // 閭欢H5鏉ユ簮鐨勪笉鍒ゆ柇鏄惁鐧诲綍
+            if ("emailh5".equalsIgnoreCase(from)) {
+                String callback = request.getParameter("callback");
+                String signAES = request.getParameter("sign");
+                if (signAES != null && signAES.contains("%"))
+                    signAES = URLDecoder.decode(request.getParameter("sign"), "UTF-8");
+                String sign = AESUtil.decrypt(signAES, Constant.ADMINH5_AESKEY);
+                if (!StringUtil.isNullOrEmpty(sign)) {
+                    LogHelper.error("H5瀹℃牳绛惧悕:" + sign);
+                    JSONObject json = JSONObject.fromObject(sign);
+                    long time = json.optLong("timeStamp");
+                    long adminId = json.optLong("adminId");
+                    AdminUser adminUser = adminUserService.selectByPrimaryKey(adminId);
+                    // 1涓皬鏃堕摼鎺ュけ鏁�
+                    if (System.currentTimeMillis() - time > 1000 * 60 * 60 || adminUser == null) {
+                        servletContainer.getResponse().getWriter()
+                                .print(callback + "(" + JsonUtil.loadFalseResult(2, "閾炬帴澶辨晥") + ")");
+                        return null;
+                    } else {
+                        request.getSession().setAttribute(Constant.SESSION_ADMIN, adminUser);
+                        request.getSession().setAttribute(Constant.SESSION_EXTRACT_VERIFY_RESULT, "1");
+                    }
+                } else {
+                    servletContainer.getResponse().getWriter()
+                            .print(callback + "(" + JsonUtil.loadFalseResult(3, "閾炬帴澶辨晥") + ")");
+                    return null;
+                }
 
-			String from = request.getParameter("from");
-			// 閭欢H5鏉ユ簮鐨勪笉鍒ゆ柇鏄惁鐧诲綍
-			if ("emailh5".equalsIgnoreCase(from)) {
-				String callback = request.getParameter("callback");
-				String signAES = request.getParameter("sign");
-				if (signAES != null && signAES.contains("%"))
-					signAES = URLDecoder.decode(request.getParameter("sign"), "UTF-8");
-				String sign = AESUtil.decrypt(signAES, Constant.ADMINH5_AESKEY);
-				if (!StringUtil.isNullOrEmpty(sign)) {
-					LogHelper.error("H5瀹℃牳绛惧悕:" + sign);
-					JSONObject json = JSONObject.fromObject(sign);
-					long time = json.optLong("timeStamp");
-					long adminId = json.optLong("adminId");
-					AdminUser adminUser = adminUserService.selectByPrimaryKey(adminId);
-					// 1涓皬鏃堕摼鎺ュけ鏁�
-					if (System.currentTimeMillis() - time > 1000 * 60 * 60 || adminUser == null) {
-						servletContainer.getResponse().getWriter()
-								.print(callback + "(" + JsonUtil.loadFalseResult(2, "閾炬帴澶辨晥") + ")");
-						return null;
-					} else {
-						request.getSession().setAttribute(Constant.SESSION_ADMIN, adminUser);
-						request.getSession().setAttribute(Constant.SESSION_EXTRACT_VERIFY_RESULT, "1");
-					}
-				} else {
-					servletContainer.getResponse().getWriter()
-							.print(callback + "(" + JsonUtil.loadFalseResult(3, "閾炬帴澶辨晥") + ")");
-					return null;
-				}
+            } else {
+                Method realMethod = null;
+                try {
+                    realMethod = joinPoint.getTarget().getClass().getDeclaredMethod(joinPoint.getSignature().getName(),
+                            targetMethod.getParameterTypes());
+                } catch (NoSuchMethodException e) {
+                    e.printStackTrace();
+                } catch (SecurityException e) {
+                    e.printStackTrace();
+                }
 
-			} else {
-				Method realMethod = null;
-				try {
-					realMethod = joinPoint.getTarget().getClass().getDeclaredMethod(joinPoint.getSignature().getName(),
-							targetMethod.getParameterTypes());
-				} catch (NoSuchMethodException e) {
-					e.printStackTrace();
-				} catch (SecurityException e) {
-					e.printStackTrace();
-				}
+                // 鍒ゆ柇鏄惁鏈夊拷鐣ラ獙璇佺殑娉ㄨВ
+                if (realMethod == null || !realMethod.isAnnotationPresent(RequestNoLogin.class)) {
+                    HttpServletResponse response = servletContainer.getResponse();
+                    String callback = request.getParameter("callback");
+                    if (StringUtil.isNullOrEmpty(callback)) {
+                        response.getWriter().print(JsonUtil.loadFalseResult(10001, "璇峰厛鐧诲綍"));
+                    } else {
+                        response.getWriter().print(callback + "(" + JsonUtil.loadFalseResult(10001, "璇峰厛鐧诲綍") + ")");
+                    }
 
-				// 鍒ゆ柇鏄惁鏈夊拷鐣ラ獙璇佺殑娉ㄨВ
-				if (realMethod == null || !realMethod.isAnnotationPresent(RequestNoLogin.class)) {
-					HttpServletResponse response = servletContainer.getResponse();
-					String callback = request.getParameter("callback");
-					if (StringUtil.isNullOrEmpty(callback)) {
-						response.getWriter().print(JsonUtil.loadFalseResult(10001, "璇峰厛鐧诲綍"));
-					} else {
-						response.getWriter().print(callback + "(" + JsonUtil.loadFalseResult(10001, "璇峰厛鐧诲綍") + ")");
-					}
+                    return null;
+                }
+            }
+        }
 
-					return null;
-				}
-			}
-		}
+        String systemStr = request.getHeader("system");
+        if (StringUtil.isNullOrEmpty(systemStr)) {
+            systemStr = SystemEnum.blks.name();
+        }
 
-		Object[] args = joinPoint.getArgs();
-		Object obj = null;
+        SystemEnum system = null;
 
-		try {
-			obj = joinPoint.proceed(args);
-		} catch (Throwable e) {
-			e.printStackTrace();
-		}
+        for (SystemEnum s : SystemEnum.values()) {
+            if (s.getName().equalsIgnoreCase(systemStr))
+                system = s;
+        }
 
-		return obj;
-	}
+        AdminAcceptData acceptData = null;
+        for (Object obj : args) {
+            if (obj instanceof AdminAcceptData) {
+                acceptData = (AdminAcceptData) obj;
+            }
+        }
+
+        if (acceptData != null)
+            acceptData.setSystem(system);
+
+        Object obj = null;
+
+        try {
+            obj = joinPoint.proceed(args);
+        } catch (Throwable e) {
+            e.printStackTrace();
+        }
+
+        return obj;
+    }
 
 }

--
Gitblit v1.8.0