郑永安
2023-06-19 59e91a4e9ddaf23cebb12993c774aa899ab22d16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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;
    }
}