| | |
| | | package com.yeshi.location.app.aop; |
| | | |
| | | import com.yeshi.location.app.entity.APPPlatform; |
| | | import com.yeshi.location.app.entity.config.SystemConfigKey; |
| | | import com.yeshi.location.app.service.inter.config.SystemConfigService; |
| | | import com.yeshi.location.app.utils.ApiCodeConstant; |
| | | import com.yeshi.location.app.utils.SystemInfoUtil; |
| | | import com.yeshi.location.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; |
| | |
| | | @Resource |
| | | private SystemConfigService systemConfigService; |
| | | |
| | | |
| | | @Around(EDP) |
| | | public Object around(ProceedingJoinPoint joinPoint) throws Throwable { |
| | | |
| | | Object[] args = joinPoint.getArgs(); |
| | | PrintWriter out = null; |
| | | ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder |
| | | .getRequestAttributes(); |
| | | |
| | | out = servletContainer.getResponse().getWriter(); |
| | | HttpServletRequest request = servletContainer.getRequest(); |
| | | |
| | | PrintWriter out = null;//servletContainer.getResponse().getWriter(); |
| | | AcceptData acceptData = null; |
| | | for (Object obj : args) { |
| | | if (obj instanceof AcceptData) { |
| | | acceptData = (AcceptData) obj; |
| | | } else if (obj instanceof HttpServletRequest) { |
| | | request = (HttpServletRequest) obj; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (acceptData == null) { |
| | | out.print(JsonUtil.loadFalseResult(ApiCodeConstant.CODE_FAIL_SIGN_ERROR, "签名错误")); |
| | | if (acceptData != null) { |
| | | acceptData.setSystem(SystemInfoUtil.getSystem(acceptData.getPlatform(), acceptData.getPackages())); |
| | | } |
| | | |
| | | boolean signIsRight = true;//signIsRight(servletContainer.getRequest(), acceptData); |
| | | if (!signIsRight) { |
| | | return (JsonUtil.loadFalseResult(ApiCodeConstant.CODE_FAIL_SIGN_ERROR, "签名错误")); |
| | | } |
| | | |
| | | if (Math.abs((acceptData.getTimestamp() - System.currentTimeMillis())) > 1000 * 60 * 10) { |
| | | out.print(JsonUtil.loadFalseResult(ApiCodeConstant.CODE_FAIL_OUT_TIME, "时间错误")); |
| | | return null; |
| | | } |
| | | |
| | | boolean isRight = signIsRight(request, acceptData); |
| | | // 签名是否正确 |
| | | if (isRight) { |
| | | // 判断签名超时 |
| | | if (Math.abs((acceptData.getTimestamp() - System.currentTimeMillis())) > 1000 * 60 * 10) { |
| | | out.print(JsonUtil.loadFalseResult(ApiCodeConstant.CODE_FAIL_OUT_TIME, "时间错误")); |
| | | return null; |
| | | } |
| | | |
| | | if (acceptData != null) { |
| | | acceptData.setSystem(SystemInfoUtil.getSystem(acceptData.getPlatform(), acceptData.getPackages())); |
| | | } |
| | | // final String url = request.getRequestURI(); |
| | | // final Map<String, String[]> params = request.getParameterMap(); |
| | | // ThreadUtil.run(new Runnable() { |
| | | // @Override |
| | | // public void run() { |
| | | // // 记录请求日志 |
| | | // LogHelper.requestInfo(url, params); |
| | | // } |
| | | // }); |
| | | |
| | | Object obj = null; |
| | | try { |
| | | long startTime = System.currentTimeMillis(); |
| | | obj = joinPoint.proceed(args); |
| | | |
| | | |
| | | } catch (Throwable e) { |
| | | out.print(JsonUtil.loadFalseResult(ApiCodeConstant.CODE_ERROR_IN_SERVER, "服务器内部错误")); |
| | | return null; |
| | | } |
| | | return obj; |
| | | } else { |
| | | out.print(JsonUtil.loadFalseResult(ApiCodeConstant.CODE_FAIL_SIGN_ERROR, "签名错误")); |
| | | return null; |
| | | } |
| | | return joinPoint.proceed(); |
| | | } |
| | | |
| | | private String getHttpServletParams(HttpServletRequest request) { |
| | | if (request == null) { |
| | | return ""; |
| | | } |
| | | Map map = request.getParameterMap(); |
| | | if (map != null) { |
| | | Iterator<String> its = map.keySet().iterator(); |
| | | JSONObject json = new JSONObject(); |
| | | while (its.hasNext()) { |
| | | String next = its.next(); |
| | | if (map.get(next) != null) { |
| | | Object[] objects = (Object[]) map.get(next); |
| | | if (objects != null && objects.length > 0) { |
| | | json.put(next, objects[0].toString()); |
| | | } |
| | | } |
| | | } |
| | | return json.toString(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 判断签名的正确性 Android version>50 |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |