山东大学软件学院创新实训----后端开发12 UserController设计与实现

简介:

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 方法。
  • 参数:方法接受两个参数 oldPassnewPass,分别代表旧密码和新密码。
  • 业务逻辑:首先检查用户输入的旧密码是否与当前登录用户的密码匹配,如果不匹配则返回失败信息。如果匹配,将新密码更新到 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("保存成功");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值