简介:
UserController
是一个基于 Spring MVC 的 RESTful 风格控制器,负责处理与用户相关的操作,包括修改用户资料和修改用户密码。它继承了通用的基础控制器 BaseController<User>
,从而获得了保存和删除等通用操作的实现,同时可以自定义处理用户特定的业务逻辑。
实现内容:
1、修改资料 (saveProfile
方法)
功能解析:
- 路径和请求方式:
@PostMapping("/saveProfile")
指定了处理修改资料请求的路径为/user/saveProfile
,采用 POST 方法。 - 参数:方法接受一个
User
对象作为参数,用于保存用户提交的资料。 - 业务逻辑:首先通过
Assert.isEmpty(user)
检查用户对象是否为空,如果为空则返回失败信息。否则,调用userService.save(user)
方法保存用户信息到数据库。更新当前登录用户的信息,并将最新的用户对象存储在会话中。 - 返回结果:保存成功后,返回一个成功的响应结果
RespResult.success("保存成功")
。
@PostMapping("/saveProfile")
public RespResult saveProfile(User user) {
// 检查用户对象是否为空
if (Assert.isEmpty(user)) {
return RespResult.fail("保存对象不能为空");
}
// 保存用户信息到数据库
user = userService.save(user);
// 更新当前登录用户的信息
session.setAttribute("loginUser", user);
// 返回保存成功的结果
return RespResult.success("保存成功");
}
2、修改密码 (savePassword
方法)
功能解析:
- 路径和请求方式:
@PostMapping("/savePassword")
指定了处理修改密码请求的路径为/user/savePassword
,采用 POST 方法。 - 参数:方法接受两个参数
oldPass
和newPass
,分别代表旧密码和新密码。 - 业务逻辑:首先检查用户输入的旧密码是否与当前登录用户的密码匹配,如果不匹配则返回失败信息。如果匹配,将新密码更新到
loginUser
对象中,并通过userService.save(loginUser)
方法将新密码更新到数据库。最后更新当前登录用户的会话信息。 - 返回结果:密码修改成功后,返回一个成功的响应结果
RespResult.success("保存成功")
。
@PostMapping("/savePassword")
public RespResult savePassword(String oldPass, String newPass) {
if (!loginUser.getUserPwd().equals(oldPass)) {
return RespResult.fail("旧密码错误");
}
// 更新用户的新密码
loginUser.setUserPwd(newPass);
loginUser = userService.save(loginUser);
// 更新当前登录用户的信息
session.setAttribute("loginUser", loginUser);
// 返回保存成功的结果
return RespResult.success("保存成功");
}
完整实现代码:
package com.SmartMed_Connect.controller;
import com.SmartMed_Connect.dto.RespResult;
import com.SmartMed_Connect.entity.User;
import com.SmartMed_Connect.utils.Assert;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 用户控制器
* 处理用户相关操作,如修改资料和修改密码
*/
@RestController
@RequestMapping(value = "user")
public class UserController extends BaseController<User> {
/**
* 修改资料
* @param user 要保存的用户对象
* @return 返回操作结果,成功或失败信息
*/
@PostMapping("/saveProfile")
public RespResult saveProfile(User user) {
// 检查用户对象是否为空
if (Assert.isEmpty(user)) {
return RespResult.fail("保存对象不能为空");
}
// 保存用户信息到数据库
user = userService.save(user);
// 更新当前登录用户的信息
session.setAttribute("loginUser", user);
// 返回保存成功的结果
return RespResult.success("保存成功");
}
/**
* 修改密码
* @param oldPass 旧密码
* @param newPass 新密码
* @return 返回操作结果,成功或失败信息
*/
@PostMapping("/savePassword")
public RespResult savePassword(String oldPass, String newPass) {
if (!loginUser.getUserPwd().equals(oldPass)) {
return RespResult.fail("旧密码错误");
}
// 更新用户的新密码
loginUser.setUserPwd(newPass);
loginUser = userService.save(loginUser);
// 更新当前登录用户的信息
session.setAttribute("loginUser", loginUser);
// 返回保存成功的结果
return RespResult.success("保存成功");
}
}