Springboot项目搭建(3)-用户信息管理接口与文件上传

1.概要

前一章节完成了用户信息的注册、登录、详细信息查询,以及线程池与拦截器技术。

这一章完善了用户信息更新/更改功能,包括昵称、邮箱、头像、密码等...

而后接触到了本地上传和云上传,其二者区别:

选择本地上传还是云上传取决于具体的业务需求、预算、数据量、以及对速度和可靠性的要求。对于需要高可靠性和可扩展性的大规模数据存储,云上传通常是更好的选择。而对于小型项目或对成本敏感的场景,本地上传可能更加合适。

借助阿里云的OSS对象存储服务,更方便的使网站,去进行静态内容托管、备份和归档。

2.更新用户信息

2.1 映射类UserMapper

文件地址:org/example/mapper/UserMapper.java

now():获得数据库的系统时间

package org.example.mapper;
import ...
@Mapper
public interface UserMapper {
    ...
    ...
    //更新用户表,设计昵称邮箱等数值
    @Update("update user set nickname=#{nickname},email=#{email},update_time=#{updateTime} where id=#{id}")
    void update(User user);
    //更新用户头像
    @Update("update user set user_pic=#{avatarUrl},update_time=now() where id=#{id}")
    //创建updateAvatar接口,Integer规范数据为整型
    void updateAvatar(String avatarUrl,Integer id);
    //更新用户密码
    @Update("update user set password=#{rePassword},update_time=now() where id=#{id}")
    void updatePassword(String rePassword,Integer id);
}

2.2 业务层UserService

2.2.1 创建接口

文件地址:org/example/service/UserService.java

//更新用户信息
void update(User user);
//更新用户头像
void updateAvatar(String avatarUrl);
//更新用户密码
void updatePassword(String rePassword);

2.2.2 实现接口

文件地址:org/example/service/impl/UserServiceImpl.java

package org.example.service.impl;
import ...
@Service
public class UserServiceImpl implements UserService {
    ......
    ......
    //实现用户信息更新
    @Override
    public void update(User user) {
        //设置用户更新时间为当前系统时间
        //LocalDateTime.now()获得系统时间
        user.setUpdateTime(LocalDateTime.now());
        userMapper.update(user);
    }
    //实现用户头像更新
    @Override
    public void updateAvatar(String avatarUrl) {
        //由于请求后,线程池中将会存放该用户的信息,包含ID值
        Map<String,Object> map = ThreadLocalUtil.get();
        Integer id = (Integer) map.get("id");
        userMapper.updateAvatar(avatarUrl, id);
    }
    //实现用户密码更新
    @Override
    public void updatePassword(String rePassword) {
        Map<String,Object> map = ThreadLocalUtil.get();
        Integer id = (Integer) map.get("id");
        String md5String = Md5Util.getMD5String(rePassword);
        userMapper.updatePassword(md5String, id);
    }
}

2.3 控制层UserController

文件地址:org/example/controller/UserController.java

@RequestBody:将前端传来的数据自动转换成JSON格式的字符串,并且为对象User赋值

@Validate:开启参数校验

    //更新用户信息
    @PutMapping("/update")
    public Result update(@RequestBody @Validated User user){
        //调用业务层的更新用户方法
        userService.update(user);
        return Result.success();
    }
    @PutMapping("/updateavatar")
    //更新用户头像信息
    public Result updateAvatar(@RequestParam String avatarUrl){
        userService.updateAvatar(avatarUrl);
        return Result.success();
    }
    //更新用户密码信息
    @PostMapping("/updatePwd")
    public Result updatePwd(@RequestBody Map<String,String> params){
        // 获得前端传来的旧密码,新密码,确认密码
        // 校验数据
        String old
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值