package com.ks.app.aop; import com.ks.app.entity.config.SystemConfigKey; import com.ks.app.service.inter.config.SystemConfigService; import com.ks.app.utils.ApiCodeConstant; import com.ks.app.utils.SystemInfoUtil; import com.ks.app.vo.AcceptAdminData; import com.ks.app.vo.AcceptData; import net.sf.json.JSONObject; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.StringUtil; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.PrintWriter; import java.util.*; //后台接口监控 @Component @Aspect @Order(2) public class AdminApiFilter { public static final String EDP = "execution(* com.ks.app.controller.admin..*.*(..))"; @Around(EDP) public Object around(ProceedingJoinPoint joinPoint) throws IOException { Object[] args = joinPoint.getArgs(); ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); AcceptAdminData acceptAdminData = null; for (Object obj : args) { if (obj instanceof AcceptAdminData) { acceptAdminData = (AcceptAdminData) obj; break; } } if (acceptAdminData != null) { acceptAdminData.setSystem(SystemInfoUtil.getAdminSelectedSystem(servletContainer.getRequest().getSession())); } try { return joinPoint.proceed(args); } catch (Throwable e) { PrintWriter out = servletContainer.getResponse().getWriter(); out.print(JsonUtil.loadFalseResult(ApiCodeConstant.CODE_ERROR_IN_SERVER, "服务器内部错误")); out.close(); } return null; } }