|
|
|
@ -0,0 +1,175 @@
|
|
|
|
|
package com.controller;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.Calendar;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
|
|
|
|
import com.annotation.IgnoreAuth;
|
|
|
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
|
|
|
|
import com.entity.TokenEntity;
|
|
|
|
|
import com.entity.UsersEntity;
|
|
|
|
|
import com.service.TokenService;
|
|
|
|
|
import com.service.UsersService;
|
|
|
|
|
import com.utils.CommonUtil;
|
|
|
|
|
import com.utils.MPUtil;
|
|
|
|
|
import com.utils.PageUtils;
|
|
|
|
|
import com.utils.R;
|
|
|
|
|
import com.utils.ValidatorUtils;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 登录相关
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("users") // 定义请求路径的基础 URL 为 "users"
|
|
|
|
|
@RestController // 标明该类是一个控制器,返回的对象直接作为 JSON 响应
|
|
|
|
|
public class UsersController {
|
|
|
|
|
|
|
|
|
|
@Autowired // 自动注入 UsersService 依赖
|
|
|
|
|
private UsersService userService;
|
|
|
|
|
@Autowired // 自动注入 TokenService 依赖
|
|
|
|
|
private TokenService tokenService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 登录
|
|
|
|
|
*/
|
|
|
|
|
@IgnoreAuth // 忽略认证,允许未登录用户访问
|
|
|
|
|
@PostMapping(value = "/login") // 处理 POST 请求,路径为 "users/login"
|
|
|
|
|
public R login(String username, String password, String captcha, HttpServletRequest request) {
|
|
|
|
|
// 根据用户名查询用户
|
|
|
|
|
UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
|
|
|
|
|
// 检查用户是否存在且密码是否匹配
|
|
|
|
|
if(user == null || !user.getPassword().equals(password)) {
|
|
|
|
|
return R.error("账号或密码不正确"); // 返回错误信息
|
|
|
|
|
}
|
|
|
|
|
// 生成用户的 token
|
|
|
|
|
String token = tokenService.generateToken(user.getId(), username, "users", user.getRole());
|
|
|
|
|
return R.ok().put("token", token); // 返回成功信息和 token
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 注册
|
|
|
|
|
*/
|
|
|
|
|
@IgnoreAuth // 忽略认证,允许未登录用户访问
|
|
|
|
|
@PostMapping(value = "/register") // 处理 POST 请求,路径为 "users/register"
|
|
|
|
|
public R register(@RequestBody UsersEntity user) {
|
|
|
|
|
// 校验用户是否已存在
|
|
|
|
|
if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) != null) {
|
|
|
|
|
return R.error("用户已存在"); // 返回用户已存在的错误信息
|
|
|
|
|
}
|
|
|
|
|
userService.insert(user); // 插入新用户
|
|
|
|
|
return R.ok(); // 返回成功信息
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 退出
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping(value = "logout") // 处理 GET 请求,路径为 "users/logout"
|
|
|
|
|
public R logout(HttpServletRequest request) {
|
|
|
|
|
request.getSession().invalidate(); // 使 session 失效,用户登出
|
|
|
|
|
return R.ok("退出成功"); // 返回成功信息
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 密码重置
|
|
|
|
|
*/
|
|
|
|
|
@IgnoreAuth // 忽略认证,允许未登录用户访问
|
|
|
|
|
@RequestMapping(value = "/resetPass") // 处理请求,路径为 "users/resetPass"
|
|
|
|
|
public R resetPass(String username, HttpServletRequest request){
|
|
|
|
|
// 根据用户名查询用户
|
|
|
|
|
UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
|
|
|
|
|
if(user == null) {
|
|
|
|
|
return R.error("账号不存在"); // 返回账号不存在的错误信息
|
|
|
|
|
}
|
|
|
|
|
user.setPassword("123456"); // 将用户密码重置为 "123456"
|
|
|
|
|
userService.update(user, null); // 更新用户信息
|
|
|
|
|
return R.ok("密码已重置为:123456"); // 返回成功信息
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 列表
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/page") // 处理请求,路径为 "users/page"
|
|
|
|
|
public R page(@RequestParam Map<String, Object> params, UsersEntity user) {
|
|
|
|
|
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>(); // 创建查询条件
|
|
|
|
|
// 调用服务层方法查询分页数据
|
|
|
|
|
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
|
|
|
|
|
return R.ok().put("data", page); // 返回查询结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 列表
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/list") // 处理请求,路径为 "users/list"
|
|
|
|
|
public R list(UsersEntity user) {
|
|
|
|
|
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>(); // 创建查询条件
|
|
|
|
|
ew.allEq(MPUtil.allEQMapPre(user, "user")); // 添加所有相等条件
|
|
|
|
|
return R.ok().put("data", userService.selectListView(ew)); // 返回查询结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 信息
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/info/{id}") // 处理请求,路径为 "users/info/{id}"
|
|
|
|
|
public R info(@PathVariable("id") String id) {
|
|
|
|
|
UsersEntity user = userService.selectById(id); // 根据 ID 查找用户
|
|
|
|
|
return R.ok().put("data", user); // 返回用户信息
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取用户的 session 用户信息
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/session") // 处理请求,路径为 "users/session"
|
|
|
|
|
public R getCurrUser(HttpServletRequest request) {
|
|
|
|
|
Long id = (Long) request.getSession().getAttribute("userId"); // 从 session 中获取用户 ID
|
|
|
|
|
UsersEntity user = userService.selectById(id); // 根据 ID 查找用户
|
|
|
|
|
return R.ok().put("data", user); // 返回用户信息
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/save") // 处理 POST 请求,路径为 "users/save"
|
|
|
|
|
public R save(@RequestBody UsersEntity user) {
|
|
|
|
|
// 校验用户是否已存在
|
|
|
|
|
if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) != null) {
|
|
|
|
|
return R.error("用户已存在"); // 返回用户已存在的错误信息
|
|
|
|
|
}
|
|
|
|
|
userService.insert(user); // 插入新用户
|
|
|
|
|
return R.ok(); // 返回成功信息
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 修改
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/update") // 处理请求,路径为 "users/update"
|
|
|
|
|
public R update(@RequestBody UsersEntity user) {
|
|
|
|
|
// 校验用户是否已存在
|
|
|
|
|
UsersEntity u = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername()));
|
|
|
|
|
if(u != null && u.getId() != user.getId() && u.getUsername().equals(user.getUsername())) {
|
|
|
|
|
return R.error("用户名已存在。"); // 返回用户名已存在的错误信息
|
|
|
|
|
}
|
|
|
|
|
userService.updateById(user); // 更新用户信息
|
|
|
|
|
return R.ok(); // 返回成功信息
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/delete") // 处理请求,路径为 "users/delete"
|
|
|
|
|
public R delete(@RequestBody Long[] ids) {
|
|
|
|
|
userService.deleteBatchIds(Arrays.asList(ids)); // 批量删除用户
|
|
|
|
|
return R.ok(); // 返回成功信息
|
|
|
|
|
}
|
|
|
|
|
}
|