refactor: 文件管理数据库字段调整 (#153)

This commit is contained in:
luoqiz
2025-04-16 14:14:50 +08:00
committed by GitHub
parent 9b79990cc0
commit 943d640995
7 changed files with 28 additions and 22 deletions

View File

@@ -89,7 +89,7 @@ public class FileRecorderImpl implements FileRecorder {
file.setExtension(fileInfo.getExt());
file.setType(FileTypeEnum.getByExtension(file.getExtension()));
file.setContentType(fileInfo.getContentType());
file.setMd5(fileInfo.getHashInfo().getSha256());
file.setSha256(fileInfo.getHashInfo().getSha256());
file.setMetadata(JSONUtil.toJsonStr(fileInfo.getMetadata()));
file.setThumbnailUrl(fileInfo.getThUrl());
file.setThumbnailSize(fileInfo.getThSize());

View File

@@ -86,9 +86,9 @@ public class FileDO extends BaseDO {
private FileTypeEnum type;
/**
* MD5
* SHA256
*/
private String md5;
private String sha256;
/**
* 元数据

View File

@@ -87,10 +87,10 @@ public class FileResp extends BaseDetailResp {
private FileTypeEnum type;
/**
* MD5
* SHA256
*/
@Schema(description = "MD5", example = "193572f83684128a0d0f993e97100f8a")
private String md5;
@Schema(description = "SHA256", example = "722f185c48bed892d6fa12e2b8bf1e5f8200d4a70f522fb62112b6caf13cb74e")
private String sha256;
/**
* 元数据

View File

@@ -96,7 +96,17 @@ public interface FileService extends BaseService<FileResp, FileResp, FileQuery,
.getDayOfMonth() + StringConstants.SLASH;
}
/**
* 检查文件是否存在
* @param fileHash
* @return
*/
FileResp check(String fileHash);
/**
* 创建目录
* @param req
* @return
*/
IdResp<Long> createDir(FileReq req);
}

View File

@@ -91,10 +91,8 @@ public class FileServiceImpl extends BaseServiceImpl<FileMapper, FileDO, FileRes
}
UploadPretreatment uploadPretreatment = fileStorageService.of(file)
.setPlatform(storage.getCode())
.setHashCalculatorMd5(true)
.setHashCalculatorSha256(true)
.putAttr(ClassUtil.getClassName(StorageDO.class, false), storage)
// .setPath(StrUtil.removePrefix(path, StringConstants.SLASH));
.setPath(path);
// 图片文件生成缩略图
if (FileTypeEnum.IMAGE.getExtensions().contains(FileNameUtil.extName(file.getOriginalFilename()))) {
@@ -143,7 +141,7 @@ public class FileServiceImpl extends BaseServiceImpl<FileMapper, FileDO, FileRes
@Override
public FileResp check(String fileHash) {
FileDO file = baseMapper.lambdaQuery().eq(FileDO::getMd5, fileHash).one();
FileDO file = baseMapper.lambdaQuery().eq(FileDO::getSha256, fileHash).one();
if (file != null) {
return get(file.getId());
}
@@ -169,7 +167,7 @@ public class FileServiceImpl extends BaseServiceImpl<FileMapper, FileDO, FileRes
fileDo.setExtension("dir");
fileDo.setContentType("");
fileDo.setType(FileTypeEnum.DIR);
fileDo.setMd5("");
fileDo.setSha256("");
fileDo.setStorageId(storage.getId());
baseMapper.insert(fileDo);
return new IdResp<>(fileDo.getId());

View File

@@ -286,7 +286,7 @@ CREATE TABLE IF NOT EXISTS `sys_file` (
`extension` varchar(100) DEFAULT NULL COMMENT '扩展名',
`content_type` varchar(64) NOT NULL COMMENT '内容类型',
`type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型0: 目录1其他2图片3文档4视频5音频',
`md5` varchar(128) NOT NULL COMMENT 'MD5',
`sha256` varchar(256) NOT NULL COMMENT 'SHA256',
`metadata` text DEFAULT NULL COMMENT '元数据',
`thumbnail_size` bigint(20) DEFAULT NULL COMMENT '缩略图大小(字节)',
`thumbnail_url` varchar(512) DEFAULT NULL COMMENT '缩略图URL',
@@ -294,15 +294,14 @@ CREATE TABLE IF NOT EXISTS `sys_file` (
`storage_id` bigint(20) NOT NULL COMMENT '存储ID',
`create_user` bigint(20) NOT NULL COMMENT '创建人',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_user` bigint(20) NOT NULL COMMENT '修改人',
`update_time` datetime NOT NULL COMMENT '修改时间',
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
INDEX `idx_url`(`url`),
INDEX `idx_md5`(`md5`),
INDEX `idx_sha256`(`sha256`),
INDEX `idx_type`(`type`),
INDEX `idx_storage_id`(`storage_id`),
INDEX `idx_create_user`(`create_user`),
INDEX `idx_update_user`(`update_user`)
INDEX `idx_create_user`(`create_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件表';
CREATE TABLE IF NOT EXISTS `sys_client` (

View File

@@ -472,7 +472,7 @@ CREATE TABLE IF NOT EXISTS "sys_file" (
"extension" varchar(100) DEFAULT NULL,
"content_type" varchar(64) NOT NULL,
"type" int2 NOT NULL DEFAULT 1,
"md5" varchar(128) NOT NULL,
"sha256" varchar(256) NOT NULL,
"metadata" text DEFAULT NULL,
"thumbnail_size" int8 DEFAULT NULL,
"thumbnail_url" varchar(512) DEFAULT NULL,
@@ -480,16 +480,15 @@ CREATE TABLE IF NOT EXISTS "sys_file" (
"storage_id" int8 NOT NULL,
"create_user" int8 NOT NULL,
"create_time" timestamp NOT NULL,
"update_user" int8 NOT NULL,
"update_time" timestamp NOT NULL,
"update_user" int8 DEFAULT NULL,
"update_time" timestamp DEFAULT NULL,
PRIMARY KEY ("id")
);
CREATE INDEX "idx_file_url" ON "sys_file" ("url");
CREATE INDEX "idx_file_type" ON "sys_file" ("type");
CREATE INDEX "idx_file_md5" ON "sys_file" ("md5");
CREATE INDEX "idx_file_sha256" ON "sys_file" ("sha256");
CREATE INDEX "idx_file_storage_id" ON "sys_file" ("storage_id");
CREATE INDEX "idx_file_create_user" ON "sys_file" ("create_user");
CREATE INDEX "idx_file_update_user" ON "sys_file" ("update_user");
COMMENT ON COLUMN "sys_file"."id" IS 'ID';
COMMENT ON COLUMN "sys_file"."name" IS '名称';
COMMENT ON COLUMN "sys_file"."size" IS '大小(字节)';
@@ -499,7 +498,7 @@ COMMENT ON COLUMN "sys_file"."abs_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音频';
COMMENT ON COLUMN "sys_file"."md5" IS 'MD5';
COMMENT ON COLUMN "sys_file"."sha256" IS 'SHA256';
COMMENT ON COLUMN "sys_file"."metadata" IS '元数据';
COMMENT ON COLUMN "sys_file"."thumbnail_size" IS '缩略图大小(字节)';
COMMENT ON COLUMN "sys_file"."thumbnail_url" IS '缩略图URL';