基于javaweb+mysql的springboot线上网络文件管理系统(java+springboot+html+ssm+maven+mysql)

基于javaweb+mysql的springboot线上网络文件管理系统(java+springboot+html+ssm+maven+mysql)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+mysql的SpringBoot线上网络文件管理系统(java+springboot+html+ssm+maven+mysql)

项目介绍

本项目分为前后台,有管理员与用户两种角色;

管理员角色包含以下功能:

管理员登录,管理员主页,权限管理,分类管理,用户管理,文档管理,下载记录,上传记录等功能。 用户角色包含以下功能:

注册账号,登录,系统首页,我的资源查看,编辑资源,我的资料修改,文件上传,密码重置,邮箱信息,密码重置成功等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 8.0/5.7版本;

6.是否Maven项目:是;

技术栈

HTML+CSS+JavaScript+mysql+Spring+SpringMVC+mybatis+Spring boot

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;

  2. 运行项目,输入http://localhost:8091 登录

                    request.getSession().setAttribute(ValueConsts.USER_STRING, user);
                }
            }
        }
        if (level != InterceptorLevel.NONE) {
            boolean isRedirect = Checker.isNull(user) || (level == InterceptorLevel.ADMIN && user.getPermission() <
                    2) || (level == InterceptorLevel.SYSTEM && user.getPermission() < 3);
            if (isRedirect) {
                response.sendRedirect(DefaultValues.SIGNIN_PAGE);
                return false;
            }
        }
        return true;
    }
}
package com.zhazhapan.efo.web.controller;

/**
 */
@RestController
@RequestMapping("/auth")
@Api(value = "/auth", description = "权限表相关操作")
public class AuthController {

    private final IAuthService authService;

    @Autowired
    public AuthController(IAuthService authService) {this.authService = authService;}

    @ApiOperation(value = "添加权限记录", notes = "设置指定用户对指定文件的权限")
    @ApiImplicitParams({@ApiImplicitParam(name = "files", value = "文件", example = "file1,file2,file3", required = true),
            @ApiImplicitParam(name = "users", value = "用户", example = "user1,user2,user3", required = true),
            @ApiImplicitParam(name = "auths", value = "权限", example = "1,1,1,1", required = true)})
    @AuthInterceptor(InterceptorLevel.ADMIN)
    @RequestMapping(value = "", method = RequestMethod.POST)
    public String add(String files, String users, String auths) {
        System.out.println("files: " + files + " users: " + users + " auths: " + auths);

/**
 */
@Service
public class FileManagerServiceImpl implements IFileManagerService {

    private static Logger logger = Logger.getLogger(FileManagerServiceImpl.class);

    @Override
    public void multiDownload(HttpServletResponse response, String[] items, String destFile) throws IOException {
        File zip = ZipUtil.zip(new File(ValueConsts.USER_DESKTOP + File.separator + destFile), ValueConsts.FALSE,
                FileExecutor.getFiles(items));
        if (zip.exists()) {
            response.getOutputStream().write(FileExecutor.readFileToByteArray(zip));
            FileExecutor.deleteFile(zip);
        }
    }

    @Override
    public JSONObject upload(String destination, MultipartFile... files) {
        System.out.println(files.length);
        if (Checker.isNotEmpty(files)) {
            if (Checker.isWindows() && destination.length() < ValueConsts.TWO_INT) {
                destination = "C:";
            }
            for (MultipartFile file : files) {
            } else {
                jsonObject.put("message", "格式不合法");
            }
        } else {
            jsonObject.put("message", "验证码校验失败");
        }
        return jsonObject.toString();
    }

    @ApiOperation(value = "检测用户名是否已经注册")
    @ApiImplicitParam(name = "username", value = "用户名", required = true)
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/username/exists", method = RequestMethod.GET)
    public String usernameExists(String username) {
        jsonObject.put("exists", userService.usernameExists(username));
        return jsonObject.toString();
    }

    @ApiOperation(value = "检测邮箱是否已经注册")
    @ApiImplicitParam(name = "email", value = "邮箱", required = true)
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/email/exists", method = RequestMethod.GET)
    public String emailExists(String email) {
        jsonObject.put("exists", userService.emailExists(email));
        return jsonObject.toString();
    }

    private boolean isCodeValidate(String code) {
        return Checker.checkNull(code).equals(String.valueOf(request.getSession().getAttribute(DefaultValues
                .CODE_STRING)));
    }
}
package com.zhazhapan.efo.web.controller;

     * @param localUrl 本地路径
     *
     * @return 文件编号
     */
    long getFileId(String localUrl);

    /**
     * 获取所有文件基本信息
     *
     * @param user 用户名或邮箱
     * @param category 分类名称
     * @param file 文件名
     * @param offset 偏移
     *
     * @return {@link List}
     */
    List<FileBasicRecord> listBasicAll(String user, String file, String category, int offset);
}
package com.zhazhapan.efo.web.controller;

    /**
     * 更新密码
     *
     * @param password 密码
     * @param id 用户编号
     *
     * @return 是否更新成功
     */
    boolean updatePasswordById(String password, int id);

    /**
     * 检查密码是否合法
     *
     * @param password 密码
     *
     * @return {@link Boolean}
     */
    boolean checkPassword(String password);

    /**
     * 检查邮箱是否存在
     *
     * @param email 邮箱
     *
     * @return {@link Boolean}
     */
    boolean emailExists(String email);

    /**
     * 更新用户基本信息
     *
     * @param id 编号
     * @param avatar 头像
     * @param realName 真实姓名
     * @param email 邮箱
     *
     * @return 是否更新成功
     */
    boolean updateBasicInfoById(int id, String avatar, String realName, String email);

    /**

/**
 */
public interface IFileService {

    /**
     * 更新文件权限
     *
     * @param id 文件编号
     * @param auth 权限集
     *
     * @return 是否更新成功
     */
    boolean updateAuth(long id, String auth);

    /**
     * 获取文件权限
     *
     * @param id 文件编号
     *
     * @return {@link BaseAuthRecord}
     */
    BaseAuthRecord getAuth(long id);

    /**
     * 批量删除文件
     *
     * @param ids 所有文件编号
     *
     * @return 是否删除成功
     */
    boolean deleteFiles(String ids);

    /**
     * 更新文件路径
     *
     * @param id 文件编号
     * @param oldLocalUrl 原本地路径
     * @param localUrl 本地路径
     * @param visitUrl 访问路径
     *
     * @param request {@link HttpServletRequest}
     *
     * @return {@link File}
     */
    String getResource(String visitUrl, HttpServletRequest request);

    /**
     * 通过访问路径获取本地文件路径
     *
     * @param visitUrl 访问路径
     *
     * @return {@link String}
     */
    String getLocalUrlByVisitUrl(String visitUrl);

    /**
     * 获取所有文件
     *
     * @param userId 用户编号
     * @param offset 偏移
     * @param categoryId 分类编号
     * @param orderBy 排序方式
     * @param search 搜索
     *
     * @return {@link List}
     */
    List<FileRecord> listAll(int userId, int offset, int categoryId, String orderBy, String search);

    /**
     * 上传文件
     *
     * @param categoryId 分类ID
     * @param tag 标签
     * @param description 描述
     * @param prefix 自定义前缀
     * @param multipartFile 文件
     * @param user {@link User}
     *
     * @return 是否上传成功
     */
    boolean upload(int categoryId, String tag, String description, String prefix, MultipartFile multipartFile, User
            user);

    /**
     * 分享服务器本地文件
     *
    }

    @ApiOperation(value = "用户注册(当不需要验证邮箱时,邮箱和验证码可空)")
    @ApiImplicitParams({@ApiImplicitParam(name = "username", value = "用户名", required = true), @ApiImplicitParam(name
            = "email", value = "邮箱"), @ApiImplicitParam(name = "password", value = "密码", required = true),
            @ApiImplicitParam(name = "code", value = "验证码")})
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/register", method = RequestMethod.POST)
    public String register(String username, String email, String password, String code) {
        boolean emilVerify = StartApplication.settings.getBooleanUseEval(ConfigConsts.EMAIL_VERIFY_OF_SETTINGS);
        jsonObject.put("status", "error");
        if (!emilVerify || isCodeValidate(code)) {
            if (userService.usernameExists(username)) {
                jsonObject.put("message", "用户名已经存在");
            } else if (userService.emailExists(email)) {
                jsonObject.put("message", "该邮箱已经被注册啦");
            } else if (userService.register(username, email, password)) {
                jsonObject.put("status", "success");
            } else {
                jsonObject.put("message", "数据格式不合法");
            }
        } else {
            jsonObject.put("message", "验证码校验失败");
        }
        return jsonObject.toString();
    }

    @ApiOperation(value = "重置我的密码")
    @ApiImplicitParams({@ApiImplicitParam(name = "email", value = "邮箱", required = true), @ApiImplicitParam(name =
            "code", value = "验证码", required = true), @ApiImplicitParam(name = "password", value = "密码", required =
            true)})
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/password/reset", method = RequestMethod.PUT)
    public String resetPassword(String email, String code, String password) {
        jsonObject.put("status", "error");
        if (isCodeValidate(code)) {
            if (userService.resetPasswordByEmail(email, password)) {
                jsonObject.put("status", "success");
            } else {
                jsonObject.put("message", "格式不合法");
            }
        } else {
            jsonObject.put("message", "验证码校验失败");
        }
        return jsonObject.toString();
    }

    @ApiOperation(value = "检测用户名是否已经注册")
    @ApiImplicitParam(name = "username", value = "用户名", required = true)
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/username/exists", method = RequestMethod.GET)
     * 编辑文件
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject edit(JSONObject object);

    /**
     * 移除文件
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject remove(JSONObject object);

    /**
     * 复制文件
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject copy(JSONObject object);

    /**
     * 移动文件
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject move(JSONObject object);

    /**
     * 重命名
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject rename(JSONObject object);

    /**
     * 列出文件
    private final HttpServletRequest request;

    private final JSONObject jsonObject;

    @Autowired
    public UserController(IUserService userService, HttpServletRequest request, JSONObject jsonObject) {
        this.userService = userService;
        this.request = request;
        this.jsonObject = jsonObject;
    }

    @ApiOperation(value = "更新用户权限(注:不是文件权限)")
    @AuthInterceptor(InterceptorLevel.ADMIN)
    @RequestMapping(value = "/{id}/{permission}", method = RequestMethod.PUT)
    public String updatePermission(@PathVariable("id") int id, @PathVariable("permission") int permission) {
        User user = (User) request.getSession().getAttribute(ValueConsts.USER_STRING);
        if (user.getPermission() < ValueConsts.THREE_INT && permission > 1) {
            jsonObject.put("message", "权限不够,设置失败");
        } else if (userService.updatePermission(id, permission)) {
            jsonObject.put("message", "更新成功");
        } else {
            jsonObject.put("message", "更新失败,请稍后重新尝试");
        }
        return jsonObject.toJSONString();
    }

    @ApiOperation("重置用户密码(管理员接口)")
    @AuthInterceptor(InterceptorLevel.ADMIN)
    @RequestMapping(value = "/reset/{id}/{password}", method = RequestMethod.PUT)
    public String resetPassword(@PathVariable("id") int id, @PathVariable("password") String password) {
        return ControllerUtils.getResponse(userService.resetPassword(id, password));
    }

    @ApiOperation(value = "更新用户的默认文件权限")
    @ApiImplicitParam(name = "auth", value = "权限", example = "1,1,1,1", required = true)
    @AuthInterceptor(InterceptorLevel.ADMIN)
    @RequestMapping(value = "/{id}/auth", method = RequestMethod.PUT)
    public String updateFileAuth(@PathVariable("id") int id, String auth) {
        return ControllerUtils.getResponse(userService.updateFileAuth(id, auth));
    }

    @ApiOperation(value = "获取所有用户")
    @ApiImplicitParams({@ApiImplicitParam(name = "user", value = "指定用户(默认所有用户)"), @ApiImplicitParam(name = "offset",
            value = "偏移量", required = true)})
    @AuthInterceptor(InterceptorLevel.ADMIN)
    @RequestMapping(value = "/all", method = RequestMethod.GET)
    public String getUser(String user, int offset) {
        User u = (User) request.getSession().getAttribute(ValueConsts.USER_STRING);
        return Formatter.listToJson(userService.listUser(u.getPermission(), user, offset));
    @RequestMapping(value = "/{id}/auth", method = RequestMethod.PUT)
    public String updateAuth(@PathVariable("id") long id, String auth) {
        return ControllerUtils.getResponse(fileService.updateAuth(id, auth));
    }

    /**
     * 资源下载
     *
     * @param response {@link HttpServletResponse}
     */
    @ApiOperation(value = "通过访问路径获取文件资源")
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/**", method = RequestMethod.GET)
    public void getResource(HttpServletResponse response) throws IOException {
        ControllerUtils.loadResource(response, fileService.getResource(request.getServletPath(), request),
                ValueConsts.FALSE);
    }
}
package com.zhazhapan.efo.service.impl;

/**
 */
@Service

/**
 */
@RestController
@RequestMapping("/config")
@Api(value = "/config", description = "配置文件的相关操作")
public class ConfigController {

    private static Logger logger = Logger.getLogger(ConfigController.class);

    private final IConfigService configService;

    private final HttpServletRequest request;

    @Autowired
    public ConfigController(IConfigService configService, HttpServletRequest request) {
        this.configService = configService;
        this.request = request;
    }

    @ApiOperation(value = "更新配置文件")
    @ApiImplicitParam(name = "config", value = "配置文件内容", required = true)
    @AuthInterceptor(InterceptorLevel.ADMIN)
    @RequestMapping(value = "", method = RequestMethod.PUT)
    public String updateConfig(String config) {
        User user = (User) request.getSession().getAttribute(ValueConsts.USER_STRING);
        return jsonObject.toJSONString();
    }

    @AuthInterceptor(InterceptorLevel.SYSTEM)
    @RequestMapping(value = "/copy", method = RequestMethod.POST)
    public String copy(@RequestBody JSONObject json) {
        jsonObject.put("result", fileManagerService.copy(json));
        return jsonObject.toJSONString();
    }

    @AuthInterceptor(InterceptorLevel.SYSTEM)
    @RequestMapping(value = "/move", method = RequestMethod.POST)
    public String move(@RequestBody JSONObject json) {
        jsonObject.put("result", fileManagerService.move(json));
        return jsonObject.toJSONString();
    }

    @AuthInterceptor(InterceptorLevel.SYSTEM)
    @RequestMapping(value = "/rename", method = RequestMethod.POST)
    public String rename(@RequestBody JSONObject json) {
        jsonObject.put("result", fileManagerService.rename(json));
        return jsonObject.toJSONString();
    }

    @AuthInterceptor(InterceptorLevel.SYSTEM)
    @RequestMapping(value = "/list", method = RequestMethod.POST)
    public String list(@RequestBody JSONObject json) {
        jsonObject.put("result", fileManagerService.list(json));
        return jsonObject.toJSONString();
    }
}
package com.zhazhapan.efo.service;

/**
 */
public interface IFileService {

    @ApiOperation(value = "发送验证码")
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/{email}/code", method = RequestMethod.POST)
    public String sendVerifyCode(@PathVariable("email") String email) {
        int code = commonService.sendVerifyCode(email);
        if (code > 0) {
            request.getSession().setAttribute(DefaultValues.CODE_STRING, code);
            logger.info("verify code: " + code);
            jsonObject.put("status", "success");
        } else {
            jsonObject.put("status", "error");
        }
        return jsonObject.toString();
    }

    @ApiOperation(value = "验证验证码是否正确")
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/{code}/verification", method = RequestMethod.PUT)
    public String verifyCode(@PathVariable("code") String code) {
        boolean isSuccess = Checker.checkNull(code).equals(String.valueOf(request.getSession().getAttribute
                (DefaultValues.CODE_STRING)));
        return ControllerUtils.getResponse(isSuccess);
    }
}
package com.zhazhapan.efo.web.controller;


    @ApiOperation(value = "发送验证码")
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/{email}/code", method = RequestMethod.POST)
    public String sendVerifyCode(@PathVariable("email") String email) {
        int code = commonService.sendVerifyCode(email);
        if (code > 0) {
            request.getSession().setAttribute(DefaultValues.CODE_STRING, code);
            logger.info("verify code: " + code);
            jsonObject.put("status", "success");
        } else {
            jsonObject.put("status", "error");
        }
        return jsonObject.toString();
    }

    @ApiOperation(value = "验证验证码是否正确")
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/{code}/verification", method = RequestMethod.PUT)
    public String verifyCode(@PathVariable("code") String code) {
        boolean isSuccess = Checker.checkNull(code).equals(String.valueOf(request.getSession().getAttribute
                (DefaultValues.CODE_STRING)));
        return ControllerUtils.getResponse(isSuccess);
    }
}
package com.zhazhapan.efo.web.controller;

/**
 */
@RestController
@RequestMapping("/config")
     * 加载本地资源
     *
     * @param response 返回的Response
     * @param path 资源路径
     * @param download 直接下载
     */
    public static void loadResource(HttpServletResponse response, String path, boolean download) throws IOException {
        if (Checker.isNotEmpty(path)) {
            File file = new File(path);
            if (download) {
                setResponseFileName(response, file.getName());
            }
            FileInputStream in = new FileInputStream(file);
            ServletOutputStream os = response.getOutputStream();
            byte[] b;
            while (in.available() > 0) {
                b = in.available() > 1024 ? new byte[1024] : new byte[in.available()];
                in.read(b, 0, b.length);
                os.write(b, 0, b.length);
            }
            in.close();
            os.flush();
            os.close();
        } else {
            response.sendRedirect(DefaultValues.NOT_FOUND_PAGE);
        }
    }

    /**
     * 设置响应头的文件名
     *
     * @param response {@link HttpServletResponse}
     * @param fileName 文件名
     */
    public static void setResponseFileName(HttpServletResponse response, String fileName) throws
            UnsupportedEncodingException {
        response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"),
                "ISO-8859-1"));
    }
}
package com.zhazhapan.efo.web.controller;

     * @param auth 权限集
     *
     * @return 是否更新成功
     */
    boolean updateAuth(long id, String auth);

    /**
     * 获取文件权限
     *
     * @param id 文件编号
     *
     * @return {@link BaseAuthRecord}
     */
    BaseAuthRecord getAuth(long id);

    /**
     * 批量删除文件
     *
     * @param ids 所有文件编号
     *
     * @return 是否删除成功
     */
    boolean deleteFiles(String ids);

    /**
     * 更新文件路径
     *
     * @param id 文件编号
     * @param oldLocalUrl 原本地路径
     * @param localUrl 本地路径
     * @param visitUrl 访问路径
     *
     * @return 是否更新成功
     */
    boolean[] updateUrl(int id, String oldLocalUrl, String localUrl, String visitUrl);

    /**
     * 更新文件信息
     *
     * @param id 文件编号
     * @param user 用户对象
     * @param name 文件名
     * @param category 文件分类
     * @param tag 标签
     * @param description 文件描述
     *
     * @return 是否更新成功
     */
    boolean updateFileInfo(long id, User user, String name, String category, String tag, String description);

    /**

/**
 */
@RestController
@RequestMapping("/user")
@Api(value = "/user", description = "用户相关操作")
public class UserController {

    private final IUserService userService;

    private final HttpServletRequest request;

    private final JSONObject jsonObject;

    @Autowired
    public UserController(IUserService userService, HttpServletRequest request, JSONObject jsonObject) {
        this.userService = userService;
        this.request = request;
        this.jsonObject = jsonObject;
    }

    @ApiOperation(value = "更新用户权限(注:不是文件权限)")
    @AuthInterceptor(InterceptorLevel.ADMIN)
    @RequestMapping(value = "/{id}/{permission}", method = RequestMethod.PUT)
    public String updatePermission(@PathVariable("id") int id, @PathVariable("permission") int permission) {
        User user = (User) request.getSession().getAttribute(ValueConsts.USER_STRING);
        if (user.getPermission() < ValueConsts.THREE_INT && permission > 1) {
            jsonObject.put("message", "权限不够,设置失败");
        } else if (userService.updatePermission(id, permission)) {
            jsonObject.put("message", "更新成功");
        } else {
            jsonObject.put("message", "更新失败,请稍后重新尝试");
        }
        return jsonObject.toJSONString();
    }
     */
    JSONObject edit(JSONObject object);

    /**
     * 移除文件
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject remove(JSONObject object);

    /**
     * 复制文件
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject copy(JSONObject object);

    /**
     * 移动文件
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject move(JSONObject object);

    /**
     * 重命名
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject rename(JSONObject object);

    /**
     * 列出文件
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONArray list(JSONObject object);
}
package com.zhazhapan.efo.web.controller;

    JSONObject compress(JSONObject object);

    /**
     * 设置文件权限
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject setPermission(JSONObject object);

    /**
     * 创建文件夹
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject createFolder(JSONObject object);

    /**
     * 获取文件内容
     *
     * @param object {@link JSONObject}
     *
     * @return 文件内容
     */
    String getContent(JSONObject object);

    /**
     * 编辑文件
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject edit(JSONObject object);

    /**
     * 移除文件
     *
     * @param object {@link JSONObject}
     *
     * @return {@link JSONObject}
     */
    JSONObject remove(JSONObject object);

    /**
     * 复制文件
     *
     * @param object {@link JSONObject}
        }
        return user;
    }

    @Override
    public boolean register(String username, String email, String password) {
        boolean allowRegister = settings.getBooleanUseEval(ConfigConsts.ALLOW_REGISTER_OF_SETTINGS);
        if (allowRegister) {
            boolean isValid = Checker.isEmail(email) && checkPassword(password) && Pattern.compile(settings
                    .getStringUseEval(ConfigConsts.USERNAME_PATTERN_OF_SETTINGS)).matcher(username).matches();
            if (isValid) {
                User user = new User(username, ValueConsts.EMPTY_STRING, email, password);
                int[] auth = SettingConfig.getAuth(ConfigConsts.USER_DEFAULT_AUTH_OF_SETTING);
                user.setAuth(auth[0], auth[1], auth[2], auth[3], auth[4]);
                return userDAO.insertUser(user);
            }
        }
        return false;
    }

    @Override
    public boolean resetPasswordByEmail(String email, String password) {
        return Checker.isEmail(email) && checkPassword(password) && userDAO.updatePasswordByEmail(password, email);
    }

    @Override
    public boolean checkPassword(String password) {
        int min = settings.getIntegerUseEval(ConfigConsts.PASSWORD_MIN_LENGTH_OF_SETTINGS);
        int max = settings.getIntegerUseEval(ConfigConsts.PASSWORD_MAX_LENGTH_OF_SETTINGS);
        return Checker.isLimited(password, min, max);
    }

    @Override
    public boolean emailExists(String email) {
        return Checker.isEmail(email) && userDAO.checkEmail(email) > 0;
    }

    @Override
    public boolean updateBasicInfoById(int id, String avatar, String realName, String email) {
        return Checker.isEmail(email) && userDAO.updateBasicInfo(id, Checker.checkNull(avatar), Checker.checkNull
                (realName), email);
    }
     * @return 是否更新成功
     */
    boolean updateFileAuth(int id, String auths);

    /**
     * 获取用户
     *
     * @param permission 当前用户权限
     * @param condition 筛选条件
     * @param offset 偏移
     *
     * @return {@link List}
     */
    List<User> listUser(int permission, String condition, int offset);

    /**
     * 登录
     *
     * @param loginName 登录名
     * @param password 密码
     * @param token 自动登录
     * @param response 响应
     *
     * @return {@link User}
     */
    User login(String loginName, String password, String token, HttpServletResponse response);

    /**
     * 注册
     *
     * @param username 用户名
     * @param email 邮箱
     * @param password 密码
     *
     * @return 是否插入成功
     */
    boolean register(String username, String email, String password);

    /**
     * 重置密码
     *
     * @param email 邮箱
     * @param password 密码
     *
     * @return {@link Boolean}
     */
    boolean resetPasswordByEmail(String email, String password);

    /**
     * 检查用户名是否存在
     *
    /**
     * 更新文件路径
     *
     * @param id 文件编号
     * @param oldLocalUrl 原本地路径
     * @param localUrl 本地路径
     * @param visitUrl 访问路径
     *
     * @return 是否更新成功
     */
    boolean[] updateUrl(int id, String oldLocalUrl, String localUrl, String visitUrl);

    /**
     * 更新文件信息
     *
     * @param id 文件编号
     * @param user 用户对象
     * @param name 文件名
     * @param category 文件分类
     * @param tag 标签
     * @param description 文件描述
     *
     * @return 是否更新成功
     */
    boolean updateFileInfo(long id, User user, String name, String category, String tag, String description);

    /**
     * 删除文件,验证权限
     *
     * @param user 用户对象
     * @param fileId 文件编号
     *
     * @return {@link Boolean}
     */
    boolean removeFile(User user, long fileId);

    /**
     * 获取用户的下载资源
     *
     * @param userId 用户编号
    }

    @ApiOperation(value = "获取我的基本信息")
    @AuthInterceptor(InterceptorLevel.USER)
    @RequestMapping(value = "/info", method = RequestMethod.GET)
    public String getInfo() {
        User user = (User) request.getSession().getAttribute(ValueConsts.USER_STRING);
        JSONObject object = JSON.parseObject(user.toString());
        object.remove(ValueConsts.ID_STRING);
        object.remove(ValueConsts.PASSWORD_STRING);
        return object.toString();
    }

    @ApiOperation(value = "登录(用户名密码和token必须有一个输入)")
    @ApiImplicitParams({@ApiImplicitParam(name = "username", value = "用户名"), @ApiImplicitParam(name
            = "password", value = "密码"), @ApiImplicitParam(name = "auto", value = "是否自动登录", dataType = "Boolean"),
            @ApiImplicitParam(name = "token", value = "用于自动登录")})
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/login", method = RequestMethod.PUT)
    public String login(String username, String password, boolean auto, String token) {
        //使用密码登录
        User user = userService.login(username, password, ValueConsts.NULL_STRING, ValueConsts.NULL_RESPONSE);
        if (Checker.isNull(user) || user.getPermission() < 1) {
            jsonObject.put("status", "failed");
        } else {
            request.getSession().setAttribute(ValueConsts.USER_STRING, user);
            jsonObject.put("status", "success");
            if (auto) {
                jsonObject.put("token", TokenConfig.generateToken(token, user.getId()));
            } else {
                jsonObject.put("token", "");
                TokenConfig.removeTokenByValue(user.getId());
            }
        }
        return jsonObject.toString();
    }

    @ApiOperation(value = "用户注册(当不需要验证邮箱时,邮箱和验证码可空)")
    @ApiImplicitParams({@ApiImplicitParam(name = "username", value = "用户名", required = true), @ApiImplicitParam(name
            = "email", value = "邮箱"), @ApiImplicitParam(name = "password", value = "密码", required = true),
            @ApiImplicitParam(name = "code", value = "验证码")})
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/register", method = RequestMethod.POST)
    public String register(String username, String email, String password, String code) {
        boolean emilVerify = StartApplication.settings.getBooleanUseEval(ConfigConsts.EMAIL_VERIFY_OF_SETTINGS);
        jsonObject.put("status", "error");
        if (!emilVerify || isCodeValidate(code)) {
            if (userService.usernameExists(username)) {
    @ApiImplicitParams({@ApiImplicitParam(name = "offset", value = "偏移量", required = true), @ApiImplicitParam(name =
            "search", value = "记录匹配(允许为空)")})
    @AuthInterceptor(InterceptorLevel.USER)
    @RequestMapping(value = "/user/downloaded", method = RequestMethod.GET)
    public String getUserDownloaded(int offset, String search) {
        User user = (User) request.getSession().getAttribute(ValueConsts.USER_STRING);
        return Formatter.listToJson(fileService.listUserDownloaded(user.getId(), offset, search));
    }

    @ApiOperation(value = "获取我的上传记录")
    @ApiImplicitParams({@ApiImplicitParam(name = "offset", value = "偏移量", required = true), @ApiImplicitParam(name =
            "search", value = "记录匹配(允许为空)")})
    @AuthInterceptor(InterceptorLevel.USER)
    @RequestMapping(value = "/user/uploaded", method = RequestMethod.GET)
    public String getUserUploaded(int offset, String search) {
        User user = (User) request.getSession().getAttribute(ValueConsts.USER_STRING);
        return Formatter.listToJson(fileService.listUserUploaded(user.getId(), offset, search));
    }

    @ApiOperation(value = "文件上传")
    @ApiImplicitParams({@ApiImplicitParam(name = "categoryId", value = "分类ID", required = true), @ApiImplicitParam
            (name = "tag", value = "文件标签"), @ApiImplicitParam(name = "description", value = "文件描述"),
            @ApiImplicitParam(name = "prefix", value = "文件前缀(仅适用于管理员上传文件,普通用户无效)")})
    @AuthInterceptor(InterceptorLevel.USER)
    @RequestMapping(value = "", method = RequestMethod.POST)
    public String upload(int categoryId, String tag, String description, String prefix, @RequestParam("file")
            MultipartFile multipartFile) {
        User user = (User) request.getSession().getAttribute(ValueConsts.USER_STRING);
        return ControllerUtils.getResponse(fileService.upload(categoryId, tag, description, prefix, multipartFile,
                user));
    }

    @ApiOperation(value = "获取文件记录")
    @ApiImplicitParams({@ApiImplicitParam(name = "offset", value = "偏移量", required = true), @ApiImplicitParam(name =
            "categoryId", value = "分类ID", required = true), @ApiImplicitParam(name = "orderBy", value = "排序方式",
            required = true, example = "id desc"), @ApiImplicitParam(name = "search", value = "记录匹配(允许为空)")})
    @AuthInterceptor(InterceptorLevel.NONE)
    @RequestMapping(value = "/all", method = RequestMethod.GET)
    public String getAll(int offset, int categoryId, String orderBy, String search) {
        User user = (User) request.getSession().getAttribute(ValueConsts.USER_STRING);
        boolean canGet = StartApplication.settings.getBooleanUseEval(ConfigConsts.ANONYMOUS_VISIBLE_OF_SETTING) ||
                (Checker.isNotNull(user) && user.getIsVisible() == 1);
        if (canGet) {
            int userId = Checker.isNull(user) ? 0 : user.getId();
            return Formatter.listToJson(fileService.listAll(userId, offset, categoryId, orderBy, search));
        } else {
            jsonObject.put("error", "权限被限制,无法获取资源,请联系管理员");
            return jsonObject.toString();
        }
    }

    @ApiOperation(value = "删除指定文件")
    @AuthInterceptor(InterceptorLevel.USER)
                in.read(b, 0, b.length);
                os.write(b, 0, b.length);
            }
            in.close();
            os.flush();
            os.close();
        } else {
            response.sendRedirect(DefaultValues.NOT_FOUND_PAGE);
        }
    }

    /**
     * 设置响应头的文件名
     *
     * @param response {@link HttpServletResponse}
     * @param fileName 文件名
     */
    public static void setResponseFileName(HttpServletResponse response, String fileName) throws
            UnsupportedEncodingException {
        response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"),
                "ISO-8859-1"));
    }
}
package com.zhazhapan.efo.web.controller;

/**
 */
@RestController
@RequestMapping(value = "/downloaded")
@Api(value = "/downloaded", description = "下载记录相关操作")
public class DownloadedController {

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值