|
@ -1,153 +0,0 @@
|
|
package com.yihu.jw.patient.interceptor;
|
|
|
|
|
|
|
|
import com.yihu.jw.entity.base.security.Token;
|
|
|
|
import com.yihu.jw.patient.constant.SystemConstant;
|
|
|
|
import com.yihu.jw.patient.log.InterfaceCallLogs;
|
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
|
import com.yihu.jw.utils.SystemData;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
import org.springframework.web.method.HandlerMethod;
|
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import java.lang.reflect.Method;
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 患者权限校验
|
|
|
|
*
|
|
|
|
* @author George
|
|
|
|
*/
|
|
|
|
@Component
|
|
|
|
public class PatientInterceptor extends BaseInterceptor {
|
|
|
|
|
|
|
|
private Logger logger = LoggerFactory.getLogger(PatientInterceptor.class);
|
|
|
|
|
|
|
|
public static String status = "1";
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
boolean flag = true;
|
|
|
|
if(Flag.close.getValue().equals(status)){
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
try {
|
|
|
|
request.setCharacterEncoding("UTF-8");
|
|
|
|
response.setHeader("Content-type", "text/html;charset=UTF-8");
|
|
|
|
request.setAttribute("log-start", new Date().getTime());
|
|
|
|
response.setCharacterEncoding("UTF-8");
|
|
|
|
JSONObject json = getAgent(request);
|
|
|
|
logger.debug("userAgent:" + json);
|
|
|
|
if (json == null) {
|
|
|
|
// 未登录
|
|
|
|
response.getOutputStream().write(error(SystemConstant.NOT_LOGIN, "请登录后再操作!").getBytes("UTF-8"));
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
String tokenStr = json.has("token") ? json.getString("token") : "";
|
|
|
|
String user = json.has("uid") ? json.getString("uid") : "";
|
|
|
|
String imei = json.has("imei") ? json.getString("imei") : "";
|
|
|
|
String openid = json.has("openid") ? json.getString("openid") : "";
|
|
|
|
int platform = json.has("platform") ? json.getInt("platform") : 1;
|
|
|
|
logger.debug("tokenStr:" + tokenStr);
|
|
|
|
logger.debug("uid:" + user);
|
|
|
|
logger.debug("imei:" + imei);
|
|
|
|
logger.debug("openid:" + openid);
|
|
|
|
logger.debug("platform:" + platform);
|
|
|
|
if (StringUtils.isEmpty(imei)) {
|
|
|
|
imei = openid;
|
|
|
|
}
|
|
|
|
|
|
|
|
Token token = null;
|
|
|
|
if (platform == 3) {
|
|
|
|
token = SystemData.patientTokens.get(user);
|
|
|
|
}
|
|
|
|
if (token == null) {
|
|
|
|
token = tokenDao.findByPatient(user, platform);
|
|
|
|
// 加入缓存
|
|
|
|
if (platform == 3) {
|
|
|
|
SystemData.patientTokens.put(user, token);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (token == null || StringUtils.isEmpty(tokenStr) || (token.getPlatform() != 1 && token.getPlatform() != 3)) {
|
|
|
|
// 未登录
|
|
|
|
response.getOutputStream().write(error(SystemConstant.NOT_LOGIN, "请登录后再操作!").getBytes("UTF-8"));
|
|
|
|
flag = false;
|
|
|
|
} else {
|
|
|
|
if (!StringUtils.equals(tokenStr, token.getToken()) || !StringUtils.equals(user, token.getUser()) || !StringUtils.equals(imei, token.getImei())) {
|
|
|
|
// 别处登录
|
|
|
|
response.getOutputStream().write(error(SystemConstant.LOGIN_OTHER, "帐号在别处登录,请重新登录").getBytes("UTF-8"));
|
|
|
|
flag = false;
|
|
|
|
} else {
|
|
|
|
// 一天只更新一次
|
|
|
|
if (DateUtil.getDays(token.getCzrq(), DateUtil.getNowDateShort()) != 0) {
|
|
|
|
// 今天未更新,则更新缓存
|
|
|
|
token.setCzrq(new Date());
|
|
|
|
// 更新内存
|
|
|
|
if (platform == 3) {
|
|
|
|
SystemData.patientTokens.put(user, token);
|
|
|
|
}
|
|
|
|
// 更新数据库
|
|
|
|
tokenDao.save(token);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
return flag;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
|
|
|
|
if (null == request.getAttribute("log-start")) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
long start = (long) request.getAttribute("log-start");
|
|
|
|
long end = new Date().getTime();
|
|
|
|
Class cls = ((HandlerMethod) handler).getBeanType();
|
|
|
|
RequestMapping clsRm = (RequestMapping) cls.getAnnotation(RequestMapping.class);
|
|
|
|
Method method = ((HandlerMethod) handler).getMethod();
|
|
|
|
RequestMapping mthRm = method.getAnnotation(RequestMapping.class);
|
|
|
|
String url = "";
|
|
|
|
String urlCls = "";
|
|
|
|
String urlMth = "";
|
|
|
|
if (clsRm.value() != null && clsRm.value().length > 0) {
|
|
|
|
urlCls = clsRm.value()[0];
|
|
|
|
}
|
|
|
|
if (mthRm.value() != null && mthRm.value().length > 0) {
|
|
|
|
urlMth = mthRm.value()[0];
|
|
|
|
}
|
|
|
|
if (StringUtils.isNotEmpty(urlCls)) {
|
|
|
|
url += urlCls.startsWith("/") ? urlCls : ("/" + urlCls);
|
|
|
|
}
|
|
|
|
if (StringUtils.isNotEmpty(urlMth)) {
|
|
|
|
url += urlMth.startsWith("/") ? urlMth : ("/" + urlMth);
|
|
|
|
}
|
|
|
|
url = url.replace("\\", "/").replace("//", "/");
|
|
|
|
|
|
|
|
JSONObject json = getAgent(request);
|
|
|
|
String uid = json.has("uid") ? json.getString("uid") : "";
|
|
|
|
InterfaceCallLogs.info(end - start, url, uid, new JSONObject(request.getParameterMap()).toString());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getStatus() {
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Value("${interceptor.patient.status}")
|
|
|
|
public void setStatus(String status) {
|
|
|
|
PatientInterceptor.status = status;
|
|
|
|
}
|
|
|
|
}
|
|
|