| 
					
				 | 
			
			
				@ -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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |