zhangfeng
2023-07-22 ef406c4432c290f2627fa3742a1489e660dcc239
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
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.setCompany(jo.getString("company"));
                user.setProvince(jo.getString("province"));
                user.setCity(jo.getString("city"));
                user.setCounty(jo.getString("county"));
                user.setProfessionalLevel(jo.getInteger("professionalLevel"));
                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;
    }
}