From 4d8f27a9916de2eea98e3f0cc3d4e43ad0b9e07d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=94=B0=E8=89=BA=E9=B9=8F?= <18382071280@163.com>
Date: Wed, 23 Aug 2023 16:39:04 +0800
Subject: [PATCH] =?UTF-8?q?fix(*)=20=E9=A6=96=E6=AC=A1=E6=8F=90=E4=BA=A4Re?=
=?UTF-8?q?sourceManager=E9=A1=B9=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 2 +
ResourceManager/pom.xml | 145 +++++++++++
.../resmanager/ResmanagerApplcation.java | 33 +++
.../resmanager/config/AliYunOSSConfig.java | 18 ++
.../cloud/resmanager/config/LocalConfig.java | 14 +
.../cloud/resmanager/config/MinioConfig.java | 26 ++
.../config/RedisRepositoryConfig.java | 30 +++
.../resmanager/controller/FileController.java | 181 +++++++++++++
.../controller/ResourceController.java | 242 ++++++++++++++++++
.../resmanager/general/UserController.java | 14 +
.../resmanager/holder/LoginUserHolder.java | 42 +++
.../resmanager/mapper/ResourceMapper.java | 10 +
.../cloud/resmanager/pojo/Resource.java | 46 ++++
.../resmanager/server/ResmanagerServer.java | 74 ++++++
.../cloud/resmanager/server/Storage.java | 23 ++
.../server/impl/AliYunOSSStorage.java | 50 ++++
.../resmanager/server/impl/LocalStorage.java | 100 ++++++++
.../resmanager/server/impl/MinioStorage.java | 118 +++++++++
.../cloud/resmanager/service/BaseService.java | 48 ++++
.../resmanager/service/ResourceService.java | 203 +++++++++++++++
.../src/main/resources/application-dev.yml | 49 ++++
.../src/main/resources/application-prod.yml | 49 ++++
.../src/main/resources/bootstrap-dev.yml | 16 ++
.../src/main/resources/bootstrap-prod.yml | 16 ++
.../src/main/resources/bootstrap.yml | 6 +
.../src/main/resources/logback.xml | 56 ++++
.../src/main/resources/public/sdk.js | 29 +++
.../src/main/resources/public/test.html | 37 +++
28 files changed, 1677 insertions(+)
create mode 100644 ResourceManager/pom.xml
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/ResmanagerApplcation.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/AliYunOSSConfig.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/LocalConfig.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/MinioConfig.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/config/RedisRepositoryConfig.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/controller/FileController.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/controller/ResourceController.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/general/UserController.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/holder/LoginUserHolder.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/mapper/ResourceMapper.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/pojo/Resource.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/server/ResmanagerServer.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/server/Storage.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/server/impl/AliYunOSSStorage.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/server/impl/LocalStorage.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/server/impl/MinioStorage.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/service/BaseService.java
create mode 100644 ResourceManager/src/main/java/cn/crtech/cloud/resmanager/service/ResourceService.java
create mode 100644 ResourceManager/src/main/resources/application-dev.yml
create mode 100644 ResourceManager/src/main/resources/application-prod.yml
create mode 100644 ResourceManager/src/main/resources/bootstrap-dev.yml
create mode 100644 ResourceManager/src/main/resources/bootstrap-prod.yml
create mode 100644 ResourceManager/src/main/resources/bootstrap.yml
create mode 100644 ResourceManager/src/main/resources/logback.xml
create mode 100644 ResourceManager/src/main/resources/public/sdk.js
create mode 100644 ResourceManager/src/main/resources/public/test.html
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