mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-15 02:57:10 +08:00
refactor(system/file): 重构文件管理表结构,新增计算文件大小接口
This commit is contained in:
@@ -67,9 +67,10 @@ public class CommonController {
|
||||
|
||||
@Operation(summary = "上传文件", description = "上传文件")
|
||||
@PostMapping("/file")
|
||||
public FileUploadResp upload(@NotNull(message = "文件不能为空") MultipartFile file, String path) throws IOException {
|
||||
public FileUploadResp upload(@NotNull(message = "文件不能为空") MultipartFile file,
|
||||
String parentPath) throws IOException {
|
||||
ValidationUtils.throwIf(file::isEmpty, "文件不能为空");
|
||||
FileInfo fileInfo = fileService.upload(file, path);
|
||||
FileInfo fileInfo = fileService.upload(file, parentPath);
|
||||
return FileUploadResp.builder()
|
||||
.id(fileInfo.getId())
|
||||
.url(fileInfo.getUrl())
|
||||
|
@@ -19,19 +19,27 @@ package top.continew.admin.controller.system;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.x.file.storage.core.FileInfo;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import top.continew.admin.common.controller.BaseController;
|
||||
import top.continew.admin.system.model.query.FileQuery;
|
||||
import top.continew.admin.system.model.req.FileReq;
|
||||
import top.continew.admin.system.model.resp.file.FileDirCalcSizeResp;
|
||||
import top.continew.admin.system.model.resp.file.FileResp;
|
||||
import top.continew.admin.system.model.resp.file.FileStatisticsResp;
|
||||
import top.continew.admin.system.model.resp.file.FileUploadResp;
|
||||
import top.continew.admin.system.service.FileService;
|
||||
import top.continew.starter.core.validation.ValidationUtils;
|
||||
import top.continew.starter.extension.crud.annotation.CrudRequestMapping;
|
||||
import top.continew.starter.extension.crud.enums.Api;
|
||||
import top.continew.starter.extension.crud.model.resp.IdResp;
|
||||
import top.continew.starter.log.annotation.Log;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 文件管理 API
|
||||
*
|
||||
@@ -44,6 +52,46 @@ import top.continew.starter.log.annotation.Log;
|
||||
@CrudRequestMapping(value = "/system/file", api = {Api.PAGE, Api.UPDATE, Api.DELETE})
|
||||
public class FileController extends BaseController<FileService, FileResp, FileResp, FileQuery, FileReq> {
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
* <p>
|
||||
* 公共上传文件请使用 {@link top.continew.admin.controller.common.CommonController#upload}
|
||||
* </p>
|
||||
*
|
||||
* @param file 文件
|
||||
* @param parentPath 上级目录
|
||||
* @return 文件上传响应参数
|
||||
* @throws IOException /
|
||||
*/
|
||||
@SaCheckPermission("system:file:upload")
|
||||
@Operation(summary = "上传文件", description = "上传文件")
|
||||
@PostMapping("/upload")
|
||||
public FileUploadResp upload(@NotNull(message = "文件不能为空") MultipartFile file,
|
||||
String parentPath) throws IOException {
|
||||
ValidationUtils.throwIf(file::isEmpty, "文件不能为空");
|
||||
FileInfo fileInfo = baseService.upload(file, parentPath);
|
||||
return FileUploadResp.builder()
|
||||
.id(fileInfo.getId())
|
||||
.url(fileInfo.getUrl())
|
||||
.thUrl(fileInfo.getThUrl())
|
||||
.metadata(fileInfo.getMetadata())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Operation(summary = "创建文件夹", description = "创建文件夹")
|
||||
@SaCheckPermission("system:file:createDir")
|
||||
@PostMapping("/dir")
|
||||
public IdResp<Long> createDir(@RequestBody FileReq req) {
|
||||
return new IdResp<>(baseService.createDir(req));
|
||||
}
|
||||
|
||||
@Operation(summary = "计算文件夹大小", description = "计算文件夹大小")
|
||||
@SaCheckPermission("system:file:calcDirSize")
|
||||
@GetMapping("/dir/{id}/size")
|
||||
public FileDirCalcSizeResp calcDirSize(@PathVariable Long id) {
|
||||
return new FileDirCalcSizeResp(baseService.calcDirSize(id));
|
||||
}
|
||||
|
||||
@Log(ignore = true)
|
||||
@Operation(summary = "查询文件资源统计", description = "查询文件资源统计")
|
||||
@SaCheckPermission("system:file:list")
|
||||
@@ -59,10 +107,4 @@ public class FileController extends BaseController<FileService, FileResp, FileRe
|
||||
public FileResp checkFile(String fileHash) {
|
||||
return baseService.check(fileHash);
|
||||
}
|
||||
|
||||
@Operation(summary = "创建文件夹", description = "创建文件夹")
|
||||
@PostMapping("/dir")
|
||||
public IdResp<Long> createDir(@RequestBody FileReq req) {
|
||||
return new IdResp<>(baseService.createDir(req));
|
||||
}
|
||||
}
|
@@ -58,6 +58,8 @@ VALUES
|
||||
(1114, '修改', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:file:update', 4, 1, 1, NOW()),
|
||||
(1115, '删除', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:file:delete', 5, 1, 1, NOW()),
|
||||
(1116, '下载', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:file:download', 6, 1, 1, NOW()),
|
||||
(1117, '创建文件夹', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:file:createDir', 7, 1, 1, NOW()),
|
||||
(1118, '计算文件夹大小', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:file:calcDirSize', 8, 1, 1, NOW()),
|
||||
|
||||
(1130, '字典管理', 1000, 2, '/system/dict', 'SystemDict', 'system/dict/index', NULL, 'bookmark', b'0', b'0', b'0', NULL, 7, 1, 1, NOW()),
|
||||
(1131, '列表', 1130, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:list', 1, 1, 1, NOW()),
|
||||
|
@@ -280,8 +280,9 @@ CREATE TABLE IF NOT EXISTS `sys_file` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`name` varchar(255) NOT NULL COMMENT '名称',
|
||||
`original_name` varchar(255) NOT NULL COMMENT '原始名称',
|
||||
`size` bigint(20) NOT NULL COMMENT '大小(字节)',
|
||||
`path` varchar(512) NOT NULL COMMENT '存储路径',
|
||||
`size` bigint(20) DEFAULT NULL COMMENT '大小(字节)',
|
||||
`parent_path` varchar(512) NOT NULL DEFAULT '/' COMMENT '上级目录',
|
||||
`path` varchar(512) NOT NULL COMMENT '路径',
|
||||
`extension` varchar(32) DEFAULT NULL COMMENT '扩展名',
|
||||
`content_type` varchar(255) DEFAULT NULL COMMENT '内容类型',
|
||||
`type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型(0: 目录;1:其他;2:图片;3:文档;4:视频;5:音频)',
|
||||
|
@@ -58,6 +58,8 @@ VALUES
|
||||
(1114, '修改', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:file:update', 4, 1, 1, NOW()),
|
||||
(1115, '删除', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:file:delete', 5, 1, 1, NOW()),
|
||||
(1116, '下载', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:file:download', 6, 1, 1, NOW()),
|
||||
(1117, '创建文件夹', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:file:createDir', 7, 1, 1, NOW()),
|
||||
(1118, '计算文件夹大小', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:file:calcDirSize', 8, 1, 1, NOW()),
|
||||
|
||||
(1130, '字典管理', 1000, 2, '/system/dict', 'SystemDict', 'system/dict/index', NULL, 'bookmark', false, false, false, NULL, 7, 1, 1, NOW()),
|
||||
(1131, '列表', 1130, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:list', 1, 1, 1, NOW()),
|
||||
|
@@ -466,7 +466,8 @@ CREATE TABLE IF NOT EXISTS "sys_file" (
|
||||
"id" int8 NOT NULL,
|
||||
"name" varchar(255) NOT NULL,
|
||||
"original_name" varchar(255) NOT NULL,
|
||||
"size" int8 NOT NULL,
|
||||
"size" int8 DEFAULT NULL,
|
||||
"parent_path" varchar(512) NOT NULL DEFAULT '/',
|
||||
"path" varchar(512) NOT NULL,
|
||||
"extension" varchar(100) DEFAULT NULL,
|
||||
"content_type" varchar(255) DEFAULT NULL,
|
||||
@@ -491,7 +492,8 @@ COMMENT ON COLUMN "sys_file"."id" IS 'ID';
|
||||
COMMENT ON COLUMN "sys_file"."name" IS '名称';
|
||||
COMMENT ON COLUMN "sys_file"."original_name" IS '原始名称';
|
||||
COMMENT ON COLUMN "sys_file"."size" IS '大小(字节)';
|
||||
COMMENT ON COLUMN "sys_file"."path" IS '存储路径';
|
||||
COMMENT ON COLUMN "sys_file"."parent_path" IS '上级目录';
|
||||
COMMENT ON COLUMN "sys_file"."path" IS '路径';
|
||||
COMMENT ON COLUMN "sys_file"."extension" IS '扩展名';
|
||||
COMMENT ON COLUMN "sys_file"."content_type" IS '内容类型';
|
||||
COMMENT ON COLUMN "sys_file"."type" IS '类型(0: 目录;1:其他;2:图片;3:文档;4:视频;5:音频)';
|
||||
|
Reference in New Issue
Block a user