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

# Conflicts:
#	schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssMinioController.java
This commit is contained in:
landaiqing
2024-07-24 00:37:35 +08:00
5 changed files with 95 additions and 7 deletions

View File

@@ -13,8 +13,11 @@ import com.schisandra.oss.application.oss.model.OssInfo;
import com.schisandra.oss.common.entity.Result;
import com.schisandra.oss.common.utils.CaffeineUtil;
import com.schisandra.oss.domain.bo.SchisandraOssMinioBO;
import com.schisandra.oss.domain.bo.SchisandraUserOssBO;
import com.schisandra.oss.domain.redis.RedisUtil;
import com.schisandra.oss.domain.service.SchisandraOssMinioDomainService;
import com.schisandra.oss.domain.service.SchisandraUserOssDomainService;
import com.schisandra.oss.infra.basic.entity.SchisandraUserOss;
import io.minio.errors.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
@@ -53,6 +56,9 @@ public class SchisandraOssMinioController {
@Resource
private SchisandraOssMinioDomainService schisandraOssMinioDomainService;
@Resource
SchisandraUserOssDomainService schisandraUserOssDomainService;
@Resource
MinioOssConfiguration minioOssConfiguration;
private final String USER_OSS_PREFIX = "oss:user:heat";
@@ -118,7 +124,7 @@ public class SchisandraOssMinioController {
* @date: 2024/5/15 13:34
*/
@PostMapping("init")
public Result<Object> initMinio(@RequestParam String userId, @RequestParam String Id) {
public Result<Object> initMinio(@RequestParam String userId, @RequestParam String Id) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
if (log.isInfoEnabled()) {
log.info("SchisandraOssMinioController.init.userId:{}", userId);
}
@@ -127,15 +133,27 @@ public class SchisandraOssMinioController {
if (list.size() != 0) {
return Result.fail(list);
}
SchisandraOssMinioBO bo = new SchisandraOssMinioBO();
bo.setId(Id);
bo.setStatus(String.valueOf(true));
if (schisandraOssMinioDomainService.update(bo)) {
return minioOssConfiguration.minioOssClient(userId);
if (minioOssConfiguration.minioOssClient(userId).getSuccess()){
MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId);
int count=bean.selectAllBucket().size();
SchisandraUserOssBO schisandraUserOssBO=new SchisandraUserOssBO();
schisandraUserOssBO.setUserId(userId);
schisandraUserOssBO.setOssType(OssConstant.OssType.MINIO);
schisandraUserOssBO.setBucketCount(count);
if (schisandraUserOssDomainService.updateByUserAndType(schisandraUserOssBO)){
return Result.ok();
}else {
return Result.fail();
}
}
} else {
return Result.fail();
}
return Result.fail();
}
@PostMapping("shutdown")
@@ -169,8 +187,9 @@ public class SchisandraOssMinioController {
Preconditions.checkNotNull(userId, "不能为空");
String path=dirName;
if ((dirName==null)||(dirName.equals(""))){
path = "/";
path="/";
}
MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId);
bean.getMinioOssConfig().setBucketName(bucket);
List<OssInfo> object = (List<OssInfo>) caffeineUtil.caffeineBuild().getIfPresent("MinioListDir" + userId + bucket + path);
@@ -462,7 +481,14 @@ public class SchisandraOssMinioController {
MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId);
bean.getMinioOssConfig().setBucketName(bucket);
caffeineUtil.caffeineBuild().invalidate("MinioBucket" + userId);
return Result.ok(bean.createBucket(bucket));
if (bean.createBucket(bucket).equals(bucket)){
SchisandraUserOssBO schisandraUserOssBO=new SchisandraUserOssBO();
schisandraUserOssBO.setUserId(userId);
schisandraUserOssBO.setOssType(OssConstant.OssType.MINIO);
schisandraUserOssDomainService.increatByUserAndType(schisandraUserOssBO);
return Result.ok();
}
return Result.fail("创建失败");
}
/**
@@ -480,7 +506,14 @@ public class SchisandraOssMinioController {
MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId);
bean.getMinioOssConfig().setBucketName(bucket);
caffeineUtil.caffeineBuild().invalidate("MinioBucket" + userId);
return Result.ok(bean.deleteBucket(bucket));
if (bean.deleteBucket(bucket).equals(bucket)){
SchisandraUserOssBO schisandraUserOssBO=new SchisandraUserOssBO();
schisandraUserOssBO.setUserId(userId);
schisandraUserOssBO.setOssType(OssConstant.OssType.MINIO);
schisandraUserOssDomainService.deleteByUserAndType(schisandraUserOssBO);
return Result.ok();
}
return Result.fail("删除失败");
}
@PostMapping("get")

View File

@@ -21,7 +21,9 @@ public interface SchisandraUserOssDomainService {
* 更新 用户对象存储映射表 信息
*/
Boolean update(SchisandraUserOssBO schisandraUserOssBO);
Boolean updateByUserAndType(SchisandraUserOssBO schisandraUserOssBO);
Boolean increatByUserAndType(SchisandraUserOssBO schisandraUserOssBO);
Boolean deleteByUserAndType(SchisandraUserOssBO schisandraUserOssBO);
/**
* 删除 用户对象存储映射表 信息
*/
@@ -29,5 +31,6 @@ public interface SchisandraUserOssDomainService {
List<SchisandraUserOssBO> queryOSSByUserId(String userId);
SchisandraUserOssBO queryOSSByTypeAndUserId(String userId,String type);
}

View File

@@ -39,6 +39,22 @@ public class SchisandraUserOssDomainServiceImpl implements SchisandraUserOssDoma
return schisandraUserOssService.update(schisandraUserOss) > 0;
}
@Override
public Boolean updateByUserAndType(SchisandraUserOssBO schisandraUserOssBO) {
SchisandraUserOss schisandraUserOss = SchisandraUserOssBOConverter.INSTANCE.convertBOToEntity(schisandraUserOssBO);
return schisandraUserOssService.updateByUserIdAndType(schisandraUserOss) > 0;
}
@Override
public Boolean increatByUserAndType(SchisandraUserOssBO schisandraUserOssBO) {
SchisandraUserOss schisandraUserOss = SchisandraUserOssBOConverter.INSTANCE.convertBOToEntity(schisandraUserOssBO);
return schisandraUserOssService.increatByUserIdAndType(schisandraUserOss)>0;
}
public Boolean deleteByUserAndType(SchisandraUserOssBO schisandraUserOssBO) {
SchisandraUserOss schisandraUserOss = SchisandraUserOssBOConverter.INSTANCE.convertBOToEntity(schisandraUserOssBO);
return schisandraUserOssService.deleteByUserAndType(schisandraUserOss)>0;
}
@Override
public Boolean delete(SchisandraUserOssBO schisandraUserOssBO) {
SchisandraUserOss schisandraUserOss = new SchisandraUserOss();

View File

@@ -12,6 +12,10 @@ import java.util.function.Predicate;
* @since 2024-07-10 16:14:33
*/
public interface SchisandraUserOssService {
int updateByUserIdAndType(SchisandraUserOss schisandraUserOss);
int increatByUserIdAndType(SchisandraUserOss schisandraUserOss);
int deleteByUserAndType(SchisandraUserOss schisandraUserOss);
/**
* 通过ID查询单条数据

View File

@@ -1,6 +1,9 @@
package com.schisandra.oss.infra.basic.service.impl;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
import com.mybatisflex.core.update.UpdateWrapper;
import com.mybatisflex.core.util.UpdateEntity;
import com.schisandra.oss.infra.basic.entity.SchisandraUserOss;
import com.schisandra.oss.infra.basic.dao.SchisandraUserOssDao;
import com.schisandra.oss.infra.basic.entity.table.SchisandraUserOssTableDef;
@@ -22,6 +25,35 @@ public class SchisandraUserOssServiceImpl implements SchisandraUserOssService {
@Resource
private SchisandraUserOssDao schisandraUserOssDao;
@Override
public int updateByUserIdAndType(SchisandraUserOss schisandraUserOss) {
return this.schisandraUserOssDao.updateByCondition(schisandraUserOss, SchisandraUserOssTableDef.SCHISANDRA_USER_OSS.USER_ID.eq(schisandraUserOss.getUserId()).and(SchisandraUserOssTableDef.SCHISANDRA_USER_OSS.OSS_TYPE.eq(schisandraUserOss.getOssType())));
}
@Override
public int increatByUserIdAndType(SchisandraUserOss schisandraUserOss) {
if (UpdateChain.of(SchisandraUserOss.class)
.setRaw(SchisandraUserOss::getBucketCount, "bucket_count + 1")
.where(SchisandraUserOss::getOssType).eq(schisandraUserOss.getOssType()).and(SchisandraUserOss::getUserId).eq(schisandraUserOss.getUserId())
.update()){
return 1;
}else {
return 0;
}
}
@Override
public int deleteByUserAndType(SchisandraUserOss schisandraUserOss) {
if (UpdateChain.of(SchisandraUserOss.class)
.setRaw(SchisandraUserOss::getBucketCount, "bucket_count - 1")
.where(SchisandraUserOss::getOssType).eq(schisandraUserOss.getOssType()).and(SchisandraUserOss::getUserId).eq(schisandraUserOss.getUserId())
.update()){
return 1;
}else {
return 0;
}
}
/**
* 通过ID查询单条数据
*