package com.taoke.autopay.aop;
|
|
import com.taoke.autopay.entity.agent.ChannelAgent;
|
import com.taoke.autopay.utils.ApiCodeConstant;
|
import com.taoke.autopay.utils.Constant;
|
import com.taoke.autopay.utils.JsonUtil;
|
import com.taoke.autopay.utils.StringUtil;
|
import com.taoke.autopay.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.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
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 javax.servlet.http.HttpServletRequest;
|
import java.io.PrintWriter;
|
import java.util.*;
|
|
/**
|
* @author hxh
|
* @description 客户端接口签名验证
|
* @date 12:15 2024/6/14
|
* @return
|
**/
|
@Component
|
@Aspect
|
@Order(2)
|
public class AgentLoginValidate {
|
|
public static final String EDP = "execution(* com.taoke.autopay.controller.agent..*.*(..))";
|
|
private Logger logger = LoggerFactory.getLogger(AgentLoginValidate.class);
|
|
|
@Around(EDP)
|
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
|
Object[] args = joinPoint.getArgs();
|
PrintWriter out = null;
|
ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder
|
.getRequestAttributes();
|
servletContainer.getResponse().setCharacterEncoding("UTF-8");
|
|
HttpServletRequest request = servletContainer.getRequest();
|
|
AcceptData acceptData = null;
|
for (Object obj : args) {
|
if (obj instanceof AcceptData) {
|
acceptData = (AcceptData) obj;
|
} else if (obj instanceof HttpServletRequest) {
|
request = (HttpServletRequest) obj;
|
}
|
}
|
|
ChannelAgent agent = (ChannelAgent) request.getSession().getAttribute(Constant.SESSION_KEY_AGENT);
|
if (agent == null && !request.getRequestURI().toString().contains("login")) {
|
// 没有登录
|
out = servletContainer.getResponse().getWriter();
|
out.print(JsonUtil.loadFalseResult(Constant.RESULT_CODE_NEED_LOGIN, "尚未登录"));
|
return null;
|
}
|
|
|
Object obj = null;
|
try {
|
long startTime = System.currentTimeMillis();
|
obj = joinPoint.proceed(args);
|
} catch (Throwable e) {
|
e.printStackTrace();
|
out = servletContainer.getResponse().getWriter();
|
out.print(JsonUtil.loadFalseResult(ApiCodeConstant.CODE_ERROR_IN_SERVER, "服务器内部错误"));
|
logger.error("api:{} params:{}", request.getRequestURI(), JsonUtil.getSimpleGson().toJson(request.getParameterMap()), e);
|
return null;
|
}
|
return obj;
|
|
}
|
}
|