From 82484c9cd611720f6327286593c404e26519b201 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Sat, 8 Jan 2022 17:10:04 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.1.6=E3=80=91=E3=80=90file=E3=80=91?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0file=5Fstorage=E8=A1=A8=EF=BC=8C=E7=94=A8?= =?UTF-8?q?=E6=9D=A5=E5=AD=98=E5=82=A8=E7=B3=BB=E7=BB=9F=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/api/constants/FileConstants.java | 10 ---- .../file/api/enums/FileLocationEnum.java | 7 ++- .../file/api/expander/FileConfigExpander.java | 10 ---- .../controller/SysFileInfoController.java | 4 ++ .../file/modular/entity/SysFileStorage.java | 32 +++++++++++++ .../file/modular/factory/FileInfoFactory.java | 17 ++++++- .../modular/mapper/SysFileStorageMapper.java | 14 ++++++ .../mapper/mapping/SysFileStorageMapper.xml | 5 ++ .../service/SysFileStorageService.java | 40 ++++++++++++++++ .../service/impl/SysFileInfoServiceImpl.java | 44 +++++++++--------- .../impl/SysFileStorageServiceImpl.java | 46 +++++++++++++++++++ 11 files changed, 183 insertions(+), 46 deletions(-) create mode 100644 kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/entity/SysFileStorage.java create mode 100644 kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/SysFileStorageMapper.java create mode 100644 kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/mapping/SysFileStorageMapper.xml create mode 100644 kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/SysFileStorageService.java create mode 100644 kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileStorageServiceImpl.java diff --git a/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java b/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java index 1c0e04f24..1f9670599 100644 --- a/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java +++ b/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java @@ -87,14 +87,4 @@ public interface FileConstants { */ String DEFAULT_AVATAR_FILE_OBJ_NAME = "defaultAvatar.png"; - /** - * 默认头像的文件文件名 - */ - String DEFAULT_AVATAR_FILE_FINAL_NAME = "10000.png"; - - /** - * 系统默认的头像 - */ - String DEFAULT_BASE_64_AVATAR = "/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAFA3PEY8MlBGQUZaVVBfeMiCeG5uePWvuZHI////////////////////////////////////////////////////2wBDAVVaWnhpeOuCguv/////////////////////////////////////////////////////////////////////////wAARCAIcAhEDASEAAhEBAxEB/8QAGQABAQEBAQEAAAAAAAAAAAAAAAECAwQF/8QAJRABAQACAgIBBQEBAQEAAAAAAAECESExAxJBBCIyUWETcRSB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oADAMBAAIRAxEAPwDxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAIAAAAAAAKAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAapqgetPWgetPWgetPWoL609aB609aB609aB609aB609aaHrQ0ZFBQAAAAAAAAEAAAAAUAAAUkQNICyba/zvwCXGzuIAAAACgAAACAAoAAAAAAAoA5jSCgAAAAAAAAAAAgACgDWOvkEk3eF9aglAPjg7BdT9tTOyaFanklmrGcsJreIM6v6QQAABQAAQAUUEAABQAAAAAHMaQUAAAAAAAAAAAWcpZoFmNy6TVnYOlwn+e52sxxyxnxQYv20kl7QPaziJ7X9qJsAlXYIAull18orUzny1PXL+AxljZWRAAAABQAAAAAAANgbNgbNgbAYFBQAAAEAAABQAFgJ1XSSUGsftykiZ/lYisXeNXLU5lVGLdgIAACgbWWAuy2WczlAkTfIrWOWu2rhMpvEHK8CoAAgAAAAbNgGwNmwNmwNmwNmwNgIKCgAAAIAAACgAGwKuN0Drr2w4vMc7lf/qCZXbKgAAAAAoC8Lx8oN+ks3jWbLPgVn/rWN10DXkxtx3pyVEAAAAAAAAAAAAAAAAAFAAAAQAAAABRABQaxysvBnZeUGBQAAAAAFBZpqaqC6s66WXXIq3GZf9Y9csQax8lnGSZ4/M6BzsRUAAAAAFAAAAAAAAAQAUAAABAAAFQBFAAAXYCAAAAAAAA1bCA3zOiVFaljUy9b+4gmcl50xrnXwoZYcbjnoAVAAAAAQAAA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"; - } diff --git a/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/FileLocationEnum.java b/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/FileLocationEnum.java index 75754a1a8..cbdaeb99b 100644 --- a/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/FileLocationEnum.java +++ b/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/FileLocationEnum.java @@ -53,7 +53,12 @@ public enum FileLocationEnum { /** * 本地 */ - LOCAL(4); + LOCAL(4), + + /** + * 数据库中 + */ + DB(5); private final Integer code; diff --git a/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/expander/FileConfigExpander.java b/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/expander/FileConfigExpander.java index 54b9fe955..98672eade 100644 --- a/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/expander/FileConfigExpander.java +++ b/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/expander/FileConfigExpander.java @@ -106,14 +106,4 @@ public class FileConfigExpander { return ConfigContext.me().getSysConfigValueWithDefault("SYS_LOCAL_FILE_SAVE_PATH_WINDOWS", String.class, new LocalFileProperties().getLocalFileSavePathWin()); } - /** - * 默认的系统头像,base64编码的 - * - * @author fengshuonan - * @date 2020/12/29 20:10 - */ - public static String getDefaultAvatarBase64() { - return ConfigContext.me().getSysConfigValueWithDefault("SYS_DEFAULT_AVATAR_BASE64", String.class, FileConstants.DEFAULT_BASE_64_AVATAR); - } - } diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java index 6a5465b21..b7ac3c3ed 100644 --- a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java +++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java @@ -72,6 +72,10 @@ public class SysFileInfoController { /** * 上传文件 + *

+ * 支持上传到数据库,参数fileLocation传递5即可 + *

+ * fileLocation传递其他值或不传值,不能决定文件上传到本地还是阿里云或其他地方 * * @author majianguo * @date 2020/12/27 13:17 diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/entity/SysFileStorage.java b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/entity/SysFileStorage.java new file mode 100644 index 000000000..fb9611b4e --- /dev/null +++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/entity/SysFileStorage.java @@ -0,0 +1,32 @@ +package cn.stylefeng.roses.kernel.file.modular.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + + +/** + * 文件存储信息实例类 + * + * @author fengshuonan + * @date 2022/01/08 15:53 + */ +@TableName("sys_file_storage") +@Data +public class SysFileStorage { + + /** + * 文件主键id,关联file_info表的主键 + */ + @TableId(value = "file_id", type = IdType.ASSIGN_ID) + private Long fileId; + + /** + * 具体文件的字节信息 + */ + @TableField("file_bytes") + private byte[] fileBytes; + +} \ No newline at end of file diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/factory/FileInfoFactory.java b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/factory/FileInfoFactory.java index af8e095f2..7a210943c 100644 --- a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/factory/FileInfoFactory.java +++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/factory/FileInfoFactory.java @@ -31,12 +31,14 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import cn.stylefeng.roses.kernel.file.api.FileOperatorApi; +import cn.stylefeng.roses.kernel.file.api.enums.FileLocationEnum; import cn.stylefeng.roses.kernel.file.api.enums.FileStatusEnum; import cn.stylefeng.roses.kernel.file.api.exception.FileException; import cn.stylefeng.roses.kernel.file.api.exception.enums.FileExceptionEnum; import cn.stylefeng.roses.kernel.file.api.expander.FileConfigExpander; import cn.stylefeng.roses.kernel.file.api.pojo.request.SysFileInfoRequest; import cn.stylefeng.roses.kernel.file.modular.entity.SysFileInfo; +import cn.stylefeng.roses.kernel.file.modular.service.SysFileStorageService; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import org.springframework.web.multipart.MultipartFile; @@ -62,6 +64,7 @@ public class FileInfoFactory { public static SysFileInfo createSysFileInfo(MultipartFile file, SysFileInfoRequest sysFileInfoRequest) { FileOperatorApi fileOperatorApi = SpringUtil.getBean(FileOperatorApi.class); + SysFileStorageService fileStorageService = SpringUtil.getBean(SysFileStorageService.class); // 生成文件的唯一id Long fileId = IdWorker.getId(); @@ -88,7 +91,12 @@ public class FileInfoFactory { if (StrUtil.isNotEmpty(sysFileInfoRequest.getFileBucket())) { fileBucket = sysFileInfoRequest.getFileBucket(); } - fileOperatorApi.storageFile(fileBucket, finalFileName, bytes); + // 如果是存在数据库库里,单独处理一下 + if (FileLocationEnum.DB.getCode().equals(sysFileInfoRequest.getFileLocation())) { + fileStorageService.saveFile(fileId, bytes); + } else { + fileOperatorApi.storageFile(fileBucket, finalFileName, bytes); + } } catch (IOException e) { throw new FileException(FileExceptionEnum.ERROR_FILE, e.getMessage()); } @@ -102,7 +110,12 @@ public class FileInfoFactory { // 封装存储文件信息(上传替换公共信息) SysFileInfo sysFileInfo = new SysFileInfo(); sysFileInfo.setFileId(fileId); - sysFileInfo.setFileLocation(fileOperatorApi.getFileLocationEnum().getCode()); + // 如果是存在数据库库里,单独处理一下 + if (FileLocationEnum.DB.getCode().equals(sysFileInfoRequest.getFileLocation())) { + sysFileInfo.setFileLocation(FileLocationEnum.DB.getCode()); + } else { + sysFileInfo.setFileLocation(fileOperatorApi.getFileLocationEnum().getCode()); + } sysFileInfo.setFileBucket(fileBucket); sysFileInfo.setFileObjectName(finalFileName); sysFileInfo.setFileOriginName(originalFilename); diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/SysFileStorageMapper.java b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/SysFileStorageMapper.java new file mode 100644 index 000000000..dc66dcaf0 --- /dev/null +++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/SysFileStorageMapper.java @@ -0,0 +1,14 @@ +package cn.stylefeng.roses.kernel.file.modular.mapper; + +import cn.stylefeng.roses.kernel.file.modular.entity.SysFileStorage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 文件存储信息 Mapper 接口 + * + * @author fengshuonan + * @date 2022/01/08 15:53 + */ +public interface SysFileStorageMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/mapping/SysFileStorageMapper.xml b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/mapping/SysFileStorageMapper.xml new file mode 100644 index 000000000..e602c984f --- /dev/null +++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/mapping/SysFileStorageMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/SysFileStorageService.java b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/SysFileStorageService.java new file mode 100644 index 000000000..16ed6ed99 --- /dev/null +++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/SysFileStorageService.java @@ -0,0 +1,40 @@ +package cn.stylefeng.roses.kernel.file.modular.service; + +import cn.stylefeng.roses.kernel.file.modular.entity.SysFileStorage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 文件存储信息 服务类 + * + * @author fengshuonan + * @date 2022/01/08 15:53 + */ +public interface SysFileStorageService extends IService { + + /** + * 将文件存储在库中 + * + * @author fengshuonan + * @date 2022/1/8 16:08 + */ + void saveFile(Long fileId, byte[] bytes); + + /** + * 获取文件的访问url + * + * @param fileId 文件id + * @author fengshuonan + * @date 2022/1/8 16:12 + */ + String getFileAuthUrl(String fileId); + + /** + * 获取文件不带鉴权的访问url + * + * @param fileId 文件id + * @author fengshuonan + * @date 2022/1/8 16:12 + */ + String getFileUnAuthUrl(String fileId); + +} \ No newline at end of file diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java index 13f6560b4..acc59e53b 100644 --- a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java +++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java @@ -25,7 +25,6 @@ package cn.stylefeng.roses.kernel.file.modular.service.impl; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.codec.Base64; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; @@ -37,7 +36,6 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.file.api.FileInfoApi; import cn.stylefeng.roses.kernel.file.api.FileOperatorApi; -import cn.stylefeng.roses.kernel.file.api.constants.FileConstants; import cn.stylefeng.roses.kernel.file.api.enums.FileLocationEnum; import cn.stylefeng.roses.kernel.file.api.enums.FileStatusEnum; import cn.stylefeng.roses.kernel.file.api.exception.FileException; @@ -50,11 +48,12 @@ import cn.stylefeng.roses.kernel.file.api.util.DownloadUtil; import cn.stylefeng.roses.kernel.file.api.util.PdfFileTypeUtil; import cn.stylefeng.roses.kernel.file.api.util.PicFileTypeUtil; import cn.stylefeng.roses.kernel.file.modular.entity.SysFileInfo; +import cn.stylefeng.roses.kernel.file.modular.entity.SysFileStorage; import cn.stylefeng.roses.kernel.file.modular.factory.FileInfoFactory; import cn.stylefeng.roses.kernel.file.modular.mapper.SysFileInfoMapper; import cn.stylefeng.roses.kernel.file.modular.service.SysFileInfoService; +import cn.stylefeng.roses.kernel.file.modular.service.SysFileStorageService; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; -import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -93,6 +92,9 @@ public class SysFileInfoServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysFileInfo::getFileObjectName, sysFileInfoRequest.getFileObjectName()); @@ -439,11 +439,9 @@ public class SysFileInfoServiceImpl extends ServiceImpl