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
|
* @return
|
*/
|
@GetMapping(value = "/logout")
|
public ResponseMsg<Boolean> logout(HttpServletRequest req) {
|
try {
|
String token = WebHelper.getToken(req);
|
if (StringHelper.isEmpty(token)) {
|
return fail("没有检测到令牌", false);
|
}
|
|
Boolean flag = tokenService.logout(token, req);
|
|
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);
|
}
|
}
|
}
|