diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/RedissonConfig.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/RedissonConfig.java index 260e4edb83..ad02d71365 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/RedissonConfig.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/RedissonConfig.java @@ -1,6 +1,7 @@ package com.epmet.commons.tools.config; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.redisson.Redisson; @@ -18,6 +19,8 @@ import org.springframework.context.annotation.Configuration; @Configuration public class RedissonConfig { + @Value("${spring.redis.cluster-enabled}") + private Boolean clusterEnabled; @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") @@ -26,8 +29,8 @@ public class RedissonConfig { private String password; @Value("${spring.redis.cluster.nodes}") private String clusterNodesStr; - @Value("${spring.redis.cluster.max-redirects}") - private Integer rediTimes; +// @Value("${spring.redis.cluster.max-redirects}") +// private Integer rediTimes; @Bean @@ -45,16 +48,18 @@ public class RedissonConfig { //redis://ip:port //redis的部署方式有单节点部署、主从方式部署、哨兵方式部署、集群方式部署 - //单机模式 - //config.useSingleServer().setAddress("redis://".concat(host).concat(StrConstant.COLON).concat(port)); - //config.useSingleServer().setPassword(password); - //config.useSingleServer().setConnectTimeout(NumConstant.ONE_THOUSAND * NumConstant.FIVE); - //config.useSingleServer().setDatabase(NumConstant.TEN); - - //集群模式 - config.useClusterServers().addNodeAddress(getClusterNodes()); - config.useClusterServers().setPassword(password); - config.useClusterServers().setConnectTimeout(NumConstant.ONE_THOUSAND * NumConstant.FIVE); + if (clusterEnabled == null || !clusterEnabled) { + //单机模式 + config.useSingleServer().setAddress("redis://".concat(host).concat(StrConstant.COLON).concat(port)); + config.useSingleServer().setPassword(password); + config.useSingleServer().setConnectTimeout(NumConstant.ONE_THOUSAND * NumConstant.FIVE); + config.useSingleServer().setDatabase(NumConstant.TEN); + } else { + //集群模式 + config.useClusterServers().addNodeAddress(getClusterNodes()); + config.useClusterServers().setPassword(password); + config.useClusterServers().setConnectTimeout(NumConstant.ONE_THOUSAND * NumConstant.FIVE); + } return Redisson.create(config); } catch (Exception e) { log.error("初始化redisson失败", e); diff --git a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/enums/OssTypeEnum.java b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/enums/OssTypeEnum.java index 6bb92ad38b..565500d199 100644 --- a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/enums/OssTypeEnum.java +++ b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/enums/OssTypeEnum.java @@ -38,7 +38,11 @@ public enum OssTypeEnum { /** * minio */ - MINIO(6); + MINIO(6), + /** + * 浪潮oss + */ + INSPUR(7); private int value; diff --git a/epmet-module/epmet-oss/epmet-oss-server/pom.xml b/epmet-module/epmet-oss/epmet-oss-server/pom.xml index d4bc4152b6..4b6b580481 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/pom.xml +++ b/epmet-module/epmet-oss/epmet-oss-server/pom.xml @@ -96,6 +96,10 @@ minio 8.4.2 + + com.inspur + oss-sdk + diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java index 6b44c47d66..6403bc343a 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java @@ -104,6 +104,7 @@ public class CloudStorageConfig implements Serializable { private AliyunCloudStorageConfig aliyun; private MinioStorageConfig minio; + private InspurOssConfigProps inspur; /** * 阿里云存储配置 */ @@ -170,4 +171,22 @@ public class CloudStorageConfig implements Serializable { private String minioPrefix; private String minioBucketName; } + + /** + * 浪潮政务云oss存储 + */ + @Data + public static class InspurOssConfigProps { + /** + * https://oss.cn-north-3.inspurcloudoss.com + */ + private String domain; + /** + * oss.cn-north-3.inspurcloudoss.com + */ + private String endPoint; + private String accessKey; + private String secretKey; + private String bucketName; + } } diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/InspurStorageService.java b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/InspurStorageService.java new file mode 100644 index 0000000000..8f6862e6a3 --- /dev/null +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/InspurStorageService.java @@ -0,0 +1,77 @@ +package com.epmet.cloud; + +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.inspurcloud.oss.client.impl.OSSClientImpl; +import lombok.extern.slf4j.Slf4j; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * 浪潮云oss文件操作 + */ +@Slf4j +public class InspurStorageService extends AbstractCloudStorageService { + + private CloudStorageConfig.InspurOssConfigProps inspurProps; + + private OSSClientImpl ossClient; + + public InspurStorageService(CloudStorageConfig config) { + inspurProps = config.getInspur(); + //ossClient = new OSSClientImpl("oss.yantai-zww.inspurcloudoss.com", + // "OWVmNWZkZDUtMjgzNi00ZDcyLTk5MGUtMmJhNzcxNzE2ZmEx", + // "OTQwNGZlZTAtM2RkMS00NTRhLWI5NDYtNTQ4MzJhMDk3YWQ0"); + ossClient = new OSSClientImpl(inspurProps.getEndPoint(), inspurProps.getAccessKey(), inspurProps.getSecretKey()); + } + + @Override + public String getOssDomain(String privacy) { + return inspurProps.getDomain(); + } + + @Override + public String getOssPrefix(String privacy) { + return null; + } + + @Override + public String upload(byte[] data, String path, String privacyType) { + return upload(new ByteArrayInputStream(data), path, privacyType); + } + + @Override + public String uploadSuffix(byte[] data, String suffix, String privacyType) { + return uploadSuffix(new ByteArrayInputStream(data), suffix, privacyType); + } + + @Override + public String upload(InputStream inputStream, String path, String privacyType) { + try { + ossClient.putObject(inspurProps.getBucketName(), path, inputStream); + return inspurProps.getDomain() + "/" + inspurProps.getBucketName() + "/" + path; + } catch (Exception e) { + String errorStackTrace = ExceptionUtils.getErrorStackTrace(e); + log.error("浪潮云oss文件上传:{}", errorStackTrace); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), errorStackTrace); + } + } + + @Override + public String uploadSuffix(InputStream inputStream, String suffix, String privacyType) { + return upload(inputStream, getPath(getOssPrefix(null), suffix, privacyType), privacyType); + } + + @Override + public void down(String privacyType) throws IOException { + + } + + @Override + public boolean delete(String objectName, String privacyType) { + return false; + } +} diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/OssFactory.java b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/OssFactory.java index a9113d5fba..59bdf3b7a6 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/OssFactory.java +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/OssFactory.java @@ -8,6 +8,7 @@ package com.epmet.cloud; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.utils.SpringContextUtils; import com.epmet.enums.OssTypeEnum; import com.epmet.remote.ParamsRemoteService; @@ -42,6 +43,8 @@ public final class OssFactory { abstractCloudStorageService = new LocalCloudStorageService(config); }else if(config.getType() == OssTypeEnum.MINIO.value()){ abstractCloudStorageService = new MinioStorageService(config); + }else if (config.getType() == OssTypeEnum.INSPUR.value()) { + abstractCloudStorageService = new InspurStorageService(config); } } return abstractCloudStorageService; diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/TestController.java b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/TestController.java index 50fa2fb21b..a57082c6b7 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/TestController.java +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/TestController.java @@ -35,9 +35,9 @@ public class TestController { } @PostMapping("upload2aliyun") - public Result upload2aliyun(@RequestParam("fileName") String fileName) { - try (final FileInputStream fis = new FileInputStream("/opt/upload_files/" + fileName)) { - final MockMultipartFile mockMultipartFile = new MockMultipartFile(fileName, fis); + public Result upload2aliyun() { + try (final FileInputStream fis = new FileInputStream("C:\\Users\\wxz\\Documents\\微信截图_20230101224521.png")) { + final MockMultipartFile mockMultipartFile = new MockMultipartFile("微信截图_20230101224521.png", fis); return ossService.uploadImg(mockMultipartFile, null); } catch (FileNotFoundException e) { log.error("method exception", e); diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/bootstrap.yml index 18ebc7ea24..fa4190e991 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/bootstrap.yml @@ -20,11 +20,13 @@ spring: date-format: yyyy-MM-dd HH:mm:ss redis: # 烟台使用cluster模式下使用cluster:配置段 - # database: @spring.redis.index@ - # host: @spring.redis.host@ - # port: @spring.redis.port@ - # password: @spring.redis.password@ - # timeout: 30s + cluster-enabled: true + +# database: @spring.redis.index@ +# host: @spring.redis.host@ +# port: @spring.redis.port@ +# password: @spring.redis.password@ +# timeout: 30s database: @spring.redis.index@ password: @spring.redis.password@ diff --git a/pom.xml b/pom.xml index 0eb19cb77e..c5724eaf0b 100644 --- a/pom.xml +++ b/pom.xml @@ -94,6 +94,11 @@ kotlin-stdlib 1.3.70 + + com.inspur + oss-sdk + 1.1.8 +