admin
2019-08-26 d28bed1a1275131a5ca37f7da37961e2b518ac07
fanli/src/main/java/com/yeshi/fanli/aspect/SignValidateAspect.java
@@ -14,23 +14,26 @@
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 com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import org.yeshi.utils.JsonUtil;
import com.yeshi.fanli.util.ThreadUtil;
import net.sf.json.JSONObject;
//客户端接口签名验证
@Component
@Aspect
@Order(2)
public class SignValidateAspect {
   public static final String EDP = "execution(* com.yeshi.fanli.controller.client.*.*(..))";
   public static final String EDP = "execution(* com.yeshi.fanli.controller.client.*.*.*(..))";
   public static String KEY = "";
@@ -52,6 +55,8 @@
      for (Object obj : args) {
         if (obj instanceof AcceptData) {
            acceptData = (AcceptData) obj;
         } else if (obj instanceof HttpServletRequest) {
            request = (HttpServletRequest) obj;
         }
      }
      boolean isRight = true;
@@ -64,8 +69,8 @@
      if ((acceptData.getPlatform() != null && acceptData.getPlatform().equalsIgnoreCase("android")
            && acceptData.getVersion() != null && Integer.parseInt(acceptData.getVersion()) > 21)
            || (acceptData.getPlatform().equalsIgnoreCase("ios") && acceptData.getVersion() != null
                  && Integer.parseInt(acceptData.getVersion()) > 24)) {
            || (acceptData.getPlatform() != null && acceptData.getPlatform().equalsIgnoreCase("ios")
                  && acceptData.getVersion() != null && Integer.parseInt(acceptData.getVersion()) > 24)) {
         isRight = signIsRight(request);
      } else if (acceptData.getPackages().startsWith("com.haicaojie")) {
         isRight = signIsRight(request);
@@ -81,26 +86,46 @@
      // 签名是否正确
      if (isRight) {
         // 判断签名超时
         // if (Math.abs((Long.parseLong(acceptData.getTime()) -
         // System.currentTimeMillis())) > 1000 * 60 * 10) {
         // JSONObject data = new JSONObject();
         // data.put("code", -2);
         // data.put("msg", "时间错误");
         // out.print(data);
         // out.close();
         // return null;
         // }
         if (Math.abs((Long.parseLong(acceptData.getTime()) - System.currentTimeMillis())) > 1000 * 60 * 10) {
            JSONObject data = new JSONObject();
            data.put("code", -2);
            data.put("msg", "时间错误");
            out.print(data);
            out.close();
            return null;
         }
         final String url = request.getRequestURI();
         @SuppressWarnings("unchecked")
         final Map<String, Object> 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) {
            e.printStackTrace();
            try {
               LogHelper.errorDetailInfo(e, getHttpServletParams(request), request.getRequestURI().toString());
            } catch (Exception e1) {
               e1.printStackTrace();
            final long responseTime = System.currentTimeMillis() - startTime;
            // 记录大于2s的请求
            if (responseTime >= 2000) {
               ThreadUtil.run(new Runnable() {
                  @Override
                  public void run() {
                     LogHelper.requestTime(url, params, responseTime);
                  }
               });
            }
         } catch (Throwable e) {
            LogHelper.errorDetailInfo(e, getHttpServletParams(request), request.getRequestURI().toString());
            out.print(JsonUtil.loadFalseResult(90009, "服务器内部错误"));
         }
         return obj;
      } else {