管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-09-30 4f44344fc03f606e515444fc1bce7c6b7cf029e7
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
package com.lf.server.controller.sys;
 
import com.lf.server.controller.BaseController;
import com.lf.server.entity.all.ResponseMsg;
import com.lf.server.entity.data.LoginEntity;
import com.lf.server.entity.data.TokenEntity;
import com.lf.server.entity.data.UsersEntity;
import com.lf.server.helper.StringHelper;
import com.lf.server.helper.WebHelper;
import com.lf.server.service.data.LoginService;
import com.lf.server.service.data.TokenService;
import com.lf.server.service.data.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * 签名控制器
 * @author www
 * @date   2022-09-21
 */
@RestController
@RequestMapping("/sign")
public class SignController extends BaseController {
    @Autowired
    UsersService userService;
 
    @Autowired
    LoginService loginService;
 
    @Autowired
    TokenService tokenService;
 
    /**
     * 跳到首页
     *
     * @return String
     */
    @GetMapping({"/", "/toIndex"})
    public ModelAndView toIndex(ModelAndView mv, HttpServletRequest req) {
        mv.setViewName("index");
 
        UsersEntity ue = tokenService.getCurrentUser(req);
        if (ue != null) {
            mv.addObject("msg", "Hello " + ue.getUname() + " !");
        }
 
        return mv;
    }
 
    /**
     * 跳到登录页
     *
     * @return String
     */
    @GetMapping("/toLogin")
    public ModelAndView toLogin(ModelAndView mv) {
        mv.setViewName("login");
 
        return mv;
    }
 
    /**
     * 登录认证
     *
     * @return ResponseMsg<TokenEntity>
     */
    @PostMapping(value = "/login", produces = "application/json; charset=UTF-8")
    public ResponseMsg<TokenEntity> login(@RequestBody UsersEntity user, HttpServletRequest req, HttpServletResponse res) {
        try {
            if (user == null) {
                return fail("请输入用户名和密码!", null);
            }
            if (StringHelper.isEmpty(user.getUid())) {
                return fail("用户名不能为空!", null);
            }
            if (StringHelper.isEmpty(user.getPwd())) {
                return fail("密码不能为空!", null);
            }
 
            UsersEntity ue = userService.selectByUid(user.getUid());
            if (ue == null) {
                return fail("用户名不存在!", null);
            }
 
            LoginEntity le = loginService.getNewLogin(ue.getId(), 1, req);
            if (!user.getPwd().equals(ue.getPwd())) {
                le.setStatus(0);
                le.setDescr("密码错误");
                loginService.insertLogin(le);
                return fail("密码不正确!", null);
            }
 
            Integer rows = loginService.insertLogin(le);
            if (rows == 0) {
                return fail("创建登录日志失败!", null);
            }
 
            TokenEntity te = tokenService.getNewToken(ue.getId(), req);
            rows = tokenService.insertToken(te);
            if (rows == 0) {
                return fail("创建令牌信息失败!", null);
            }
 
            tokenService.saveToken(ue, te, req, res);
 
            return success(te);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
        }
    }
 
    /**
     * 登出
     *
     * @param req
     * @param res
     * @return
     */
    @GetMapping(value = "/logout")
    public ResponseMsg<Boolean> logout(HttpServletRequest req, HttpServletResponse res) {
        try {
            String token = WebHelper.getToken(req);
            if (StringHelper.isEmpty(token)) {
                return fail("没有检测到令牌", false);
            }
 
            Boolean flag = tokenService.logout(token, req, res);
 
            return success(flag ? "登出成功" : "登出失败", flag);
        } catch (Exception ex) {
            return fail(ex.getMessage(), false);
        }
    }
 
    /**
     * 检查是/否登录
     *
     * @return ResponseMsg<String>
     */
    @GetMapping("/check")
    public ResponseMsg<Boolean> check(HttpServletRequest req, HttpServletResponse res) {
        try {
            Boolean flag = tokenService.isLogin(req, res);
            if (flag) {
                // 写日志
                UsersEntity ue = tokenService.getCurrentUser(req);
                LoginEntity le = loginService.getNewLogin(ue.getId(), 2, req);
                Integer rows = loginService.insertLogin(le);
            }
 
            return success(flag ? "用户已登录" : "用户未登录", flag);
        } catch (Exception ex) {
            return fail(ex.getMessage(), false);
        }
    }
 
    /**
     * 获取当前用户
     *
     * @param req
     * @return
     */
    @GetMapping("/getCurrentUser")
    public ResponseMsg<UsersEntity> getCurrentUser(HttpServletRequest req) {
        try {
            UsersEntity ue = tokenService.getCurrentUser(req);
            if (ue == null) {
                return fail("没有找到", null);
            }
 
            return success(ue);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
        }
    }
}