| 
					
				 | 
			
			
				@ -0,0 +1,164 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.hospital.interceptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created by chenweida on 2017/8/17. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.iot.gateway.GcHttpLog; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.iot.gateway.GcToken; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.gateway.dao.GcHttpLogDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.gateway.dao.GcTokenDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.endpoint.gateway.model.BaseResultModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.common.IpUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.method.HandlerMethod; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.servlet.HandlerInterceptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.servlet.ModelAndView; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.servlet.http.HttpServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * 对外的请求拦截 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class GateWayInterceptor implements HandlerInterceptor { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Logger logger = LoggerFactory.getLogger(GateWayInterceptor.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private GcTokenDao gcTokenDaoDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String status = "1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private GcHttpLogDao httpLogDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * preHandle:预处理回调方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param handler 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String accesstoken = request.getHeader("accesstoken"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String ip = IpUtil.getIpAddress(request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //********************************判断accesstoken******************************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (org.springframework.util.StringUtils.isEmpty(accesstoken)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveHttpLog(ip, JSONObject.toJSONString(request.getParameterMap()), null, accesstoken, request.getRequestURI(), GcHttpLog.flagEm.error.getCode(), BaseResultModel.statusEm.token_null.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //没权限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseResultModel baseResultModel = new BaseResultModel(BaseResultModel.statusEm.token_null.getCode(), BaseResultModel.statusEm.token_null.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                response.getOutputStream().write(JSONObject.toJSONString(baseResultModel).getBytes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            GcToken gcToken = gcTokenDaoDao.findByToken(accesstoken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (gcToken == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveHttpLog(ip, JSONObject.toJSONString(request.getParameterMap()), null, accesstoken, request.getRequestURI(), GcHttpLog.flagEm.error.getCode(), BaseResultModel.statusEm.token_no_power.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //没权限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseResultModel baseResultModel = new BaseResultModel(BaseResultModel.statusEm.token_no_power.getCode(), BaseResultModel.statusEm.token_no_power.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                response.getOutputStream().write(JSONObject.toJSONString(baseResultModel).getBytes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (gcToken.getDel() == null || gcToken.getDel() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveHttpLog(ip, JSONObject.toJSONString(request.getParameterMap()), null, accesstoken, request.getRequestURI(), GcHttpLog.flagEm.error.getCode(), BaseResultModel.statusEm.token_out_effect.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //token无效 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseResultModel baseResultModel = new BaseResultModel(BaseResultModel.statusEm.token_out_effect.getCode(), BaseResultModel.statusEm.token_out_effect.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                response.getOutputStream().write(JSONObject.toJSONString(baseResultModel).getBytes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (System.currentTimeMillis() > gcToken.getOutTime().getTime()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveHttpLog(ip, JSONObject.toJSONString(request.getParameterMap()), null, accesstoken, request.getRequestURI(), GcHttpLog.flagEm.error.getCode(), BaseResultModel.statusEm.token_out_time.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //token过期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseResultModel baseResultModel = new BaseResultModel(BaseResultModel.statusEm.token_out_time.getCode(), BaseResultModel.statusEm.token_out_time.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                response.getOutputStream().write(JSONObject.toJSONString(baseResultModel).getBytes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveHttpLog(ip, JSONObject.toJSONString(request.getParameterMap()), null, accesstoken, request.getRequestURI(), GcHttpLog.flagEm.error.getCode(), e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //********************************判断accesstoken******************************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return flag; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 后处理回调方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param handler 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param modelAndView 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String output = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (modelAndView != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            output = JSONObject.toJSONString(modelAndView.getModelMap()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Object returnObj = request.getAttribute("returnObj"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (returnObj != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                output = JSONObject.toJSONString(returnObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        HandlerMethod handlerMethod = (HandlerMethod) handler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        response.getOutputStream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String token = request.getHeader("accesstoken"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String ip = IpUtil.getIpAddress(request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        saveHttpLog(ip, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONObject.toJSONString(request.getParameterMap()), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                output, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                token, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                request.getRequestURI(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                GcHttpLog.flagEm.success.getCode(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 整个请求处理完毕回调方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param handler 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param ex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void saveHttpLog(String ip, String input, String output, String token, String method, Integer flag, String message) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        GcHttpLog gcHttpLog = new GcHttpLog(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        gcHttpLog.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        gcHttpLog.setIp(ip); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        gcHttpLog.setInput(input); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotEmpty(output)&&output.length() > 3000) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            output = output.substring(0, 3000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        gcHttpLog.setOutput(output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        gcHttpLog.setToken(token); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        gcHttpLog.setMethod(method); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        gcHttpLog.setFlag(flag); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        gcHttpLog.setMessage(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        httpLogDao.save(gcHttpLog); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String getStatus() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return status; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |