diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java index cd4c543..f8dfca7 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java @@ -2,6 +2,7 @@ package com.schisandra.auth.application.controller; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.common.base.Preconditions; @@ -276,7 +277,7 @@ public class SchisandraAuthUserController { log.info("UserController.findPassword.dto:{}", JSON.toJSONString(schisandraAuthUserDTO)); } if (schisandraAuthUserDTO.getPhone() == null) { - log.error("UserController.register.phone is null"); + log.error("UserController.findPassword.phone is null"); return null; } String token = schisandraAuthUserDTO.getToken(); diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssAliController.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssAliController.java index 2a92592..4db0104 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssAliController.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssAliController.java @@ -1,18 +1,33 @@ package com.schisandra.oss.application.controller; +import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSON; +import com.amazonaws.util.IOUtils; import com.google.common.base.Preconditions; import com.schisandra.oss.application.convert.SchisandraOssAliDTOConverter; import com.schisandra.oss.application.dto.SchisandraOssAliDTO; +import com.schisandra.oss.application.oss.core.ali.AliOssClient; import com.schisandra.oss.application.oss.core.ali.AliOssConfiguration; +import com.schisandra.oss.application.oss.core.minio.MinioOssClient; +import com.schisandra.oss.application.oss.model.OssInfo; import com.schisandra.oss.common.entity.Result; import com.schisandra.oss.domain.bo.SchisandraOssAliBO; import com.schisandra.oss.domain.service.SchisandraOssAliDomainService; +import io.minio.errors.*; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; /** * controller @@ -29,6 +44,8 @@ public class SchisandraOssAliController { private SchisandraOssAliDomainService schisandraOssAliDomainService; @Resource private AliOssConfiguration aliOssConfiguration; + @Autowired + private AliOssClient aliOssClient; @GetMapping("init") public void init(@RequestParam String userId){ @@ -106,6 +123,141 @@ public class SchisandraOssAliController { } + /** + * 查找bucket + * @param userId + * @return + * @throws ServerException + * @throws InsufficientDataException + * @throws ErrorResponseException + * @throws IOException + * @throws NoSuchAlgorithmException + * @throws InvalidKeyException + * @throws InvalidResponseException + * @throws XmlParserException + * @throws InternalException + */ + + @PostMapping("seleteBucket") + public Result seleteBucket(@RequestParam String userId) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + Preconditions.checkNotNull(userId, "不能为空"); + AliOssClient bean = SpringUtil.getBean(userId); + return Result.ok(bean.selectAllBucket()); + } + + /** + * @description: 创建bucket + * @param: [userId, bucket] + * @return: com.schisandra.oss.common.entity.Result + * @author sjm + * @date: 2024/6/26 17:38 + */ + @PostMapping("createBucket") + public Result createBucket(@RequestParam String userId, @RequestParam String bucket) { + Preconditions.checkNotNull(userId, "不能为空"); + Preconditions.checkNotNull(bucket, "不能为空"); + AliOssClient bean = SpringUtil.getBean(userId); + bean.getAliOssConfig().setBucketName(bucket); + return Result.ok(bean.createBucket(bucket)); + } + + /** + * 删除bucket + * @param userId + * @param bucket + * @return + */ + @PostMapping("deleteBucket") + public Result deleteBucket(@RequestParam String userId, @RequestParam String bucket) { + Preconditions.checkNotNull(userId, "不能为空"); + Preconditions.checkNotNull(bucket, "不能为空"); + AliOssClient bean = SpringUtil.getBean(userId); + bean.getAliOssConfig().setBucketName(bucket); + return Result.ok(bean.deleteBucket(bucket)); + } + + + /** + * @description: 上传文件 + * @param: [schisandraOssAliDTO] + * @return: void + * @date: 2024/6/26 14:34 + */ + @PostMapping("uploadMinioFile") + public Result uploadMinioFile(@RequestParam String userId, @RequestParam MultipartFile file, @RequestParam String fileName, @RequestParam String bucket) throws IOException { + Preconditions.checkNotNull(userId, "不能为空"); + Preconditions.checkNotNull(fileName, "不能为空"); + Preconditions.checkNotNull(bucket, "不能为空"); + // 获取文件输入流 + InputStream is = file.getInputStream(); + AliOssClient bean = SpringUtil.getBean(userId); + bean.getAliOssConfig().setBucketName(bucket); + return Result.ok(bean.upLoad(is, fileName, true)); + } + + + + /** + * @description: 下载文件 + * @param: [schisandraOssMinioDTO] + * @return: voiD + * @date: 2024/6/26 13:56 + */ + @GetMapping("downloadAliFile") + public void getAliFile(@RequestParam String bucket, @RequestParam String userId, @RequestParam String filePath, HttpServletResponse response) throws Exception { + Preconditions.checkNotNull(bucket, "不能为空"); + Preconditions.checkNotNull(userId, "不能为空"); + Preconditions.checkNotNull(filePath, "不能为空"); + AliOssClient bean = SpringUtil.getBean(userId); + bean.getAliOssConfig().setBucketName(bucket); + ServletOutputStream output = response.getOutputStream(); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filePath.substring(filePath.lastIndexOf("/") + 1), "UTF-8")); + response.setContentType("application/octet-stream"); + response.setCharacterEncoding("UTF-8"); + bean.downLoad(output,filePath); + } + /** + * @description: 删除文件 + * @param: [schisandraOssAliDTO] + * @return: void + * @date: 2024/6/26 14:34 + */ + @PostMapping("deleteAliFile") + public Result deleteMinioFile(@RequestParam String bucket, @RequestParam String userId, @RequestParam String filePath) { + Preconditions.checkNotNull(bucket, "不能为空"); + Preconditions.checkNotNull(userId, "不能为空"); + Preconditions.checkNotNull(filePath, "不能为空"); + AliOssClient bean = SpringUtil.getBean(userId); + bean.getAliOssConfig().setBucketName(bucket); + bean.delete(filePath); + return Result.ok(); + } + + + /** + * @description: 重命名文件 + * @param: [userId, bucket, oldFileName, newFileName] + * @return: com.schisandra.oss.common.entity.Result + * @date: 2024/6/27 9:41 + */ + @PostMapping("renameAliFile") + public Result renameMinioFile(@RequestParam String userId, @RequestParam String bucket, @RequestParam String oldFileName, @RequestParam String newFileName) throws IOException { + + Preconditions.checkNotNull(userId, "不能为空"); + Preconditions.checkNotNull(bucket, "不能为空"); + Preconditions.checkNotNull(oldFileName, "不能为空"); + Preconditions.checkNotNull(newFileName, "不能为空"); + AliOssClient bean = SpringUtil.getBean(userId); + bean.getAliOssConfig().setBucketName(bucket); + try { + bean.rename(oldFileName, newFileName); + }catch (Exception e){ + return Result.fail(e.getMessage()); + } + return Result.ok(); + } + + private void parameterCheck(SchisandraOssAliDTO schisandraOssAliDTO) { Preconditions.checkNotNull(schisandraOssAliDTO.getId(), "不能为空"); Preconditions.checkNotNull(schisandraOssAliDTO.getUserId(), "不能为空"); diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssClient.java index 95f1888..8a46c14 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssClient.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssClient.java @@ -52,6 +52,45 @@ public class AliOssClient implements StandardOssClient { private OSS oss; private AliOssConfig aliOssConfig; + + public List selectAllBucket() { + List buckets = oss.listBuckets(); + List names = new ArrayList<>(); + buckets.forEach(bucket -> { + names.add(bucket.getName()); + }); + return names; + } + + public String createBucket(String bucketName) { + + try { + if (!oss.doesBucketExist(bucketName)) { + Bucket bucket = oss.createBucket(bucketName); + bucket.setRegion("chengdu"); + }else { + return "bucket already exists"; + } + } catch (Exception e) { + e.printStackTrace(); + } + return bucketName; + } + + public String deleteBucket(String bucketName) { + try{ + if (oss.doesBucketExist(bucketName)){ + VoidResult voidResult = oss.deleteBucket(bucketName); + } + else{ + return "bucket does not exist"; + } + }catch(Exception e){ + e.printStackTrace(); + } + return "yes"; + } + @Override public OssInfo upLoad(InputStream is, String targetName, Boolean isOverride) { String bucketName = getBucketName(); diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssConfiguration.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssConfiguration.java index f66029d..e2474b3 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssConfiguration.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssConfiguration.java @@ -1,6 +1,7 @@ package com.schisandra.oss.application.oss.core.ali; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.extra.spring.SpringUtil; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.comm.Protocol; @@ -46,57 +47,46 @@ public class AliOssConfiguration { aliOssConfig.setEndpoint(ali.getEndpoint()); aliOssConfig.setAccessKeyId(ali.getAccessKeyId()); aliOssConfig.setAccessKeySecret(ali.getAccessKeySecret()); - aliOssConfig.setSecurityToken(ali.getSecurityToken()); - if (Boolean.parseBoolean(ali.getOpenAdvancedSetup())) { - AliOssClientConfig aliOssClientConfig = new AliOssClientConfig(); - aliOssClientConfig.setCnameExcludeList(Arrays.asList(Optional.ofNullable(ali.getCnameExcludeList()).orElse("").split(","))); - aliOssClientConfig.setConnectionTimeout(ali.getConnectionTimeout()); - aliOssClientConfig.setConnectionTTL(ali.getConnectionTTL()); - aliOssClientConfig.setProtocol(Protocol.valueOf(ali.getProtocol())); - aliOssClientConfig.setConnectionRequestTimeout(ali.getConnectionRequestTimeout()); - aliOssClientConfig.setMaxConnections(ali.getMaxConnections()); - aliOssClientConfig.setProxyPort(Integer.parseInt(ali.getProxyPort())); - aliOssClientConfig.setProxyDomain(ali.getProxyDomain()); - aliOssClientConfig.setCrcCheckEnabled(Boolean.parseBoolean(ali.getCrcCheckEnabled())); - aliOssClientConfig.setTickOffset(ali.getTickOffset()); - aliOssClientConfig.setProxyHost(ali.getProxyHost()); - aliOssClientConfig.setProxyPassword(ali.getProxyPassword()); - aliOssClientConfig.setProxyUsername(ali.getProxyUsername()); - aliOssClientConfig.setVerifySSLEnable(Boolean.parseBoolean(ali.getVerifySSLEnable())); - aliOssClientConfig.setUseSystemPropertyValues(Boolean.parseBoolean(ali.getUseSystemPropertyValues())); - aliOssClientConfig.setUseReaper(Boolean.parseBoolean(ali.getUseReaper())); - aliOssClientConfig.setSupportCname(Boolean.parseBoolean(ali.getSupportCname())); - aliOssClientConfig.setSocketTimeout(ali.getSocketTimeout()); - aliOssClientConfig.setSldEnabled(Boolean.parseBoolean(ali.getSldEnabled())); - aliOssClientConfig.setProxyWorkstation(ali.getProxyWorkstation()); - aliOssClientConfig.setIdleConnectionTime(ali.getIdleConnectionTime()); - aliOssClientConfig.setLogConnectionPoolStats(Boolean.parseBoolean(ali.getLogConnectionPoolStats())); - aliOssConfig.setClientConfig(aliOssClientConfig); - } + aliOssConfig.setBasePath(ali.getBasePath()); + + +// if (Boolean.parseBoolean(ali.getOpenAdvancedSetup())) { +// AliOssClientConfig aliOssClientConfig = new AliOssClientConfig(); +// aliOssClientConfig.setCnameExcludeList(Arrays.asList(Optional.ofNullable(ali.getCnameExcludeList()).orElse("").split(","))); +// aliOssClientConfig.setConnectionTimeout(ali.getConnectionTimeout()); +// aliOssClientConfig.setConnectionTTL(ali.getConnectionTTL()); +// aliOssClientConfig.setProtocol(Protocol.valueOf(ali.getProtocol())); +// aliOssClientConfig.setConnectionRequestTimeout(ali.getConnectionRequestTimeout()); +// aliOssClientConfig.setMaxConnections(ali.getMaxConnections()); +// aliOssClientConfig.setProxyPort(Integer.parseInt(ali.getProxyPort())); +// aliOssClientConfig.setProxyDomain(ali.getProxyDomain()); +// aliOssClientConfig.setCrcCheckEnabled(Boolean.parseBoolean(ali.getCrcCheckEnabled())); +// aliOssClientConfig.setTickOffset(ali.getTickOffset()); +// aliOssClientConfig.setProxyHost(ali.getProxyHost()); +// aliOssClientConfig.setProxyPassword(ali.getProxyPassword()); +// aliOssClientConfig.setProxyUsername(ali.getProxyUsername()); +// aliOssClientConfig.setVerifySSLEnable(Boolean.parseBoolean(ali.getVerifySSLEnable())); +// aliOssClientConfig.setUseSystemPropertyValues(Boolean.parseBoolean(ali.getUseSystemPropertyValues())); +// aliOssClientConfig.setUseReaper(Boolean.parseBoolean(ali.getUseReaper())); +// aliOssClientConfig.setSupportCname(Boolean.parseBoolean(ali.getSupportCname())); +// aliOssClientConfig.setSocketTimeout(ali.getSocketTimeout()); +// aliOssClientConfig.setSldEnabled(Boolean.parseBoolean(ali.getSldEnabled())); +// aliOssClientConfig.setProxyWorkstation(ali.getProxyWorkstation()); +// aliOssClientConfig.setIdleConnectionTime(ali.getIdleConnectionTime()); +// aliOssClientConfig.setLogConnectionPoolStats(Boolean.parseBoolean(ali.getLogConnectionPoolStats())); +// aliOssConfig.setClientConfig(aliOssClientConfig); +// } + SpringUtil.registerBean(userId, aliOssClient(aliOssConfig)); return aliOssClient(aliOssConfig); } - public StandardOssClient aliOssClient(AliOssConfig aliOssConfig) { + public AliOssClient aliOssClient(AliOssConfig aliOssConfig) { return new AliOssClient(ossClient(aliOssConfig), aliOssConfig); } public OSS ossClient(AliOssConfig aliOssConfig) { - String securityToken = aliOssConfig.getSecurityToken(); - AliOssClientConfig clientConfiguration = aliOssConfig.getClientConfig(); - if (ObjectUtil.isEmpty(securityToken) && ObjectUtil.isNotEmpty(clientConfiguration)) { - return new OSSClientBuilder().build(aliOssConfig.getEndpoint(), - aliOssConfig.getAccessKeyId(), - aliOssConfig.getAccessKeySecret(), clientConfiguration.toClientConfig()); - } - if (ObjectUtil.isNotEmpty(securityToken) && ObjectUtil.isEmpty(clientConfiguration)) { - return new OSSClientBuilder().build(aliOssConfig.getEndpoint(), - aliOssConfig.getAccessKeyId(), - aliOssConfig.getAccessKeySecret(), securityToken); - } return new OSSClientBuilder().build(aliOssConfig.getEndpoint(), aliOssConfig.getAccessKeyId(), - aliOssConfig.getAccessKeySecret(), securityToken, - Optional.ofNullable(clientConfiguration).orElse(new AliOssClientConfig()).toClientConfig()); + aliOssConfig.getAccessKeySecret()); } - } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/model/AliOssConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/model/AliOssConfig.java index 716ee9c..ea67988 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/model/AliOssConfig.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/model/AliOssConfig.java @@ -44,9 +44,15 @@ public class AliOssConfig { */ private SliceConfig sliceConfig = new SliceConfig(); + public AliOssConfig() { + this.clientConfig = new AliOssClientConfig(); + } + public void init() { this.sliceConfig.init(); basePath = OssPathUtil.valid(basePath); } + + } \ No newline at end of file