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.entity.Result;
import com.schisandra.oss.common.utils.CaffeineUtil; import com.schisandra.oss.common.utils.CaffeineUtil;
import com.schisandra.oss.domain.bo.SchisandraOssMinioBO; 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.redis.RedisUtil;
import com.schisandra.oss.domain.service.SchisandraOssMinioDomainService; 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 io.minio.errors.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
@@ -53,6 +56,9 @@ public class SchisandraOssMinioController {
@Resource @Resource
private SchisandraOssMinioDomainService schisandraOssMinioDomainService; private SchisandraOssMinioDomainService schisandraOssMinioDomainService;
@Resource
SchisandraUserOssDomainService schisandraUserOssDomainService;
@Resource @Resource
MinioOssConfiguration minioOssConfiguration; MinioOssConfiguration minioOssConfiguration;
private final String USER_OSS_PREFIX = "oss:user:heat"; private final String USER_OSS_PREFIX = "oss:user:heat";
@@ -118,7 +124,7 @@ public class SchisandraOssMinioController {
* @date: 2024/5/15 13:34 * @date: 2024/5/15 13:34
*/ */
@PostMapping("init") @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()) { if (log.isInfoEnabled()) {
log.info("SchisandraOssMinioController.init.userId:{}", userId); log.info("SchisandraOssMinioController.init.userId:{}", userId);
} }
@@ -127,15 +133,27 @@ public class SchisandraOssMinioController {
if (list.size() != 0) { if (list.size() != 0) {
return Result.fail(list); return Result.fail(list);
} }
SchisandraOssMinioBO bo = new SchisandraOssMinioBO(); SchisandraOssMinioBO bo = new SchisandraOssMinioBO();
bo.setId(Id); bo.setId(Id);
bo.setStatus(String.valueOf(true)); bo.setStatus(String.valueOf(true));
if (schisandraOssMinioDomainService.update(bo)) { 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 { } else {
return Result.fail(); return Result.fail();
} }
return Result.fail();
} }
@PostMapping("shutdown") @PostMapping("shutdown")
@@ -169,8 +187,9 @@ public class SchisandraOssMinioController {
Preconditions.checkNotNull(userId, "不能为空"); Preconditions.checkNotNull(userId, "不能为空");
String path=dirName; String path=dirName;
if ((dirName==null)||(dirName.equals(""))){ if ((dirName==null)||(dirName.equals(""))){
path = "/"; path="/";
} }
MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId);
bean.getMinioOssConfig().setBucketName(bucket); bean.getMinioOssConfig().setBucketName(bucket);
List<OssInfo> object = (List<OssInfo>) caffeineUtil.caffeineBuild().getIfPresent("MinioListDir" + userId + bucket + path); 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); MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId);
bean.getMinioOssConfig().setBucketName(bucket); bean.getMinioOssConfig().setBucketName(bucket);
caffeineUtil.caffeineBuild().invalidate("MinioBucket" + userId); 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); MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId);
bean.getMinioOssConfig().setBucketName(bucket); bean.getMinioOssConfig().setBucketName(bucket);
caffeineUtil.caffeineBuild().invalidate("MinioBucket" + userId); 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") @PostMapping("get")

View File

@@ -21,7 +21,9 @@ public interface SchisandraUserOssDomainService {
* 更新 用户对象存储映射表 信息 * 更新 用户对象存储映射表 信息
*/ */
Boolean update(SchisandraUserOssBO schisandraUserOssBO); 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); List<SchisandraUserOssBO> queryOSSByUserId(String userId);
SchisandraUserOssBO queryOSSByTypeAndUserId(String userId,String type); SchisandraUserOssBO queryOSSByTypeAndUserId(String userId,String type);
} }

View File

@@ -39,6 +39,22 @@ public class SchisandraUserOssDomainServiceImpl implements SchisandraUserOssDoma
return schisandraUserOssService.update(schisandraUserOss) > 0; 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 @Override
public Boolean delete(SchisandraUserOssBO schisandraUserOssBO) { public Boolean delete(SchisandraUserOssBO schisandraUserOssBO) {
SchisandraUserOss schisandraUserOss = new SchisandraUserOss(); SchisandraUserOss schisandraUserOss = new SchisandraUserOss();

View File

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

View File

@@ -1,6 +1,9 @@
package com.schisandra.oss.infra.basic.service.impl; package com.schisandra.oss.infra.basic.service.impl;
import com.mybatisflex.core.query.QueryWrapper; 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.entity.SchisandraUserOss;
import com.schisandra.oss.infra.basic.dao.SchisandraUserOssDao; import com.schisandra.oss.infra.basic.dao.SchisandraUserOssDao;
import com.schisandra.oss.infra.basic.entity.table.SchisandraUserOssTableDef; import com.schisandra.oss.infra.basic.entity.table.SchisandraUserOssTableDef;
@@ -22,6 +25,35 @@ public class SchisandraUserOssServiceImpl implements SchisandraUserOssService {
@Resource @Resource
private SchisandraUserOssDao schisandraUserOssDao; 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查询单条数据 * 通过ID查询单条数据
* *