基于springboot,vue企业网盘系统

开发工具:IDEA

服务器:Tomcat9.0, jdk1.8

项目构建:maven

数据库:mysql5.7

系统分前后台,采用前后端分离

前端技术:vue+elementUI等框架实现

服务端技术:springboot+jpa

项目功能描述:

1.登录、注册、首页

2.用户管理:添加用户、修改用户、删除用户、查询用户、分配角色等功能

3.权限管理:

(1)角色列表:添加、修改、删除、分配权限

(2)权限列表

4.文件管理

(1)文件上传

(2)文件列表:分享文件、详情、下载文件、删除文件

5.个人中心:修改个人信息和修改密码

6.退出登录

 

 

 

 

 

 

 

 

 

 

package com.kcqnly.application.controller;

import cn.hutool.core.util.StrUtil;
import com.kcqnly.application.common.Result;
import com.kcqnly.application.entity.Role;
import com.kcqnly.application.entity.User;
import com.kcqnly.application.model.UserInfo;
import com.kcqnly.application.model.UserList;
import com.kcqnly.application.model.UserParam;
import com.kcqnly.application.service.RoleService;
import com.kcqnly.application.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;


@RestController
public class UserController {

    @Autowired
    private UserService userService;
    @Autowired
    private RoleService roleService;
    @Autowired
    private BCryptPasswordEncoder bCryptPasswordEncoder;

    @PreAuthorize("hasAuthority('用户列表')")
    @GetMapping("/users")
    public Result getUserList(String query, int pageNum, int pageSize) {

        if (StrUtil.isEmpty(query) || StrUtil.isBlank(query)) {
            List<UserParam> userParams = new ArrayList<>();
            List<User> userList = userService.findAll(pageNum - 1, pageSize);
            for (User user : userList) {
                userParams.add(new UserParam(user));
            }
            UserList res = new UserList(userService.getTotal(), pageNum, userParams);
            return Result.ok("获取用户列表成功", res);
        } else {
            List<UserParam> userParams = new ArrayList<>();
            List<User> userList = userService.findByUsernameLike(query);
            for (User user : userList) {
                userParams.add(new UserParam(user));
            }
            UserList res = new UserList(userParams.size(), pageNum, userParams);
            return Result.ok("查询成功", res);
        }


    }

//    @PreAuthorize("hasAuthority('添加用户')")
    @PostMapping("/users")
    public Result addUser(@RequestBody User user) {
        if (userService.findByUsername(user.getUsername()) != null) {
            return Result.error("用户名已存在");
        }
        String rawPassword = user.getPassword();
        user.setState(true);
        user.setRole(roleService.findById(1));
        user.setPassword(new BCryptPasswordEncoder().encode(rawPassword));
        user.setUseSize(0f);
        user.setSurplusSize(user.getMaxSize());
        user.setCreateTime(new Date());
        user.setUpdateTime(new Date());
        userService.save(user);
        return Result.ok("添加成功", new UserParam(user));
    }

    @PreAuthorize("hasAuthority('设置用户状态')")
    @PostMapping("/users/{id}/state/{state}")
    public Result changeState(@PathVariable("id") int id, @PathVariable("state") boolean state) {
        UserParam userParam = new UserParam(userService.updateState(id, state));
        return Result.ok("更新成功", userParam);
    }

    /**
     * 编辑用户信息时,弹框内的用户数据
     *
     */
    @PreAuthorize("hasAuthority('用户列表')")
    @GetMapping("/users/{id}")
    public Result search(@PathVariable("id") int id) {
        User user =userService.findById(id);
        if (user!=null) {
            UserParam userParam = new UserParam(user);
            return Result.ok("搜索成功", userParam);
        }
        return Result.error("用户id不存在");
    }

    @PreAuthorize("hasAuthority('删除用户')")
    @DeleteMapping("/users/{id}")
    public Result deleteUser(@PathVariable("id") int id) {
        userService.deleteById(id);
        return Result.ok("删除成功", null);
    }

    @PreAuthorize("hasAuthority('获取用户详情')")
    @PutMapping("/users/{id}")
    public Result changeInformation(@PathVariable("id") int id, @RequestBody UserParam req) {
        UserParam userParam = new UserParam(userService.updateInformation(id, req.getMobile(), req.getEmail(),req.getMaxSize()));
        return Result.ok("更新成功", userParam);
    }

    @PreAuthorize("hasAuthority('分配用户角色')")
    @PutMapping("/users/{id}/role")
    public Result changeRole(@PathVariable("id") int id, @RequestBody Role role) {
        UserParam userParam = new UserParam(userService.updateRole(id, role.getId()));
        return Result.ok("成功", userParam);
    }

    /**
     * 用户个人设置
     *
     */
    @GetMapping("/users/info")
    public Result getCurrentUser(Authentication authentication) {

        User user = (User) authentication.getPrincipal();
        UserInfo userInfo = new UserInfo(user);
        return Result.ok(userInfo);
    }

    @PostMapping("/users/checkPass")
    public Result checkPassword(Authentication authentication, String password) {
        User user = (User) authentication.getPrincipal();
        if (bCryptPasswordEncoder.matches(password, user.getPassword())) {
            return Result.ok(null);
        } else {
            return Result.error("原密码错误");
        }
    }

    @PostMapping("/users/updatePassword")
    public Result updatePassword(Authentication authentication,String password)
    {
        User user = (User) authentication.getPrincipal();
        user.setPassword(bCryptPasswordEncoder.encode(password));
        userService.save(user);
        return Result.ok("更新密码成功",null);
    }
}
package com.kcqnly.application.controller;

import cn.hutool.core.util.StrUtil;
import com.kcqnly.application.common.GoFastDfsApi;
import com.kcqnly.application.common.Result;
import com.kcqnly.application.utils.FileUtil;
import com.kcqnly.application.utils.SecurityUtil;
import com.kcqnly.application.utils.UploadUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;


@RestController
public class UploadController {
    @Value("${upload.temp.path}")
    private String tempPath;

    @Value("${fileServer.url}")
    private String serverUrl;

    @Value("fileServer.showUrl")
    private String showUrl;

    @PostMapping("/file/upload/")
    @PreAuthorize("hasAuthority('文件列表')")
    public Result moreFileUpload(@RequestBody MultipartFile file,  String path) {
        String scene = path;
        if (file.isEmpty()) {
            return Result.error("请选择文件");
        }
        //判断是否超过剩余空间
        if (!FileUtil.isUpload(file.getSize())){
            return Result.error("文件超出剩余空间");
        }

        if (path.contains("/")) {
            scene = path.substring(0, path.lastIndexOf("/"));
        }
        //加上用户名前缀,区分是哪个用户的
        path= SecurityUtil.getLoginUsername()+"/"+path;
        //path="img/壁纸" scene="img"
        return UploadUtil.upload(tempPath, serverUrl + GoFastDfsApi.UPLOAD, path, scene, file, showUrl);
    }
}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT教程资源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值