diff --git a/.gitignore b/.gitignore
index da05752..1b5050f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,5 @@
/Feign/src/main/resources/application-test.yml
/Feign/src/main/resources/bootstrap-test.yml
/Gateway/src/main/resources/application-test.yml
+/ResourceManager/src/main/resources/application-test.yml
+/ResourceManager/src/main/resources/bootstrap-test.yml
diff --git a/ResourceManager/pom.xml b/ResourceManager/pom.xml
new file mode 100644
index 0000000..2f45d41
--- /dev/null
+++ b/ResourceManager/pom.xml
@@ -0,0 +1,145 @@
+
+
+ 4.0.0
+
+ cn.crtech.cloud.resource_manager
+ ResourceManager
+ 1.0.1
+
+
+
+ cn.crtech.cloud.dependencies
+ Dependencies
+ 1.0.1
+
+
+
+
+
+ 8
+ 8
+ 1.8
+ UTF-8
+
+ 3.13.2
+ 7.0.2
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+
+
+
+ org.apache.tomcat.embed
+ tomcat-embed-jasper
+ provided
+
+
+
+ javax.servlet
+ javax.servlet-api
+ provided
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ io.lettuce
+ lettuce-core
+
+
+
+
+ redis.clients
+ jedis
+
+
+ org.springframework
+ spring-test
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+ cn.crtech.cloud.common
+ Common
+ 1.0.1
+
+
+
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+ ${aliyun.oss.version}
+
+
+
+
+ io.minio
+ minio
+ ${minio.version}
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+ -Dfile.encoding=UTF-8
+
+
+
+
+
diff --git a/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/ResmanagerApplcation.java b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/ResmanagerApplcation.java
new file mode 100644
index 0000000..5cb09a2
--- /dev/null
+++ b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/ResmanagerApplcation.java
@@ -0,0 +1,33 @@
+package cn.crtech.cloud.resmanager;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import tk.mybatis.spring.annotation.MapperScan;
+
+//微服务启动时使用 begin
+
+@EnableDiscoveryClient
+@SpringBootApplication
+@MapperScan("cn.crtech.cloud.resmanager.mapper")
+public class ResmanagerApplcation {
+ public static void main(String[] args) {
+ SpringApplication.run(ResmanagerApplcation.class, args);
+ }
+}
+
+//微服务启动时使用 end
+
+//使用launcher启动时使用 begin
+//launcher.NacosConfig @Component需要放开
+//
+//@SpringBootApplication
+//@MapperScan("cn.crtech.cloud.resmanager.mapper")
+//public class ResmanagerApplcation extends SpringBootServletInitializer {
+// @Override
+// protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+// return application.sources(ResmanagerApplcation.class);
+// }
+//}
+
+//使用launcher启动时使用 end
diff --git a/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/AliYunOSSConfig.java b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/AliYunOSSConfig.java
new file mode 100644
index 0000000..5e3959e
--- /dev/null
+++ b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/AliYunOSSConfig.java
@@ -0,0 +1,18 @@
+package cn.crtech.cloud.resmanager.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "resmanager.aliyunoss")
+public class AliYunOSSConfig {
+ private String serverUrl;
+
+ private String accessKey;
+
+ private String secretKey;
+
+ private String bucketName;
+}
diff --git a/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/LocalConfig.java b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/LocalConfig.java
new file mode 100644
index 0000000..b859ef9
--- /dev/null
+++ b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/LocalConfig.java
@@ -0,0 +1,14 @@
+package cn.crtech.cloud.resmanager.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "resmanager.local")
+public class LocalConfig {
+ private String path;
+
+ private String bucketName;
+}
diff --git a/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/MinioConfig.java b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/MinioConfig.java
new file mode 100644
index 0000000..c2201ba
--- /dev/null
+++ b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/MinioConfig.java
@@ -0,0 +1,26 @@
+package cn.crtech.cloud.resmanager.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "resmanager.minio")
+public class MinioConfig {
+ private String endpoint;
+
+ private Integer port;
+
+ private String accessKey;
+
+ private String secretKey;
+
+ private String bucketName;
+
+ private Boolean secure;
+
+ private String accessType;
+
+ private Integer urlExpires;
+}
diff --git a/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/RedisRepositoryConfig.java b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/RedisRepositoryConfig.java
new file mode 100644
index 0000000..64d4311
--- /dev/null
+++ b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/RedisRepositoryConfig.java
@@ -0,0 +1,30 @@
+package cn.crtech.cloud.resmanager.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+/**
+ * Redis相关配置
+ */
+@Configuration
+@EnableRedisRepositories
+public class RedisRepositoryConfig {
+ @Bean
+ public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
+ RedisTemplate redisTemplate = new RedisTemplate<>();
+ redisTemplate.setConnectionFactory(connectionFactory);
+ StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+ redisTemplate.setKeySerializer(stringRedisSerializer);
+ redisTemplate.setHashKeySerializer(stringRedisSerializer);
+ Jackson2JsonRedisSerializer> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
+ redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
+ redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
+ redisTemplate.afterPropertiesSet();
+ return redisTemplate;
+ }
+}
diff --git a/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/controller/FileController.java b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/controller/FileController.java
new file mode 100644
index 0000000..b4763bc
--- /dev/null
+++ b/ResourceManager/src/main/java/cn/crtech/cloud/resmanager/controller/FileController.java
@@ -0,0 +1,181 @@
+package cn.crtech.cloud.resmanager.controller;
+
+import cn.crtech.cloud.common.api.CommonResult;
+import cn.crtech.cloud.common.utils.ThumbnailatorUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.json.JSONObject;
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.model.ObjectMetadata;
+import com.aliyun.oss.model.PutObjectResult;
+import io.minio.MinioClient;
+import io.minio.PutObjectOptions;
+import io.minio.errors.*;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.*;
+
+/**
+ * Author : yj
+ * Date : 2021-03-19
+ * Description:
+ */
+@RestController
+@RequestMapping("/file")
+public class FileController {
+ private static String endpoint = "http://oss-cn-chengdu.aliyuncs.com";
+ private static String accessKeyId = "LTAI5tGBETbnyAS6tAxULF8M";
+ private static String accessKeySecret = "lJppRT678UVMWJr9EBaJfbKdoZ7eBl";
+ private static String bucketName = "crtechtest";
+
+ @RequestMapping("/u1")
+ public CommonResult uploadFileTOALiYUN(HttpServletRequest request, HttpServletResponse response) {
+ OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+ List files = ((MultipartHttpServletRequest) request).getFiles("file");
+ files.stream().forEach(file -> {
+ System.out.println(file.getOriginalFilename());
+ //System.out.println(file.getBytes());
+ System.out.println(file.getName());
+ System.out.println(file.getContentType());
+ System.out.println(file.getSize());
+ String fileKey = file.getOriginalFilename();
+ System.out.println();
+ try {
+ ObjectMetadata objectMetadata = new ObjectMetadata();
+ objectMetadata.setContentType("image/jpg");
+
+ PutObjectResult putObjectResult = ossClient.putObject(bucketName, fileKey, file.getResource().getInputStream(), objectMetadata);
+ // 设置URL过期时间为10年 3600l* 1000*24*365*10
+ Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
+ URL url = ossClient.generatePresignedUrl(bucketName, fileKey, expiration);
+
+
+ System.out.println(putObjectResult.getETag());
+ System.out.println(putObjectResult.getVersionId());
+ System.out.println(putObjectResult.getRequestId());
+ System.out.println(putObjectResult.getServerCRC());
+ System.out.println(url);
+
+
+ } catch (IOException e) {
+ ossClient.shutdown();
+ e.printStackTrace();
+ }
+ ossClient.shutdown();
+
+ });
+
+
+ return CommonResult.success(null);
+ }
+
+ @RequestMapping("/u")
+ public CommonResult uploadFileTOMINIO(HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ try {
+ // 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象
+ MinioClient minioClient = new MinioClient("http://localhost:9000", "minio", "KWbPmRsTWre2X2X6");
+
+ String bucketName = "bucket1";
+ // 检查存储桶是否已经存在
+ boolean isExist = minioClient.bucketExists(bucketName);
+ if (isExist) {
+ System.out.println("Bucket already exists.");
+ } else {
+ // 创建一个名为asiatrip的存储桶,用于存储照片的zip文件。
+ minioClient.makeBucket(bucketName);
+ JSONObject jsonObject = new JSONObject();
+ ArrayList