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/SchisandraOssMinioController.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/SchisandraOssMinioController.java index 3684eee..e8b6ac5 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/SchisandraOssMinioController.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/SchisandraOssMinioController.java @@ -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 initMinio(@RequestParam String userId, @RequestParam String Id) { + public Result 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 object = (List) 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") diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraUserOssDomainService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraUserOssDomainService.java index 835057e..86695a9 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraUserOssDomainService.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraUserOssDomainService.java @@ -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 queryOSSByUserId(String userId); + SchisandraUserOssBO queryOSSByTypeAndUserId(String userId,String type); } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraUserOssDomainServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraUserOssDomainServiceImpl.java index c57f928..78c1da5 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraUserOssDomainServiceImpl.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraUserOssDomainServiceImpl.java @@ -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(); diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraUserOssService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraUserOssService.java index 4284646..ef59144 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraUserOssService.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraUserOssService.java @@ -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查询单条数据 diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraUserOssServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraUserOssServiceImpl.java index 7aa4118..f8ee469 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraUserOssServiceImpl.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraUserOssServiceImpl.java @@ -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查询单条数据 *