郑永安
2023-06-19 f65443d8abeaedc9d102324565e8368e7c9d90c8
src/main/java/com/gk/firework/Controller/Base/BaseController.java
对比新文件
@@ -0,0 +1,137 @@
package com.gk.firework.Controller.Base;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.gk.firework.Config.Oauth2.IRedisService;
import com.gk.firework.Config.Oauth2.RedisKeyEnum;
import com.gk.firework.Domain.UserInfo;
import com.gk.firework.Domain.Utils.CommonUtil;
import com.gk.firework.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.setCompanyid(jo.getLong("companyid"));
                user.setType(jo.getInteger("type"));
                return user;
            }
        }else{
            return null;
        }
    }
    public String getAuth(){
        String token = this.request.getHeader(HttpHeaders.AUTHORIZATION);
        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 object = JSONObject.parseObject(o.toString());
                return object.getString("auth");
            }
        }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;
    }
}