Merge remote-tracking branch 'refs/remotes/origin/dev'

This commit is contained in:
landaiqing
2024-07-01 08:57:24 +08:00
5 changed files with 232 additions and 44 deletions

View File

@@ -2,6 +2,7 @@ package com.schisandra.auth.application.controller;
import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
@@ -276,7 +277,7 @@ public class SchisandraAuthUserController {
log.info("UserController.findPassword.dto:{}", JSON.toJSONString(schisandraAuthUserDTO)); log.info("UserController.findPassword.dto:{}", JSON.toJSONString(schisandraAuthUserDTO));
} }
if (schisandraAuthUserDTO.getPhone() == null) { if (schisandraAuthUserDTO.getPhone() == null) {
log.error("UserController.register.phone is null"); log.error("UserController.findPassword.phone is null");
return null; return null;
} }
String token = schisandraAuthUserDTO.getToken(); String token = schisandraAuthUserDTO.getToken();

View File

@@ -1,18 +1,33 @@
package com.schisandra.oss.application.controller; package com.schisandra.oss.application.controller;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.amazonaws.util.IOUtils;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.schisandra.oss.application.convert.SchisandraOssAliDTOConverter; import com.schisandra.oss.application.convert.SchisandraOssAliDTOConverter;
import com.schisandra.oss.application.dto.SchisandraOssAliDTO; 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.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.common.entity.Result;
import com.schisandra.oss.domain.bo.SchisandraOssAliBO; import com.schisandra.oss.domain.bo.SchisandraOssAliBO;
import com.schisandra.oss.domain.service.SchisandraOssAliDomainService; import com.schisandra.oss.domain.service.SchisandraOssAliDomainService;
import io.minio.errors.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; 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 * controller
@@ -29,6 +44,8 @@ public class SchisandraOssAliController {
private SchisandraOssAliDomainService schisandraOssAliDomainService; private SchisandraOssAliDomainService schisandraOssAliDomainService;
@Resource @Resource
private AliOssConfiguration aliOssConfiguration; private AliOssConfiguration aliOssConfiguration;
@Autowired
private AliOssClient aliOssClient;
@GetMapping("init") @GetMapping("init")
public void init(@RequestParam String userId){ 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<String> 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<java.lang.String>
* @author sjm
* @date: 2024/6/26 17:38
*/
@PostMapping("createBucket")
public Result<String> 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<String> 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<OssInfo> 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) { private void parameterCheck(SchisandraOssAliDTO schisandraOssAliDTO) {
Preconditions.checkNotNull(schisandraOssAliDTO.getId(), "不能为空"); Preconditions.checkNotNull(schisandraOssAliDTO.getId(), "不能为空");
Preconditions.checkNotNull(schisandraOssAliDTO.getUserId(), "不能为空"); Preconditions.checkNotNull(schisandraOssAliDTO.getUserId(), "不能为空");

View File

@@ -52,6 +52,45 @@ public class AliOssClient implements StandardOssClient {
private OSS oss; private OSS oss;
private AliOssConfig aliOssConfig; private AliOssConfig aliOssConfig;
public List<String> selectAllBucket() {
List<Bucket> buckets = oss.listBuckets();
List<String> 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 @Override
public OssInfo upLoad(InputStream is, String targetName, Boolean isOverride) { public OssInfo upLoad(InputStream is, String targetName, Boolean isOverride) {
String bucketName = getBucketName(); String bucketName = getBucketName();

View File

@@ -1,6 +1,7 @@
package com.schisandra.oss.application.oss.core.ali; package com.schisandra.oss.application.oss.core.ali;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.aliyun.oss.OSS; import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.comm.Protocol; import com.aliyun.oss.common.comm.Protocol;
@@ -46,57 +47,46 @@ public class AliOssConfiguration {
aliOssConfig.setEndpoint(ali.getEndpoint()); aliOssConfig.setEndpoint(ali.getEndpoint());
aliOssConfig.setAccessKeyId(ali.getAccessKeyId()); aliOssConfig.setAccessKeyId(ali.getAccessKeyId());
aliOssConfig.setAccessKeySecret(ali.getAccessKeySecret()); aliOssConfig.setAccessKeySecret(ali.getAccessKeySecret());
aliOssConfig.setSecurityToken(ali.getSecurityToken()); aliOssConfig.setBasePath(ali.getBasePath());
if (Boolean.parseBoolean(ali.getOpenAdvancedSetup())) {
AliOssClientConfig aliOssClientConfig = new AliOssClientConfig();
aliOssClientConfig.setCnameExcludeList(Arrays.asList(Optional.ofNullable(ali.getCnameExcludeList()).orElse("").split(","))); // if (Boolean.parseBoolean(ali.getOpenAdvancedSetup())) {
aliOssClientConfig.setConnectionTimeout(ali.getConnectionTimeout()); // AliOssClientConfig aliOssClientConfig = new AliOssClientConfig();
aliOssClientConfig.setConnectionTTL(ali.getConnectionTTL()); // aliOssClientConfig.setCnameExcludeList(Arrays.asList(Optional.ofNullable(ali.getCnameExcludeList()).orElse("").split(",")));
aliOssClientConfig.setProtocol(Protocol.valueOf(ali.getProtocol())); // aliOssClientConfig.setConnectionTimeout(ali.getConnectionTimeout());
aliOssClientConfig.setConnectionRequestTimeout(ali.getConnectionRequestTimeout()); // aliOssClientConfig.setConnectionTTL(ali.getConnectionTTL());
aliOssClientConfig.setMaxConnections(ali.getMaxConnections()); // aliOssClientConfig.setProtocol(Protocol.valueOf(ali.getProtocol()));
aliOssClientConfig.setProxyPort(Integer.parseInt(ali.getProxyPort())); // aliOssClientConfig.setConnectionRequestTimeout(ali.getConnectionRequestTimeout());
aliOssClientConfig.setProxyDomain(ali.getProxyDomain()); // aliOssClientConfig.setMaxConnections(ali.getMaxConnections());
aliOssClientConfig.setCrcCheckEnabled(Boolean.parseBoolean(ali.getCrcCheckEnabled())); // aliOssClientConfig.setProxyPort(Integer.parseInt(ali.getProxyPort()));
aliOssClientConfig.setTickOffset(ali.getTickOffset()); // aliOssClientConfig.setProxyDomain(ali.getProxyDomain());
aliOssClientConfig.setProxyHost(ali.getProxyHost()); // aliOssClientConfig.setCrcCheckEnabled(Boolean.parseBoolean(ali.getCrcCheckEnabled()));
aliOssClientConfig.setProxyPassword(ali.getProxyPassword()); // aliOssClientConfig.setTickOffset(ali.getTickOffset());
aliOssClientConfig.setProxyUsername(ali.getProxyUsername()); // aliOssClientConfig.setProxyHost(ali.getProxyHost());
aliOssClientConfig.setVerifySSLEnable(Boolean.parseBoolean(ali.getVerifySSLEnable())); // aliOssClientConfig.setProxyPassword(ali.getProxyPassword());
aliOssClientConfig.setUseSystemPropertyValues(Boolean.parseBoolean(ali.getUseSystemPropertyValues())); // aliOssClientConfig.setProxyUsername(ali.getProxyUsername());
aliOssClientConfig.setUseReaper(Boolean.parseBoolean(ali.getUseReaper())); // aliOssClientConfig.setVerifySSLEnable(Boolean.parseBoolean(ali.getVerifySSLEnable()));
aliOssClientConfig.setSupportCname(Boolean.parseBoolean(ali.getSupportCname())); // aliOssClientConfig.setUseSystemPropertyValues(Boolean.parseBoolean(ali.getUseSystemPropertyValues()));
aliOssClientConfig.setSocketTimeout(ali.getSocketTimeout()); // aliOssClientConfig.setUseReaper(Boolean.parseBoolean(ali.getUseReaper()));
aliOssClientConfig.setSldEnabled(Boolean.parseBoolean(ali.getSldEnabled())); // aliOssClientConfig.setSupportCname(Boolean.parseBoolean(ali.getSupportCname()));
aliOssClientConfig.setProxyWorkstation(ali.getProxyWorkstation()); // aliOssClientConfig.setSocketTimeout(ali.getSocketTimeout());
aliOssClientConfig.setIdleConnectionTime(ali.getIdleConnectionTime()); // aliOssClientConfig.setSldEnabled(Boolean.parseBoolean(ali.getSldEnabled()));
aliOssClientConfig.setLogConnectionPoolStats(Boolean.parseBoolean(ali.getLogConnectionPoolStats())); // aliOssClientConfig.setProxyWorkstation(ali.getProxyWorkstation());
aliOssConfig.setClientConfig(aliOssClientConfig); // aliOssClientConfig.setIdleConnectionTime(ali.getIdleConnectionTime());
} // aliOssClientConfig.setLogConnectionPoolStats(Boolean.parseBoolean(ali.getLogConnectionPoolStats()));
// aliOssConfig.setClientConfig(aliOssClientConfig);
// }
SpringUtil.registerBean(userId, aliOssClient(aliOssConfig));
return aliOssClient(aliOssConfig); return aliOssClient(aliOssConfig);
} }
public StandardOssClient aliOssClient(AliOssConfig aliOssConfig) { public AliOssClient aliOssClient(AliOssConfig aliOssConfig) {
return new AliOssClient(ossClient(aliOssConfig), aliOssConfig); return new AliOssClient(ossClient(aliOssConfig), aliOssConfig);
} }
public OSS 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(), return new OSSClientBuilder().build(aliOssConfig.getEndpoint(),
aliOssConfig.getAccessKeyId(), aliOssConfig.getAccessKeyId(),
aliOssConfig.getAccessKeySecret(), securityToken, aliOssConfig.getAccessKeySecret());
Optional.ofNullable(clientConfiguration).orElse(new AliOssClientConfig()).toClientConfig());
} }
} }

View File

@@ -44,9 +44,15 @@ public class AliOssConfig {
*/ */
private SliceConfig sliceConfig = new SliceConfig(); private SliceConfig sliceConfig = new SliceConfig();
public AliOssConfig() {
this.clientConfig = new AliOssClientConfig();
}
public void init() { public void init() {
this.sliceConfig.init(); this.sliceConfig.init();
basePath = OssPathUtil.valid(basePath); basePath = OssPathUtil.valid(basePath);
} }
} }