diff --git a/pom.xml b/pom.xml
index f8489a7..1cfee0b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,8 +42,6 @@
2.7.0
-
- 1.12.600
2.2.0
@@ -225,11 +223,6 @@
${okhttp.version}
-
- com.amazonaws
- aws-java-sdk-s3
- ${aws-java-sdk-s3.version}
-
org.dromara.sms4j
@@ -550,11 +543,6 @@
-
- com.amazonaws
- aws-java-sdk-s3
-
-
org.apache.velocity
diff --git a/src/main/java/org/dromara/common/core/service/OssService.java b/src/main/java/org/dromara/common/core/service/OssService.java
deleted file mode 100644
index 43742b3..0000000
--- a/src/main/java/org/dromara/common/core/service/OssService.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.dromara.common.core.service;
-
-/**
- * 通用 OSS服务
- *
- * @author Lion Li
- */
-public interface OssService {
-
- /**
- * 通过ossId查询对应的url
- *
- * @param ossIds ossId串逗号分隔
- * @return url串逗号分隔
- */
- String selectUrlByIds(String ossIds);
-
-}
diff --git a/src/main/java/org/dromara/common/oss/constant/OssConstant.java b/src/main/java/org/dromara/common/oss/constant/OssConstant.java
deleted file mode 100644
index 9d8db93..0000000
--- a/src/main/java/org/dromara/common/oss/constant/OssConstant.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.dromara.common.oss.constant;
-
-import org.dromara.common.core.constant.GlobalConstants;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * 对象存储常量
- *
- * @author Lion Li
- */
-public interface OssConstant {
-
- /**
- * 默认配置KEY
- */
- String DEFAULT_CONFIG_KEY = GlobalConstants.GLOBAL_REDIS_KEY + "sys_oss:default_config";
-
- /**
- * 预览列表资源开关Key
- */
- String PEREVIEW_LIST_RESOURCE_KEY = "sys.oss.previewListResource";
-
- /**
- * 系统数据ids
- */
- List SYSTEM_DATA_IDS = Arrays.asList(1L, 2L, 3L, 4L);
-
- /**
- * 云服务商
- */
- String[] CLOUD_SERVICE = new String[] {"aliyun", "qcloud", "qiniu", "obs"};
-
- /**
- * https 状态
- */
- String IS_HTTPS = "Y";
-
-}
diff --git a/src/main/java/org/dromara/common/oss/core/OssClient.java b/src/main/java/org/dromara/common/oss/core/OssClient.java
deleted file mode 100644
index 53e05c9..0000000
--- a/src/main/java/org/dromara/common/oss/core/OssClient.java
+++ /dev/null
@@ -1,262 +0,0 @@
-package org.dromara.common.oss.core;
-
-import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.util.IdUtil;
-import com.amazonaws.ClientConfiguration;
-import com.amazonaws.HttpMethod;
-import com.amazonaws.Protocol;
-import com.amazonaws.auth.AWSCredentials;
-import com.amazonaws.auth.AWSCredentialsProvider;
-import com.amazonaws.auth.AWSStaticCredentialsProvider;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.client.builder.AwsClientBuilder;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3Client;
-import com.amazonaws.services.s3.AmazonS3ClientBuilder;
-import com.amazonaws.services.s3.model.*;
-import org.dromara.common.core.utils.DateUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.oss.constant.OssConstant;
-import org.dromara.common.oss.entity.UploadResult;
-import org.dromara.common.oss.enumd.AccessPolicyType;
-import org.dromara.common.oss.enumd.PolicyType;
-import org.dromara.common.oss.exception.OssException;
-import org.dromara.common.oss.properties.OssProperties;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Date;
-
-/**
- * S3 存储协议 所有兼容S3协议的云厂商均支持
- * 阿里云 腾讯云 七牛云 minio
- *
- * @author Lion Li
- */
-public class OssClient {
-
- private final String configKey;
-
- private final OssProperties properties;
-
- private final AmazonS3 client;
-
- public OssClient(String configKey, OssProperties ossProperties) {
- this.configKey = configKey;
- this.properties = ossProperties;
- try {
- AwsClientBuilder.EndpointConfiguration endpointConfig =
- new AwsClientBuilder.EndpointConfiguration(properties.getEndpoint(), properties.getRegion());
-
- AWSCredentials credentials = new BasicAWSCredentials(properties.getAccessKey(), properties.getSecretKey());
- AWSCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials);
- ClientConfiguration clientConfig = new ClientConfiguration();
- if (OssConstant.IS_HTTPS.equals(properties.getIsHttps())) {
- clientConfig.setProtocol(Protocol.HTTPS);
- } else {
- clientConfig.setProtocol(Protocol.HTTP);
- }
- AmazonS3ClientBuilder build = AmazonS3Client.builder()
- .withEndpointConfiguration(endpointConfig)
- .withClientConfiguration(clientConfig)
- .withCredentials(credentialsProvider)
- .disableChunkedEncoding();
- if (!StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE)) {
- // minio 使用https限制使用域名访问 需要此配置 站点填域名
- build.enablePathStyleAccess();
- }
- this.client = build.build();
-
- createBucket();
- } catch (Exception e) {
- if (e instanceof OssException) {
- throw e;
- }
- throw new OssException("配置错误! 请检查系统配置:[" + e.getMessage() + "]");
- }
- }
-
- public void createBucket() {
- try {
- String bucketName = properties.getBucketName();
- if (client.doesBucketExistV2(bucketName)) {
- return;
- }
- CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
- AccessPolicyType accessPolicy = getAccessPolicy();
- createBucketRequest.setCannedAcl(accessPolicy.getAcl());
- client.createBucket(createBucketRequest);
- client.setBucketPolicy(bucketName, getPolicy(bucketName, accessPolicy.getPolicyType()));
- } catch (Exception e) {
- throw new OssException("创建Bucket失败, 请核对配置信息:[" + e.getMessage() + "]");
- }
- }
-
- public UploadResult upload(byte[] data, String path, String contentType) {
- return upload(new ByteArrayInputStream(data), path, contentType);
- }
-
- public UploadResult upload(InputStream inputStream, String path, String contentType) {
- if (!(inputStream instanceof ByteArrayInputStream)) {
- inputStream = new ByteArrayInputStream(IoUtil.readBytes(inputStream));
- }
- try {
- ObjectMetadata metadata = new ObjectMetadata();
- metadata.setContentType(contentType);
- metadata.setContentLength(inputStream.available());
- PutObjectRequest putObjectRequest = new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata);
- // 设置上传对象的 Acl 为公共读
- putObjectRequest.setCannedAcl(getAccessPolicy().getAcl());
- client.putObject(putObjectRequest);
- } catch (Exception e) {
- throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]");
- }
- return UploadResult.builder().url(getUrl() + "/" + path).filename(path).build();
- }
-
- public UploadResult upload(File file, String path) {
- try {
- PutObjectRequest putObjectRequest = new PutObjectRequest(properties.getBucketName(), path, file);
- // 设置上传对象的 Acl 为公共读
- putObjectRequest.setCannedAcl(getAccessPolicy().getAcl());
- client.putObject(putObjectRequest);
- } catch (Exception e) {
- throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]");
- }
- return UploadResult.builder().url(getUrl() + "/" + path).filename(path).build();
- }
-
- public void delete(String path) {
- path = path.replace(getUrl() + "/", "");
- try {
- client.deleteObject(properties.getBucketName(), path);
- } catch (Exception e) {
- throw new OssException("删除文件失败,请检查配置信息:[" + e.getMessage() + "]");
- }
- }
-
- public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) {
- return upload(data, getPath(properties.getPrefix(), suffix), contentType);
- }
-
- public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) {
- return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType);
- }
-
- public UploadResult uploadSuffix(File file, String suffix) {
- return upload(file, getPath(properties.getPrefix(), suffix));
- }
-
- /**
- * 获取文件元数据
- *
- * @param path 完整文件路径
- */
- public ObjectMetadata getObjectMetadata(String path) {
- path = path.replace(getUrl() + "/", "");
- S3Object object = client.getObject(properties.getBucketName(), path);
- return object.getObjectMetadata();
- }
-
- public InputStream getObjectContent(String path) {
- path = path.replace(getUrl() + "/", "");
- S3Object object = client.getObject(properties.getBucketName(), path);
- return object.getObjectContent();
- }
-
- public String getUrl() {
- String domain = properties.getDomain();
- String endpoint = properties.getEndpoint();
- String header = OssConstant.IS_HTTPS.equals(properties.getIsHttps()) ? "https://" : "http://";
- // 云服务商直接返回
- if (StringUtils.containsAny(endpoint, OssConstant.CLOUD_SERVICE)) {
- if (StringUtils.isNotBlank(domain)) {
- return header + domain;
- }
- return header + properties.getBucketName() + "." + endpoint;
- }
- // minio 单独处理
- if (StringUtils.isNotBlank(domain)) {
- return header + domain + "/" + properties.getBucketName();
- }
- return header + endpoint + "/" + properties.getBucketName();
- }
-
- public String getPath(String prefix, String suffix) {
- // 生成uuid
- String uuid = IdUtil.fastSimpleUUID();
- // 文件路径
- String path = DateUtils.datePath() + "/" + uuid;
- if (StringUtils.isNotBlank(prefix)) {
- path = prefix + "/" + path;
- }
- return path + suffix;
- }
-
-
- public String getConfigKey() {
- return configKey;
- }
-
- /**
- * 获取私有URL链接
- *
- * @param objectKey 对象KEY
- * @param second 授权时间
- */
- public String getPrivateUrl(String objectKey, Integer second) {
- GeneratePresignedUrlRequest generatePresignedUrlRequest =
- new GeneratePresignedUrlRequest(properties.getBucketName(), objectKey)
- .withMethod(HttpMethod.GET)
- .withExpiration(new Date(System.currentTimeMillis() + 1000L * second));
- URL url = client.generatePresignedUrl(generatePresignedUrlRequest);
- return url.toString();
- }
-
- /**
- * 检查配置是否相同
- */
- public boolean checkPropertiesSame(OssProperties properties) {
- return this.properties.equals(properties);
- }
-
- /**
- * 获取当前桶权限类型
- *
- * @return 当前桶权限类型code
- */
- public AccessPolicyType getAccessPolicy() {
- return AccessPolicyType.getByType(properties.getAccessPolicy());
- }
-
- private static String getPolicy(String bucketName, PolicyType policyType) {
- StringBuilder builder = new StringBuilder();
- builder.append("{\n\"Statement\": [\n{\n\"Action\": [\n");
- builder.append(switch (policyType) {
- case WRITE -> "\"s3:GetBucketLocation\",\n\"s3:ListBucketMultipartUploads\"\n";
- case READ_WRITE -> "\"s3:GetBucketLocation\",\n\"s3:ListBucket\",\n\"s3:ListBucketMultipartUploads\"\n";
- default -> "\"s3:GetBucketLocation\"\n";
- });
- builder.append("],\n\"Effect\": \"Allow\",\n\"Principal\": \"*\",\n\"Resource\": \"arn:aws:s3:::");
- builder.append(bucketName);
- builder.append("\"\n},\n");
- if (policyType == PolicyType.READ) {
- builder.append("{\n\"Action\": [\n\"s3:ListBucket\"\n],\n\"Effect\": \"Deny\",\n\"Principal\": \"*\",\n\"Resource\": \"arn:aws:s3:::");
- builder.append(bucketName);
- builder.append("\"\n},\n");
- }
- builder.append("{\n\"Action\": ");
- builder.append(switch (policyType) {
- case WRITE -> "[\n\"s3:AbortMultipartUpload\",\n\"s3:DeleteObject\",\n\"s3:ListMultipartUploadParts\",\n\"s3:PutObject\"\n],\n";
- case READ_WRITE -> "[\n\"s3:AbortMultipartUpload\",\n\"s3:DeleteObject\",\n\"s3:GetObject\",\n\"s3:ListMultipartUploadParts\",\n\"s3:PutObject\"\n],\n";
- default -> "\"s3:GetObject\",\n";
- });
- builder.append("\"Effect\": \"Allow\",\n\"Principal\": \"*\",\n\"Resource\": \"arn:aws:s3:::");
- builder.append(bucketName);
- builder.append("/*\"\n}\n],\n\"Version\": \"2012-10-17\"\n}\n");
- return builder.toString();
- }
-
-}
diff --git a/src/main/java/org/dromara/common/oss/entity/UploadResult.java b/src/main/java/org/dromara/common/oss/entity/UploadResult.java
deleted file mode 100644
index a6f57e5..0000000
--- a/src/main/java/org/dromara/common/oss/entity/UploadResult.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.dromara.common.oss.entity;
-
-import lombok.Builder;
-import lombok.Data;
-
-/**
- * 上传返回体
- *
- * @author Lion Li
- */
-@Data
-@Builder
-public class UploadResult {
-
- /**
- * 文件路径
- */
- private String url;
-
- /**
- * 文件名
- */
- private String filename;
-}
diff --git a/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java b/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java
deleted file mode 100644
index 9074d72..0000000
--- a/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.dromara.common.oss.enumd;
-
-import com.amazonaws.services.s3.model.CannedAccessControlList;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * 桶访问策略配置
- *
- * @author 陈賝
- */
-@Getter
-@AllArgsConstructor
-public enum AccessPolicyType {
-
- /**
- * private
- */
- PRIVATE("0", CannedAccessControlList.Private, PolicyType.WRITE),
-
- /**
- * public
- */
- PUBLIC("1", CannedAccessControlList.PublicRead, PolicyType.READ),
-
- /**
- * custom
- */
- CUSTOM("2",CannedAccessControlList.PublicRead, PolicyType.READ);
-
- /**
- * 桶 权限类型
- */
- private final String type;
-
- /**
- * 文件对象 权限类型
- */
- private final CannedAccessControlList acl;
-
- /**
- * 桶策略类型
- */
- private final PolicyType policyType;
-
- public static AccessPolicyType getByType(String type) {
- for (AccessPolicyType value : values()) {
- if (value.getType().equals(type)) {
- return value;
- }
- }
- throw new RuntimeException("'type' not found By " + type);
- }
-
-}
diff --git a/src/main/java/org/dromara/common/oss/enumd/PolicyType.java b/src/main/java/org/dromara/common/oss/enumd/PolicyType.java
deleted file mode 100644
index fe96341..0000000
--- a/src/main/java/org/dromara/common/oss/enumd/PolicyType.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.dromara.common.oss.enumd;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * minio策略配置
- *
- * @author Lion Li
- */
-@Getter
-@AllArgsConstructor
-public enum PolicyType {
-
- /**
- * 只读
- */
- READ("read-only"),
-
- /**
- * 只写
- */
- WRITE("write-only"),
-
- /**
- * 读写
- */
- READ_WRITE("read-write");
-
- /**
- * 类型
- */
- private final String type;
-
-}
diff --git a/src/main/java/org/dromara/common/oss/exception/OssException.java b/src/main/java/org/dromara/common/oss/exception/OssException.java
deleted file mode 100644
index 52e9623..0000000
--- a/src/main/java/org/dromara/common/oss/exception/OssException.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.dromara.common.oss.exception;
-
-import java.io.Serial;
-
-/**
- * OSS异常类
- *
- * @author Lion Li
- */
-public class OssException extends RuntimeException {
-
- @Serial
- private static final long serialVersionUID = 1L;
-
- public OssException(String msg) {
- super(msg);
- }
-
-}
diff --git a/src/main/java/org/dromara/common/oss/factory/OssFactory.java b/src/main/java/org/dromara/common/oss/factory/OssFactory.java
deleted file mode 100644
index 763b090..0000000
--- a/src/main/java/org/dromara/common/oss/factory/OssFactory.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.dromara.common.oss.factory;
-
-import org.dromara.common.core.constant.CacheNames;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.common.oss.constant.OssConstant;
-import org.dromara.common.oss.core.OssClient;
-import org.dromara.common.oss.exception.OssException;
-import org.dromara.common.oss.properties.OssProperties;
-import org.dromara.common.redis.utils.CacheUtils;
-import org.dromara.common.redis.utils.RedisUtils;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * 文件上传Factory
- *
- * @author Lion Li
- */
-@Slf4j
-public class OssFactory {
-
- private static final Map CLIENT_CACHE = new ConcurrentHashMap<>();
-
- /**
- * 获取默认实例
- */
- public static OssClient instance() {
- // 获取redis 默认类型
- String configKey = RedisUtils.getCacheObject(OssConstant.DEFAULT_CONFIG_KEY);
- if (StringUtils.isEmpty(configKey)) {
- throw new OssException("文件存储服务类型无法找到!");
- }
- return instance(configKey);
- }
-
- /**
- * 根据类型获取实例
- */
- public static synchronized OssClient instance(String configKey) {
- String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey);
- if (json == null) {
- throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
- }
- OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
- // 使用租户标识避免多个租户相同key实例覆盖
- String key = properties.getTenantId() + ":" + configKey;
- OssClient client = CLIENT_CACHE.get(key);
- if (client == null) {
- CLIENT_CACHE.put(key, new OssClient(configKey, properties));
- log.info("创建OSS实例 key => {}", configKey);
- return CLIENT_CACHE.get(key);
- }
- // 配置不相同则重新构建
- if (!client.checkPropertiesSame(properties)) {
- CLIENT_CACHE.put(key, new OssClient(configKey, properties));
- log.info("重载OSS实例 key => {}", configKey);
- return CLIENT_CACHE.get(key);
- }
- return client;
- }
-
-}
diff --git a/src/main/java/org/dromara/common/oss/properties/OssProperties.java b/src/main/java/org/dromara/common/oss/properties/OssProperties.java
deleted file mode 100644
index cb37206..0000000
--- a/src/main/java/org/dromara/common/oss/properties/OssProperties.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.dromara.common.oss.properties;
-
-import lombok.Data;
-
-/**
- * OSS对象存储 配置属性
- *
- * @author Lion Li
- */
-@Data
-public class OssProperties {
-
- /**
- * 租户id
- */
- private String tenantId;
-
- /**
- * 访问站点
- */
- private String endpoint;
-
- /**
- * 自定义域名
- */
- private String domain;
-
- /**
- * 前缀
- */
- private String prefix;
-
- /**
- * ACCESS_KEY
- */
- private String accessKey;
-
- /**
- * SECRET_KEY
- */
- private String secretKey;
-
- /**
- * 存储空间名
- */
- private String bucketName;
-
- /**
- * 存储区域
- */
- private String region;
-
- /**
- * 是否https(Y=是,N=否)
- */
- private String isHttps;
-
- /**
- * 桶权限类型(0private 1public 2custom)
- */
- private String accessPolicy;
-
-}
diff --git a/src/main/java/org/dromara/common/translation/core/impl/OssUrlTranslationImpl.java b/src/main/java/org/dromara/common/translation/core/impl/OssUrlTranslationImpl.java
deleted file mode 100644
index fc6f6df..0000000
--- a/src/main/java/org/dromara/common/translation/core/impl/OssUrlTranslationImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.dromara.common.translation.core.impl;
-
-import org.dromara.common.core.service.OssService;
-import org.dromara.common.translation.annotation.TranslationType;
-import org.dromara.common.translation.constant.TransConstant;
-import org.dromara.common.translation.core.TranslationInterface;
-import lombok.AllArgsConstructor;
-
-/**
- * OSS翻译实现
- *
- * @author Lion Li
- */
-@AllArgsConstructor
-@TranslationType(type = TransConstant.OSS_ID_TO_URL)
-public class OssUrlTranslationImpl implements TranslationInterface {
-
- private final OssService ossService;
-
- @Override
- public String translation(Object key, String other) {
- if (key instanceof String ids) {
- return ossService.selectUrlByIds(ids);
- } else if (key instanceof Long id) {
- return ossService.selectUrlByIds(id.toString());
- }
- return null;
- }
-}
diff --git a/src/main/java/org/dromara/system/controller/system/SysOssConfigController.java b/src/main/java/org/dromara/system/controller/system/SysOssConfigController.java
deleted file mode 100644
index 24ddaff..0000000
--- a/src/main/java/org/dromara/system/controller/system/SysOssConfigController.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.dromara.system.controller.system;
-
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.core.validate.QueryGroup;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.common.idempotent.annotation.RepeatSubmit;
-import org.dromara.common.log.annotation.Log;
-import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.system.domain.bo.SysOssConfigBo;
-import org.dromara.system.domain.vo.SysOssConfigVo;
-import org.dromara.system.service.ISysOssConfigService;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 对象存储配置
- *
- * @author Lion Li
- * @author 孤舟烟雨
- * @date 2021-08-13
- */
-@Validated
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/resource/oss/config")
-public class SysOssConfigController extends BaseController {
-
- private final ISysOssConfigService ossConfigService;
-
- /**
- * 查询对象存储配置列表
- */
- @SaCheckPermission("system:ossConfig:list")
- @GetMapping("/list")
- public TableDataInfo list(@Validated(QueryGroup.class) SysOssConfigBo bo, PageQuery pageQuery) {
- return ossConfigService.queryPageList(bo, pageQuery);
- }
-
- /**
- * 获取对象存储配置详细信息
- *
- * @param ossConfigId OSS配置ID
- */
- @SaCheckPermission("system:ossConfig:list")
- @GetMapping("/{ossConfigId}")
- public R getInfo(@NotNull(message = "主键不能为空")
- @PathVariable Long ossConfigId) {
- return R.ok(ossConfigService.queryById(ossConfigId));
- }
-
- /**
- * 新增对象存储配置
- */
- @SaCheckPermission("system:ossConfig:add")
- @Log(title = "对象存储配置", businessType = BusinessType.INSERT)
- @RepeatSubmit()
- @PostMapping()
- public R add(@Validated(AddGroup.class) @RequestBody SysOssConfigBo bo) {
- return toAjax(ossConfigService.insertByBo(bo));
- }
-
- /**
- * 修改对象存储配置
- */
- @SaCheckPermission("system:ossConfig:edit")
- @Log(title = "对象存储配置", businessType = BusinessType.UPDATE)
- @RepeatSubmit()
- @PutMapping()
- public R edit(@Validated(EditGroup.class) @RequestBody SysOssConfigBo bo) {
- return toAjax(ossConfigService.updateByBo(bo));
- }
-
- /**
- * 删除对象存储配置
- *
- * @param ossConfigIds OSS配置ID串
- */
- @SaCheckPermission("system:ossConfig:remove")
- @Log(title = "对象存储配置", businessType = BusinessType.DELETE)
- @DeleteMapping("/{ossConfigIds}")
- public R remove(@NotEmpty(message = "主键不能为空")
- @PathVariable Long[] ossConfigIds) {
- return toAjax(ossConfigService.deleteWithValidByIds(List.of(ossConfigIds), true));
- }
-
- /**
- * 状态修改
- */
- @SaCheckPermission("system:ossConfig:edit")
- @Log(title = "对象存储状态修改", businessType = BusinessType.UPDATE)
- @PutMapping("/changeStatus")
- public R changeStatus(@RequestBody SysOssConfigBo bo) {
- return toAjax(ossConfigService.updateOssConfigStatus(bo));
- }
-}
diff --git a/src/main/java/org/dromara/system/controller/system/SysOssController.java b/src/main/java/org/dromara/system/controller/system/SysOssController.java
deleted file mode 100644
index 73ada3b..0000000
--- a/src/main/java/org/dromara/system/controller/system/SysOssController.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package org.dromara.system.controller.system;
-
-
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.hutool.core.util.ObjectUtil;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.core.validate.QueryGroup;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.common.log.annotation.Log;
-import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.system.domain.bo.SysOssBo;
-import org.dromara.system.domain.vo.SysOssUploadVo;
-import org.dromara.system.domain.vo.SysOssVo;
-import org.dromara.system.service.ISysOssService;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.constraints.NotEmpty;
-import lombok.RequiredArgsConstructor;
-import org.springframework.http.MediaType;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * 文件上传 控制层
- *
- * @author Lion Li
- */
-@Validated
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/resource/oss")
-public class SysOssController extends BaseController {
-
- private final ISysOssService ossService;
-
- /**
- * 查询OSS对象存储列表
- */
- @SaCheckPermission("system:oss:list")
- @GetMapping("/list")
- public TableDataInfo list(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) {
- return ossService.queryPageList(bo, pageQuery);
- }
-
- /**
- * 查询OSS对象基于id串
- *
- * @param ossIds OSS对象ID串
- */
- @SaCheckPermission("system:oss:list")
- @GetMapping("/listByIds/{ossIds}")
- public R> listByIds(@NotEmpty(message = "主键不能为空")
- @PathVariable Long[] ossIds) {
- List list = ossService.listByIds(Arrays.asList(ossIds));
- return R.ok(list);
- }
-
- /**
- * 上传OSS对象存储
- *
- * @param file 文件
- */
- @SaCheckPermission("system:oss:upload")
- @Log(title = "OSS对象存储", businessType = BusinessType.INSERT)
- @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
- public R upload(@RequestPart("file") MultipartFile file) {
- if (ObjectUtil.isNull(file)) {
- return R.fail("上传文件不能为空");
- }
- SysOssVo oss = ossService.upload(file);
- SysOssUploadVo uploadVo = new SysOssUploadVo();
- uploadVo.setUrl(oss.getUrl());
- uploadVo.setFileName(oss.getOriginalName());
- uploadVo.setOssId(oss.getOssId().toString());
- return R.ok(uploadVo);
- }
-
- /**
- * 下载OSS对象
- *
- * @param ossId OSS对象ID
- */
- @SaCheckPermission("system:oss:download")
- @GetMapping("/download/{ossId}")
- public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException {
- ossService.download(ossId, response);
- }
-
- /**
- * 删除OSS对象存储
- *
- * @param ossIds OSS对象ID串
- */
- @SaCheckPermission("system:oss:remove")
- @Log(title = "OSS对象存储", businessType = BusinessType.DELETE)
- @DeleteMapping("/{ossIds}")
- public R remove(@NotEmpty(message = "主键不能为空")
- @PathVariable Long[] ossIds) {
- return toAjax(ossService.deleteWithValidByIds(List.of(ossIds), true));
- }
-
-}
diff --git a/src/main/java/org/dromara/system/controller/system/SysProfileController.java b/src/main/java/org/dromara/system/controller/system/SysProfileController.java
index f9c4b3d..5756148 100644
--- a/src/main/java/org/dromara/system/controller/system/SysProfileController.java
+++ b/src/main/java/org/dromara/system/controller/system/SysProfileController.java
@@ -2,10 +2,9 @@ package org.dromara.system.controller.system;
import cn.dev33.satoken.secure.BCrypt;
import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.io.FileUtil;
+import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.core.utils.file.MimeTypeUtils;
import org.dromara.common.encrypt.annotation.ApiEncrypt;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
@@ -14,19 +13,11 @@ import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.bo.SysUserPasswordBo;
import org.dromara.system.domain.bo.SysUserProfileBo;
-import org.dromara.system.domain.vo.AvatarVo;
import org.dromara.system.domain.vo.ProfileVo;
-import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.domain.vo.SysUserVo;
-import org.dromara.system.service.ISysOssService;
import org.dromara.system.service.ISysUserService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.Arrays;
/**
* 个人信息 业务处理
@@ -40,7 +31,6 @@ import java.util.Arrays;
public class SysProfileController extends BaseController {
private final ISysUserService userService;
- private final ISysOssService ossService;
/**
* 个人信息
@@ -99,28 +89,4 @@ public class SysProfileController extends BaseController {
}
return R.fail("修改密码异常,请联系管理员");
}
-
- /**
- * 头像上传
- *
- * @param avatarfile 用户头像
- */
- @Log(title = "用户头像", businessType = BusinessType.UPDATE)
- @PostMapping(value = "/avatar", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
- public R avatar(@RequestPart("avatarfile") MultipartFile avatarfile) {
- if (!avatarfile.isEmpty()) {
- String extension = FileUtil.extName(avatarfile.getOriginalFilename());
- if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) {
- return R.fail("文件格式不正确,请上传" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "格式");
- }
- SysOssVo oss = ossService.upload(avatarfile);
- String avatar = oss.getUrl();
- if (userService.updateUserAvatar(LoginHelper.getUserId(), oss.getOssId())) {
- AvatarVo avatarVo = new AvatarVo();
- avatarVo.setImgUrl(avatar);
- return R.ok(avatarVo);
- }
- }
- return R.fail("上传图片异常,请联系管理员");
- }
}
diff --git a/src/main/java/org/dromara/system/domain/SysOss.java b/src/main/java/org/dromara/system/domain/SysOss.java
deleted file mode 100644
index 3f530a4..0000000
--- a/src/main/java/org/dromara/system/domain/SysOss.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.dromara.system.domain;
-
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-
-/**
- * OSS对象存储对象
- *
- * @author Lion Li
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@TableName("sys_oss")
-public class SysOss extends BaseEntity {
-
- /**
- * 对象存储主键
- */
- @TableId(value = "oss_id")
- private Long ossId;
-
- /**
- * 文件名
- */
- private String fileName;
-
- /**
- * 原名
- */
- private String originalName;
-
- /**
- * 文件后缀名
- */
- private String fileSuffix;
-
- /**
- * URL地址
- */
- private String url;
-
- /**
- * 服务商
- */
- private String service;
-
-}
diff --git a/src/main/java/org/dromara/system/domain/SysOssConfig.java b/src/main/java/org/dromara/system/domain/SysOssConfig.java
deleted file mode 100644
index 8a9e25e..0000000
--- a/src/main/java/org/dromara/system/domain/SysOssConfig.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.dromara.system.domain;
-
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-
-/**
- * 对象存储配置对象 sys_oss_config
- *
- * @author Lion Li
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@TableName("sys_oss_config")
-public class SysOssConfig extends BaseEntity {
-
- /**
- * 主建
- */
- @TableId(value = "oss_config_id")
- private Long ossConfigId;
-
- /**
- * 配置key
- */
- private String configKey;
-
- /**
- * accessKey
- */
- private String accessKey;
-
- /**
- * 秘钥
- */
- private String secretKey;
-
- /**
- * 桶名称
- */
- private String bucketName;
-
- /**
- * 前缀
- */
- private String prefix;
-
- /**
- * 访问站点
- */
- private String endpoint;
-
- /**
- * 自定义域名
- */
- private String domain;
-
- /**
- * 是否https(0否 1是)
- */
- private String isHttps;
-
- /**
- * 域
- */
- private String region;
-
- /**
- * 是否默认(0=是,1=否)
- */
- private String status;
-
- /**
- * 扩展字段
- */
- private String ext1;
-
- /**
- * 备注
- */
- private String remark;
-
- /**
- * 桶权限类型(0private 1public 2custom)
- */
- private String accessPolicy;
-}
diff --git a/src/main/java/org/dromara/system/domain/bo/SysOssBo.java b/src/main/java/org/dromara/system/domain/bo/SysOssBo.java
deleted file mode 100644
index 7cb3104..0000000
--- a/src/main/java/org/dromara/system/domain/bo/SysOssBo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.dromara.system.domain.bo;
-
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.system.domain.SysOss;
-import io.github.linpeilie.annotations.AutoMapper;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * OSS对象存储分页查询对象 sys_oss
- *
- * @author Lion Li
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = SysOss.class, reverseConvertGenerate = false)
-public class SysOssBo extends BaseEntity {
-
- /**
- * ossId
- */
- private Long ossId;
-
- /**
- * 文件名
- */
- private String fileName;
-
- /**
- * 原名
- */
- private String originalName;
-
- /**
- * 文件后缀名
- */
- private String fileSuffix;
-
- /**
- * URL地址
- */
- private String url;
-
- /**
- * 服务商
- */
- private String service;
-
-}
diff --git a/src/main/java/org/dromara/system/domain/bo/SysOssConfigBo.java b/src/main/java/org/dromara/system/domain/bo/SysOssConfigBo.java
deleted file mode 100644
index 5887ded..0000000
--- a/src/main/java/org/dromara/system/domain/bo/SysOssConfigBo.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.dromara.system.domain.bo;
-
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.system.domain.SysOssConfig;
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 对象存储配置业务对象 sys_oss_config
- *
- * @author Lion Li
- * @author 孤舟烟雨
- * @date 2021-08-13
- */
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = SysOssConfig.class, reverseConvertGenerate = false)
-public class SysOssConfigBo extends BaseEntity {
-
- /**
- * 主建
- */
- @NotNull(message = "主建不能为空", groups = {EditGroup.class})
- private Long ossConfigId;
-
- /**
- * 配置key
- */
- @NotBlank(message = "配置key不能为空", groups = {AddGroup.class, EditGroup.class})
- @Size(min = 2, max = 100, message = "configKey长度必须介于{min}和{max} 之间")
- private String configKey;
-
- /**
- * accessKey
- */
- @NotBlank(message = "accessKey不能为空", groups = {AddGroup.class, EditGroup.class})
- @Size(min = 2, max = 100, message = "accessKey长度必须介于{min}和{max} 之间")
- private String accessKey;
-
- /**
- * 秘钥
- */
- @NotBlank(message = "secretKey不能为空", groups = {AddGroup.class, EditGroup.class})
- @Size(min = 2, max = 100, message = "secretKey长度必须介于{min}和{max} 之间")
- private String secretKey;
-
- /**
- * 桶名称
- */
- @NotBlank(message = "桶名称不能为空", groups = {AddGroup.class, EditGroup.class})
- @Size(min = 2, max = 100, message = "bucketName长度必须介于{min}和{max}之间")
- private String bucketName;
-
- /**
- * 前缀
- */
- private String prefix;
-
- /**
- * 访问站点
- */
- @NotBlank(message = "访问站点不能为空", groups = {AddGroup.class, EditGroup.class})
- @Size(min = 2, max = 100, message = "endpoint长度必须介于{min}和{max}之间")
- private String endpoint;
-
- /**
- * 自定义域名
- */
- private String domain;
-
- /**
- * 是否https(Y=是,N=否)
- */
- private String isHttps;
-
- /**
- * 是否默认(0=是,1=否)
- */
- private String status;
-
- /**
- * 域
- */
- private String region;
-
- /**
- * 扩展字段
- */
- private String ext1;
-
- /**
- * 备注
- */
- private String remark;
-
- /**
- * 桶权限类型(0private 1public 2custom)
- */
- @NotBlank(message = "桶权限类型不能为空", groups = {AddGroup.class, EditGroup.class})
- private String accessPolicy;
-
-}
diff --git a/src/main/java/org/dromara/system/domain/vo/SysOssConfigVo.java b/src/main/java/org/dromara/system/domain/vo/SysOssConfigVo.java
deleted file mode 100644
index b88ec40..0000000
--- a/src/main/java/org/dromara/system/domain/vo/SysOssConfigVo.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package org.dromara.system.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import org.dromara.system.domain.SysOssConfig;
-import io.github.linpeilie.annotations.AutoMapper;
-import lombok.Data;
-
-import java.io.Serial;
-import java.io.Serializable;
-
-
-/**
- * 对象存储配置视图对象 sys_oss_config
- *
- * @author Lion Li
- * @author 孤舟烟雨
- * @date 2021-08-13
- */
-@Data
-@ExcelIgnoreUnannotated
-@AutoMapper(target = SysOssConfig.class)
-public class SysOssConfigVo implements Serializable {
-
- @Serial
- private static final long serialVersionUID = 1L;
-
- /**
- * 主建
- */
- private Long ossConfigId;
-
- /**
- * 配置key
- */
- private String configKey;
-
- /**
- * accessKey
- */
- private String accessKey;
-
- /**
- * 秘钥
- */
- private String secretKey;
-
- /**
- * 桶名称
- */
- private String bucketName;
-
- /**
- * 前缀
- */
- private String prefix;
-
- /**
- * 访问站点
- */
- private String endpoint;
-
- /**
- * 自定义域名
- */
- private String domain;
-
- /**
- * 是否https(Y=是,N=否)
- */
- private String isHttps;
-
- /**
- * 域
- */
- private String region;
-
- /**
- * 是否默认(0=是,1=否)
- */
- private String status;
-
- /**
- * 扩展字段
- */
- private String ext1;
-
- /**
- * 备注
- */
- private String remark;
-
- /**
- * 桶权限类型(0private 1public 2custom)
- */
- private String accessPolicy;
-
-}
diff --git a/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java b/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java
deleted file mode 100644
index 11e0ff8..0000000
--- a/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.dromara.system.domain.vo;
-
-import lombok.Data;
-
-/**
- * 上传对象信息
- *
- * @author Michelle.Chung
- */
-@Data
-public class SysOssUploadVo {
-
- /**
- * URL地址
- */
- private String url;
-
- /**
- * 文件名
- */
- private String fileName;
-
- /**
- * 对象存储主键
- */
- private String ossId;
-
-}
diff --git a/src/main/java/org/dromara/system/domain/vo/SysOssVo.java b/src/main/java/org/dromara/system/domain/vo/SysOssVo.java
deleted file mode 100644
index 8d5c429..0000000
--- a/src/main/java/org/dromara/system/domain/vo/SysOssVo.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.dromara.system.domain.vo;
-
-import org.dromara.common.translation.annotation.Translation;
-import org.dromara.common.translation.constant.TransConstant;
-import org.dromara.system.domain.SysOss;
-import io.github.linpeilie.annotations.AutoMapper;
-import lombok.Data;
-
-import java.io.Serial;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * OSS对象存储视图对象 sys_oss
- *
- * @author Lion Li
- */
-@Data
-@AutoMapper(target = SysOss.class)
-public class SysOssVo implements Serializable {
-
- @Serial
- private static final long serialVersionUID = 1L;
-
- /**
- * 对象存储主键
- */
- private Long ossId;
-
- /**
- * 文件名
- */
- private String fileName;
-
- /**
- * 原名
- */
- private String originalName;
-
- /**
- * 文件后缀名
- */
- private String fileSuffix;
-
- /**
- * URL地址
- */
- private String url;
-
- /**
- * 创建时间
- */
- private Date createTime;
-
- /**
- * 上传人
- */
- private Long createBy;
-
- /**
- * 上传人名称
- */
- @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
- private String createByName;
-
- /**
- * 服务商
- */
- private String service;
-
-
-}
diff --git a/src/main/java/org/dromara/system/mapper/SysOssConfigMapper.java b/src/main/java/org/dromara/system/mapper/SysOssConfigMapper.java
deleted file mode 100644
index f93d34d..0000000
--- a/src/main/java/org/dromara/system/mapper/SysOssConfigMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.dromara.system.mapper;
-
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-import org.dromara.system.domain.SysOssConfig;
-import org.dromara.system.domain.vo.SysOssConfigVo;
-
-/**
- * 对象存储配置Mapper接口
- *
- * @author Lion Li
- * @author 孤舟烟雨
- * @date 2021-08-13
- */
-public interface SysOssConfigMapper extends BaseMapperPlus {
-
-}
diff --git a/src/main/java/org/dromara/system/mapper/SysOssMapper.java b/src/main/java/org/dromara/system/mapper/SysOssMapper.java
deleted file mode 100644
index 3da621d..0000000
--- a/src/main/java/org/dromara/system/mapper/SysOssMapper.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.dromara.system.mapper;
-
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-import org.dromara.system.domain.SysOss;
-import org.dromara.system.domain.vo.SysOssVo;
-
-/**
- * 文件上传 数据层
- *
- * @author Lion Li
- */
-public interface SysOssMapper extends BaseMapperPlus {
-}
diff --git a/src/main/java/org/dromara/system/runner/SystemApplicationRunner.java b/src/main/java/org/dromara/system/runner/SystemApplicationRunner.java
deleted file mode 100644
index 27dad7d..0000000
--- a/src/main/java/org/dromara/system/runner/SystemApplicationRunner.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.dromara.system.runner;
-
-import org.dromara.system.service.ISysOssConfigService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.stereotype.Component;
-
-/**
- * 初始化 system 模块对应业务数据
- *
- * @author Lion Li
- */
-@Slf4j
-@RequiredArgsConstructor
-@Component
-public class SystemApplicationRunner implements ApplicationRunner {
-
- private final ISysOssConfigService ossConfigService;
-
- @Override
- public void run(ApplicationArguments args) throws Exception {
- ossConfigService.init();
- log.info("初始化OSS配置成功");
- }
-
-}
diff --git a/src/main/java/org/dromara/system/service/ISysOssConfigService.java b/src/main/java/org/dromara/system/service/ISysOssConfigService.java
deleted file mode 100644
index a8bc57b..0000000
--- a/src/main/java/org/dromara/system/service/ISysOssConfigService.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.dromara.system.service;
-
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.system.domain.bo.SysOssConfigBo;
-import org.dromara.system.domain.vo.SysOssConfigVo;
-
-import java.util.Collection;
-
-/**
- * 对象存储配置Service接口
- *
- * @author Lion Li
- * @author 孤舟烟雨
- * @date 2021-08-13
- */
-public interface ISysOssConfigService {
-
- /**
- * 初始化OSS配置
- */
- void init();
-
- /**
- * 查询单个
- */
- SysOssConfigVo queryById(Long ossConfigId);
-
- /**
- * 查询列表
- */
- TableDataInfo queryPageList(SysOssConfigBo bo, PageQuery pageQuery);
-
-
- /**
- * 根据新增业务对象插入对象存储配置
- *
- * @param bo 对象存储配置新增业务对象
- * @return
- */
- Boolean insertByBo(SysOssConfigBo bo);
-
- /**
- * 根据编辑业务对象修改对象存储配置
- *
- * @param bo 对象存储配置编辑业务对象
- * @return
- */
- Boolean updateByBo(SysOssConfigBo bo);
-
- /**
- * 校验并删除数据
- *
- * @param ids 主键集合
- * @param isValid 是否校验,true-删除前校验,false-不校验
- * @return
- */
- Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
-
- /**
- * 启用停用状态
- */
- int updateOssConfigStatus(SysOssConfigBo bo);
-
-}
diff --git a/src/main/java/org/dromara/system/service/ISysOssService.java b/src/main/java/org/dromara/system/service/ISysOssService.java
deleted file mode 100644
index 2dfe01f..0000000
--- a/src/main/java/org/dromara/system/service/ISysOssService.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.dromara.system.service;
-
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.system.domain.bo.SysOssBo;
-import org.dromara.system.domain.vo.SysOssVo;
-import jakarta.servlet.http.HttpServletResponse;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 文件上传 服务层
- *
- * @author Lion Li
- */
-public interface ISysOssService {
-
- TableDataInfo queryPageList(SysOssBo sysOss, PageQuery pageQuery);
-
- List listByIds(Collection ossIds);
-
- SysOssVo getById(Long ossId);
-
- SysOssVo upload(MultipartFile file);
-
- SysOssVo upload(File file);
-
- void download(Long ossId, HttpServletResponse response) throws IOException;
-
- Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
-
-}
diff --git a/src/main/java/org/dromara/system/service/impl/SysOssConfigServiceImpl.java b/src/main/java/org/dromara/system/service/impl/SysOssConfigServiceImpl.java
deleted file mode 100644
index 2ecd592..0000000
--- a/src/main/java/org/dromara/system/service/impl/SysOssConfigServiceImpl.java
+++ /dev/null
@@ -1,176 +0,0 @@
-package org.dromara.system.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.constant.CacheNames;
-import org.dromara.common.core.exception.ServiceException;
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.common.oss.constant.OssConstant;
-import org.dromara.common.redis.utils.CacheUtils;
-import org.dromara.common.redis.utils.RedisUtils;
-import org.dromara.system.domain.SysOssConfig;
-import org.dromara.system.domain.bo.SysOssConfigBo;
-import org.dromara.system.domain.vo.SysOssConfigVo;
-import org.dromara.system.mapper.SysOssConfigMapper;
-import org.dromara.system.service.ISysOssConfigService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 对象存储配置Service业务层处理
- *
- * @author Lion Li
- * @author 孤舟烟雨
- * @date 2021-08-13
- */
-@Slf4j
-@RequiredArgsConstructor
-@Service
-public class SysOssConfigServiceImpl implements ISysOssConfigService {
-
- private final SysOssConfigMapper baseMapper;
-
- /**
- * 项目启动时,初始化参数到缓存,加载配置类
- */
- @Override
- public void init() {
- List list = baseMapper.selectList();
- // 加载OSS初始化配置
- for (SysOssConfig config : list) {
- String configKey = config.getConfigKey();
- if ("0".equals(config.getStatus())) {
- RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, configKey);
- }
- CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config));
- }
- }
-
- @Override
- public SysOssConfigVo queryById(Long ossConfigId) {
- return baseMapper.selectVoById(ossConfigId);
- }
-
- @Override
- public TableDataInfo queryPageList(SysOssConfigBo bo, PageQuery pageQuery) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
- return TableDataInfo.build(result);
- }
-
-
- private LambdaQueryWrapper buildQueryWrapper(SysOssConfigBo bo) {
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(StringUtils.isNotBlank(bo.getConfigKey()), SysOssConfig::getConfigKey, bo.getConfigKey());
- lqw.like(StringUtils.isNotBlank(bo.getBucketName()), SysOssConfig::getBucketName, bo.getBucketName());
- lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysOssConfig::getStatus, bo.getStatus());
- lqw.orderByAsc(SysOssConfig::getOssConfigId);
- return lqw;
- }
-
- @Override
- public Boolean insertByBo(SysOssConfigBo bo) {
- SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class);
- validEntityBeforeSave(config);
- boolean flag = baseMapper.insert(config) > 0;
- if (flag) {
- // 从数据库查询完整的数据做缓存
- config = baseMapper.selectById(config.getOssConfigId());
- CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config));
- }
- return flag;
- }
-
- @Override
- public Boolean updateByBo(SysOssConfigBo bo) {
- SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class);
- validEntityBeforeSave(config);
- LambdaUpdateWrapper luw = new LambdaUpdateWrapper<>();
- luw.set(ObjectUtil.isNull(config.getPrefix()), SysOssConfig::getPrefix, "");
- luw.set(ObjectUtil.isNull(config.getRegion()), SysOssConfig::getRegion, "");
- luw.set(ObjectUtil.isNull(config.getExt1()), SysOssConfig::getExt1, "");
- luw.set(ObjectUtil.isNull(config.getRemark()), SysOssConfig::getRemark, "");
- luw.eq(SysOssConfig::getOssConfigId, config.getOssConfigId());
- boolean flag = baseMapper.update(config, luw) > 0;
- if (flag) {
- // 从数据库查询完整的数据做缓存
- config = baseMapper.selectById(config.getOssConfigId());
- CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config));
- }
- return flag;
- }
-
- /**
- * 保存前的数据校验
- */
- private void validEntityBeforeSave(SysOssConfig entity) {
- if (StringUtils.isNotEmpty(entity.getConfigKey())
- && !checkConfigKeyUnique(entity)) {
- throw new ServiceException("操作配置'" + entity.getConfigKey() + "'失败, 配置key已存在!");
- }
- }
-
- @Override
- public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
- if (isValid) {
- if (CollUtil.containsAny(ids, OssConstant.SYSTEM_DATA_IDS)) {
- throw new ServiceException("系统内置, 不可删除!");
- }
- }
- List list = CollUtil.newArrayList();
- for (Long configId : ids) {
- SysOssConfig config = baseMapper.selectById(configId);
- list.add(config);
- }
- boolean flag = baseMapper.deleteBatchIds(ids) > 0;
- if (flag) {
- list.forEach(sysOssConfig ->
- CacheUtils.evict(CacheNames.SYS_OSS_CONFIG, sysOssConfig.getConfigKey()));
- }
- return flag;
- }
-
- /**
- * 判断configKey是否唯一
- */
- private boolean checkConfigKeyUnique(SysOssConfig sysOssConfig) {
- long ossConfigId = ObjectUtil.isNull(sysOssConfig.getOssConfigId()) ? -1L : sysOssConfig.getOssConfigId();
- SysOssConfig info = baseMapper.selectOne(new LambdaQueryWrapper()
- .select(SysOssConfig::getOssConfigId, SysOssConfig::getConfigKey)
- .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey()));
- if (ObjectUtil.isNotNull(info) && info.getOssConfigId() != ossConfigId) {
- return false;
- }
- return true;
- }
-
- /**
- * 启用禁用状态
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int updateOssConfigStatus(SysOssConfigBo bo) {
- SysOssConfig sysOssConfig = MapstructUtils.convert(bo, SysOssConfig.class);
- int row = baseMapper.update(null, new LambdaUpdateWrapper()
- .set(SysOssConfig::getStatus, "1"));
- row += baseMapper.updateById(sysOssConfig);
- if (row > 0) {
- RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, sysOssConfig.getConfigKey());
- }
- return row;
- }
-
-}
diff --git a/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java
deleted file mode 100644
index c7d4719..0000000
--- a/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package org.dromara.system.service.impl;
-
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.dromara.common.core.constant.CacheNames;
-import org.dromara.common.core.exception.ServiceException;
-import org.dromara.common.core.service.OssService;
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.SpringUtils;
-import org.dromara.common.core.utils.StreamUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.core.utils.file.FileUtils;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.common.oss.core.OssClient;
-import org.dromara.common.oss.entity.UploadResult;
-import org.dromara.common.oss.enumd.AccessPolicyType;
-import org.dromara.common.oss.factory.OssFactory;
-import org.dromara.system.domain.SysOss;
-import org.dromara.system.domain.bo.SysOssBo;
-import org.dromara.system.domain.vo.SysOssVo;
-import org.dromara.system.mapper.SysOssMapper;
-import org.dromara.system.service.ISysOssService;
-import jakarta.servlet.http.HttpServletResponse;
-import lombok.RequiredArgsConstructor;
-import org.jetbrains.annotations.NotNull;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.http.MediaType;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.*;
-
-/**
- * 文件上传 服务层实现
- *
- * @author Lion Li
- */
-@RequiredArgsConstructor
-@Service
-public class SysOssServiceImpl implements ISysOssService, OssService {
-
- private final SysOssMapper baseMapper;
-
- @Override
- public TableDataInfo queryPageList(SysOssBo bo, PageQuery pageQuery) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
- List filterResult = StreamUtils.toList(result.getRecords(), this::matchingUrl);
- result.setRecords(filterResult);
- return TableDataInfo.build(result);
- }
-
- @Override
- public List listByIds(Collection ossIds) {
- List list = new ArrayList<>();
- for (Long id : ossIds) {
- SysOssVo vo = SpringUtils.getAopProxy(this).getById(id);
- if (ObjectUtil.isNotNull(vo)) {
- try {
- list.add(this.matchingUrl(vo));
- } catch (Exception ignored) {
- // 如果oss异常无法连接则将数据直接返回
- list.add(vo);
- }
- }
- }
- return list;
- }
-
- @Override
- public String selectUrlByIds(String ossIds) {
- List list = new ArrayList<>();
- for (Long id : StringUtils.splitTo(ossIds, Convert::toLong)) {
- SysOssVo vo = SpringUtils.getAopProxy(this).getById(id);
- if (ObjectUtil.isNotNull(vo)) {
- try {
- list.add(this.matchingUrl(vo).getUrl());
- } catch (Exception ignored) {
- // 如果oss异常无法连接则将数据直接返回
- list.add(vo.getUrl());
- }
- }
- }
- return String.join(StringUtils.SEPARATOR, list);
- }
-
- private LambdaQueryWrapper buildQueryWrapper(SysOssBo bo) {
- Map params = bo.getParams();
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.like(StringUtils.isNotBlank(bo.getFileName()), SysOss::getFileName, bo.getFileName());
- lqw.like(StringUtils.isNotBlank(bo.getOriginalName()), SysOss::getOriginalName, bo.getOriginalName());
- lqw.eq(StringUtils.isNotBlank(bo.getFileSuffix()), SysOss::getFileSuffix, bo.getFileSuffix());
- lqw.eq(StringUtils.isNotBlank(bo.getUrl()), SysOss::getUrl, bo.getUrl());
- lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
- SysOss::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
- lqw.eq(ObjectUtil.isNotNull(bo.getCreateBy()), SysOss::getCreateBy, bo.getCreateBy());
- lqw.eq(StringUtils.isNotBlank(bo.getService()), SysOss::getService, bo.getService());
- lqw.orderByAsc(SysOss::getOssId);
- return lqw;
- }
-
- @Cacheable(cacheNames = CacheNames.SYS_OSS, key = "#ossId")
- @Override
- public SysOssVo getById(Long ossId) {
- return baseMapper.selectVoById(ossId);
- }
-
- @Override
- public void download(Long ossId, HttpServletResponse response) throws IOException {
- SysOssVo sysOss = SpringUtils.getAopProxy(this).getById(ossId);
- if (ObjectUtil.isNull(sysOss)) {
- throw new ServiceException("文件数据不存在!");
- }
- FileUtils.setAttachmentResponseHeader(response, sysOss.getOriginalName());
- response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE + "; charset=UTF-8");
- OssClient storage = OssFactory.instance(sysOss.getService());
- try(InputStream inputStream = storage.getObjectContent(sysOss.getUrl())) {
- int available = inputStream.available();
- IoUtil.copy(inputStream, response.getOutputStream(), available);
- response.setContentLength(available);
- } catch (Exception e) {
- throw new ServiceException(e.getMessage());
- }
- }
-
- @Override
- public SysOssVo upload(MultipartFile file) {
- String originalfileName = file.getOriginalFilename();
- String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
- OssClient storage = OssFactory.instance();
- UploadResult uploadResult;
- try {
- uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType());
- } catch (IOException e) {
- throw new ServiceException(e.getMessage());
- }
- // 保存文件信息
- return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult);
- }
-
- @Override
- public SysOssVo upload(File file) {
- String originalfileName = file.getName();
- String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
- OssClient storage = OssFactory.instance();
- UploadResult uploadResult = storage.uploadSuffix(file, suffix);
- // 保存文件信息
- return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult);
- }
-
- @NotNull
- private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult) {
- SysOss oss = new SysOss();
- oss.setUrl(uploadResult.getUrl());
- oss.setFileSuffix(suffix);
- oss.setFileName(uploadResult.getFilename());
- oss.setOriginalName(originalfileName);
- oss.setService(configKey);
- baseMapper.insert(oss);
- SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
- return this.matchingUrl(sysOssVo);
- }
-
- @Override
- public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
- if (isValid) {
- // 做一些业务上的校验,判断是否需要校验
- }
- List list = baseMapper.selectBatchIds(ids);
- for (SysOss sysOss : list) {
- OssClient storage = OssFactory.instance(sysOss.getService());
- storage.delete(sysOss.getUrl());
- }
- return baseMapper.deleteBatchIds(ids) > 0;
- }
-
- /**
- * 匹配Url
- *
- * @param oss OSS对象
- * @return oss 匹配Url的OSS对象
- */
- private SysOssVo matchingUrl(SysOssVo oss) {
- OssClient storage = OssFactory.instance(oss.getService());
- // 仅修改桶类型为 private 的URL,临时URL时长为120s
- if (AccessPolicyType.PRIVATE == storage.getAccessPolicy()) {
- oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 120));
- }
- return oss;
- }
-}