SpringBoot日记本系统全程直播08:把个人中心完善一下撒~~

SpringBoot日记本系统全程直播08:把个人中心完善一下撒~~,第1张

前言

大家好,我是兔子呀,今天我继续给大家撸这个SpringBoot日记本系统哈,非常不错的一个项目,学习​javaweb编程必备。

目录

1.完成后的效果

2.后台逻辑

2.1 Controller控制器

2.2 Service服务类

3.前台页面

4.文件上传后台逻辑

本节完成内容:

1. 个人中心页面⭐

2.个人信息的修改⭐

3.SpringBoot文件上传和浏览⭐

1.完成后的效果

字段不多,难点在于图片的上传。

2.后台逻辑 2.1 Controller控制器
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    UserService userService;

    @Autowired
    RedisServiceImpl redisServiceImpl;

    String salt = "diary188";

    ......

    @RequestMapping("update")
    public Result update(@RequestBody User user){
        userService.update(user);
        return Result.success();
    }

    @RequestMapping("get")
    public User get(){
        return userService.getByUserId(StpUtil.getLoginIdAsLong());
    }

}

update方法用于更新用户对象,get方法用来获取当前登录对象的信息。

 2.2 Service服务类
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    UserMapper userMapper;

    @Autowired
    RedisServiceImpl redisServiceImpl;

    /**
     * 根据用户名获取用户
     * @param userName
     * @return
     */
    @Override
    public User getByUserName(String userName) {
        List users = userMapper.selectList(new QueryWrapper().eq("user_name", userName));
        if(users.size() > 0){
            return users.get(0);
        }
        return null;
    }

    /**
     * 保存用户
     * @param user
     */
    @Override
    public void save(User user) {
        userMapper.insert(user);
    }

    @Override
    public User getByUserId(long loginIdAsLong) {
        return userMapper.selectById(loginIdAsLong);
    }

    @Override
    public void update(User user) {
        LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        lambdaUpdateWrapper = lambdaUpdateWrapper.set(User::getNickName, user.getNickName())
                .set(User::getBirthday, user.getBirthday())
                .set(User::getGender, user.getGender())
                .set(User::getSignature, user.getSignature())
                .set(User::getUpdateTime, DateUtil.now());

        if(StrUtil.isNotEmpty(user.getFace())){
            lambdaUpdateWrapper = lambdaUpdateWrapper.set(User::getFace,user.getFace());
        }
        lambdaUpdateWrapper.eq(User::getUid, StpUtil.getLoginIdAsLong());
        userMapper.update(null,lambdaUpdateWrapper);
    }


}
3.前台页面

前台页面主要用的就是layUI的form组件和文件上传组件。

主要代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    个人中心
    
    
    
    
    
    




    
        
            
                
            
            
                
                    

4.文件上传后台逻辑

配置一下文件上传的路径和预览URL:

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(new String[] { "/upload/**" }).addResourceLocations(new String[] { "file:C:/upload/" });
    }
    
}

配置文件也要改

system:
  filepath: c:\upload
  urlpath: http://localhost/upload/

最后是文件上传的代码:

@RestController
public class UploadController {

    @Autowired
    AppConfig appConfig;

    @RequestMapping({"/upload"})
    public Map upload(@RequestParam("file") MultipartFile file) {
        String fileName = "";
        if (!file.isEmpty()){
            /**
             * 获取文件后缀名
             */
            String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));

            if(suffix.equals(".PNG") || suffix.equals(".png") || suffix.equals(".jpg") || suffix.equals(".JPG") ) {

            }else{
                throw new BizException(ExceptionCodeEnum.ERROR.setDesc("非法文件格式!"));
            }

            /**
             * 文件名
             */
            fileName = System.currentTimeMillis() + suffix;
            /**
             * 返回的文件路径
             */
            String fileNameForReturn = "/"+ StpUtil.getLoginIdAsLong()  + "/" + fileName;
            /**
             * 文件的保存路径
             */
            String saveFilePath = this.appConfig.getFilepath() + "/"+StpUtil.getLoginIdAsLong();
            /**
             * 父级目录若不存在就创建
             */
            if(!new File(saveFilePath).exists()) {
                new File(saveFilePath).mkdir();
            }
            String saveFileName = saveFilePath + "/" + fileName;

            File dest = new File(saveFileName);
            try {
                /**
                 * 拷贝文件
                 */
                file.transferTo(dest);
                return new HashMap(){{
                    put("file",fileNameForReturn);
                }} ;
            } catch (IOException e) {
                e.printStackTrace();
                throw new BizException(ExceptionCodeEnum.ERROR.setDesc("系统异常!"));
            }

        }

        return null;
    }

}

搞定!

⭐⭐⭐⭐⭐⭐⭐ 本章完,愿有所收获,一路长虹,祝你也祝我。⭐⭐⭐⭐⭐⭐⭐ 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/731243.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存