From 60951ea5cf856014af9d8babbdf5240ad63c355b Mon Sep 17 00:00:00 2001 From: p4vkf3rot <19155318125@qq.com> Date: Sat, 30 Nov 2024 14:11:41 +0800 Subject: [PATCH] ADD file via upload --- UsersController.java | 175 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 UsersController.java diff --git a/UsersController.java b/UsersController.java new file mode 100644 index 0000000..c38b284 --- /dev/null +++ b/UsersController.java @@ -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().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().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().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 params, UsersEntity user) { + EntityWrapper ew = new EntityWrapper(); // 创建查询条件 + // 调用服务层方法查询分页数据 + 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 ew = new EntityWrapper(); // 创建查询条件 + 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().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().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(); // 返回成功信息 + } +} \ No newline at end of file