package com.gk.hotwork.Controller.Base; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.gk.hotwork.Config.Oauth2.IRedisService; import com.gk.hotwork.Config.Oauth2.RedisKeyEnum; import com.gk.hotwork.Domain.UserInfo; import com.gk.hotwork.Domain.Utils.CommonUtil; import com.gk.hotwork.Domain.Utils.Msg; import com.google.common.net.HttpHeaders; import io.jsonwebtoken.Claims; import org.apache.log4j.Logger; import org.springframework.web.bind.annotation.ModelAttribute; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.PrintWriter; public class BaseController { protected static final Logger logger = Logger.getLogger(BaseController.class); protected HttpServletRequest request; protected HttpServletResponse response; protected HttpSession session; @Resource IRedisService redisService; @ModelAttribute public void setReqAndResp(HttpServletRequest request, HttpServletResponse response){ this.request = request; this.response = response; this.session = request.getSession(); } /** * 输出信息到页面 * @param msg:要输出的信息(可以是js脚本等) */ public void printOutMsg(String msg){ try { this.response.setCharacterEncoding("UTF-8"); this.response.setContentType("text/html;charset=utf-8"); PrintWriter out = null; out = this.response.getWriter(); out.print(msg); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 获取请求完整路径 * @param request * @return */ public String getUrl(HttpServletRequest request){ String url = request.getRequestURI(); String params = ""; if(request.getQueryString()!=null){ params = request.getQueryString().toString(); } if(!"".equals(params)){ url = url+"?"+params; } return url; } /** * @Description: 获取用户 * @param * @date 2021/3/23 14:36 */ public UserInfo getUser() { String token = this.request.getHeader(HttpHeaders.AUTHORIZATION); //解析token Claims claims = CommonUtil.parseJWT(token); if (null != claims){ String tokenKey = StrUtil.format(RedisKeyEnum.AUTH_TOKEN.getKey(), claims.getId()); Object o = redisService.get(tokenKey); if (o == null) { return null; }else{ JSONObject jo = JSONObject.parseObject(o.toString()); UserInfo user = new UserInfo(); user.setId(jo.getLong("id")); user.setUsername(jo.getString("username")); user.setRealname(jo.getString("realname")); user.setType(jo.getInteger("type")); user.setCompanyid(jo.getLong("companyid")); user.setDepartment(jo.getLong("department")); user.setDepartmentname(jo.getString("departmentname")); return user; } }else{ return null; } } public Msg success() { Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("success"); return msg; } public Msg success(Object object) { Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("success"); msg.setResult(object); return msg; } }