You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
6.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.yanzhen.controller;
import com.github.pagehelper.PageInfo;
import com.yanzhen.entity.Student;
import com.yanzhen.entity.User;
import com.yanzhen.service.StudentService;
import com.yanzhen.service.UserService;
import com.yanzhen.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@RestController // 声明这是一个控制器,并且返回的数据直接写入 HTTP 响应体中,而不是解析为跳转路径。
@RequestMapping("/user") // 设置请求的基础路径为 "/user",所有方法的请求路径都会以 "/user" 开头。
public class UserController {
@Autowired // 自动注入 UserService 对象,用于处理用户相关的业务逻辑。
private UserService userService;
@Autowired // 自动注入 StudentService 对象,用于处理学生相关的业务逻辑。
private StudentService studentService;
@PostMapping("create") // 映射 HTTP POST 请求到 "create" 方法,用于创建新用户。
public Result create(@RequestBody User user){ // 从请求体中获取 User 对象。
int flag = userService.create(user); // 调用 userService 的 create 方法创建用户,并返回操作结果标志。
if(flag>0){ // 如果创建成功flag > 0
return Result.ok(); // 返回成功的 Result 对象。
}else{ // 如果创建失败flag <= 0
return Result.fail(); // 返回失败的 Result 对象。
}
}
@GetMapping("delete") // 映射 HTTP GET 请求到 "delete" 方法,用于删除用户。
public Result delete(String ids){ // 从请求参数中获取要删除的用户 ID 字符串。
int flag = userService.delete(ids); // 调用 userService 的 delete 方法删除用户,并返回操作结果标志。
if(flag>0){ // 如果删除成功flag > 0
return Result.ok(); // 返回成功的 Result 对象。
}else{ // 如果删除失败flag <= 0
return Result.fail(); // 返回失败的 Result 对象。
}
}
@PostMapping("update") // 映射 HTTP POST 请求到 "update" 方法,用于更新用户信息。
public Result update(@RequestBody User user){ // 从请求体中获取 User 对象。
int flag = userService.updateSelective(user); // 调用 userService 的 updateSelective 方法更新用户信息,并返回操作结果标志。
if(flag>0){ // 如果更新成功flag > 0
return Result.ok(); // 返回成功的 Result 对象。
}else{ // 如果更新失败flag <= 0
return Result.fail(); // 返回失败的 Result 对象。
}
}
@GetMapping("detail") // 映射 HTTP GET 请求到 "detail" 方法,用于获取用户详细信息。
public User detail(Integer id){ // 从请求参数中获取用户 ID。
return userService.detail(id); // 调用 userService 的 detail 方法获取用户详细信息,并返回该用户对象。
}
@GetMapping("info") // 映射 HTTP GET 请求到 "info" 方法,用于获取当前登录用户的详细信息。
public Result info(HttpServletRequest request){ // 从请求中获取当前用户信息。
User user = (User)request.getAttribute("user"); // 从请求属性中获取当前用户对象。
return Result.ok(userService.detail(user.getId())); // 调用 userService 的 detail 方法获取用户详细信息,并返回成功的 Result 对象。
}
@PostMapping("pwd") // 映射 HTTP POST 请求到 "pwd" 方法,用于修改用户密码。
public Result pwd(@RequestBody Map<String,String> map,HttpServletRequest request){ // 从请求体中获取包含原密码和新密码的 Map并从请求中获取当前用户或学生信息。
String spassword = map.get("spassword"); // 获取原密码。
String npassword = map.get("npassword"); // 获取新密码。
//用户修改
if(request.getAttribute("user") != null){ // 如果当前用户是普通用户。
User user = (User)request.getAttribute("user"); // 从请求属性中获取当前用户对象。
User entity = userService.detail(user.getId()); // 调用 userService 的 detail 方法获取用户详细信息。
if(entity.getPassword().equals(spassword)){ // 如果原密码正确。
User param = new User(); // 创建新的 User 对象用于更新密码。
param.setId(entity.getId()); // 设置用户 ID。
param.setPassword(npassword); // 设置新密码。
userService.updatePwd(param); // 调用 userService 的 updatePwd 方法更新密码。
return Result.ok("修改密码成功"); // 返回成功的 Result 对象。
}else{ // 如果原密码错误。
return Result.fail("原密码错误"); // 返回失败的 Result 对象。
}
}
//学生修改
if(request.getAttribute("student") != null){ // 如果当前用户是学生。
Student student = (Student)request.getAttribute("student"); // 从请求属性中获取当前学生对象。
Student entity = studentService.detail(student.getId()); // 调用 studentService 的 detail 方法获取学生详细信息。
if(entity.getPassword().equals(spassword)){ // 如果原密码正确。
Student param = new Student(); // 创建新的 Student 对象用于更新密码。
param.setId(entity.getId()); // 设置学生 ID。
param.setPassword(npassword); // 设置新密码。
studentService.updateSelective(param); // 调用 studentService 的 updateSelective 方法更新密码。
return Result.ok("修改密码成功"); // 返回成功的 Result 对象。
}else{ // 如果原密码错误。
return Result.fail("原密码错误"); // 返回失败的 Result 对象。
}
}
return Result.ok(); // 如果既不是普通用户也不是学生,返回成功的 Result 对象。
}
@PostMapping("query") // 映射 HTTP POST 请求到 "query" 方法,用于查询用户列表。
public Map<String,Object> query(@RequestBody User user){ // 从请求体中获取 User 对象作为查询条件。
PageInfo<User> pageInfo = userService.query(user); // 调用 userService 的 query 方法进行分页查询,并返回分页信息。
return Result.ok(pageInfo); // 返回包含分页信息的成功的 Result 对象。
}
}