lzq 2025-08-01 18:07:48 +08:00
parent 4c94652173
commit b575de3230
11 changed files with 97 additions and 10 deletions

View File

@ -23,6 +23,11 @@
<artifactId>njzscloud-common-core</artifactId> <artifactId>njzscloud-common-core</artifactId>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>com.njzscloud</groupId>
<artifactId>njzscloud-common-mvc</artifactId>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>io.minio</groupId> <groupId>io.minio</groupId>
<artifactId>minio</artifactId> <artifactId>minio</artifactId>

View File

@ -1,5 +1,6 @@
package com.njzscloud.common.minio.config; package com.njzscloud.common.minio.config;
import com.njzscloud.common.minio.controller.OSSController;
import io.minio.MinioAsyncClient; import io.minio.MinioAsyncClient;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@ -19,4 +20,9 @@ public class MinioAutoConfiguration {
.credentials(accessKey, secretKey) .credentials(accessKey, secretKey)
.build(); .build();
} }
@Bean
public OSSController ossController() {
return new OSSController();
}
} }

View File

@ -0,0 +1,54 @@
package com.njzscloud.common.minio.controller;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.njzscloud.common.core.tuple.Tuple2;
import com.njzscloud.common.core.utils.R;
import com.njzscloud.common.minio.util.Minio;
import com.njzscloud.common.mvc.util.FileResponseUtil;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/oss")
public class OSSController {
@GetMapping("/end_mlt_upload")
public R<?> endMltUpload(String objectName, String uploadId, int partNum) {
Minio.endMltUpload(objectName, uploadId, partNum);
return R.success();
}
@GetMapping("/start_mlt_upload")
public R<Tuple2<String, List<String>>> startMltUpload(
String objectName,
String contentType,
int partNum) {
return R.success(Minio.startMltUpload(objectName, contentType, partNum));
}
@GetMapping("/obtain_presigned_url")
public R<Map<String, String>> obtainPresignedUrl(
@RequestParam(value = "bucketName") String bucketName,
@RequestParam(value = "filename") String filename) {
String objectName = IdUtil.fastSimpleUUID();
if (StrUtil.isNotBlank(filename)) {
objectName = objectName + "." + FileUtil.extName(filename);
}
return R.success(Minio.obtainPresignedUrl(bucketName, objectName));
}
@GetMapping("/download/{bucketName}/{objectName}")
public void obtainFile(
@PathVariable("bucketName") String bucketName,
@PathVariable("objectName") String objectName,
HttpServletResponse response) {
Tuple2<InputStream, String> tuple2 = Minio.obtainFile(bucketName, objectName);
FileResponseUtil.download(response, tuple2.get_0(), tuple2.get_1(), objectName);
}
}

View File

@ -2,6 +2,7 @@ package com.njzscloud.common.mvc.support;
import com.njzscloud.common.core.ex.CliException; import com.njzscloud.common.core.ex.CliException;
import com.njzscloud.common.core.ex.ExceptionMsg; import com.njzscloud.common.core.ex.ExceptionMsg;
import com.njzscloud.common.core.ex.SysError;
import com.njzscloud.common.core.ex.SysException; import com.njzscloud.common.core.ex.SysException;
import com.njzscloud.common.core.utils.R; import com.njzscloud.common.core.utils.R;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -283,6 +284,17 @@ public class GlobalExceptionController {
return R.failed(e.expect, e.msg, e.message); return R.failed(e.expect, e.msg, e.message);
} }
/**
*
*/
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler(SysError.class)
public R<?> sysErrorHandler(SysError e) {
printRequest();
log.error(e.getMessage(), e);
return R.failed(e.expect, e.msg, e.message);
}
/** /**
* *
*/ */

View File

@ -49,10 +49,10 @@
<groupId>com.njzscloud</groupId> <groupId>com.njzscloud</groupId>
<artifactId>njzscloud-common-gen</artifactId> <artifactId>njzscloud-common-gen</artifactId>
</dependency> </dependency>
<!-- <dependency> <dependency>
<groupId>com.njzscloud</groupId> <groupId>com.njzscloud</groupId>
<artifactId>njzscloud-common-minio</artifactId> <artifactId>njzscloud-common-minio</artifactId>
</dependency> --> </dependency>
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>

View File

@ -21,8 +21,8 @@ import java.nio.file.Paths;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@RestController // @RestController
@RequestMapping("/oss") // @RequestMapping("/oss")
public class OSSController { public class OSSController {
@Value("${oss.path}") @Value("${oss.path}")

View File

@ -24,6 +24,8 @@ public class UserDetailResult {
*/ */
private Gender gender; private Gender gender;
private String avatar;
/** /**
* *
*/ */

View File

@ -1,10 +1,10 @@
package com.njzscloud.supervisory.user.pojo; package com.njzscloud.supervisory.user.pojo;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.njzscloud.supervisory.user.contant.Gender;
import com.njzscloud.common.mvc.validator.Constrained; import com.njzscloud.common.mvc.validator.Constrained;
import com.njzscloud.common.mvc.validator.Constraint; import com.njzscloud.common.mvc.validator.Constraint;
import com.njzscloud.common.mvc.validator.ValidRule; import com.njzscloud.common.mvc.validator.ValidRule;
import com.njzscloud.supervisory.user.contant.Gender;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -24,6 +24,8 @@ public class UserModifyParam implements Constrained {
*/ */
private String nickname; private String nickname;
private String avatar;
/** /**
* ; gender * ; gender
*/ */

View File

@ -105,10 +105,15 @@ public class SysUserService extends ServiceImpl<SysUserMapper, SysUserEntity> im
String wechatUnionid = account.getWechatUnionid(); String wechatUnionid = account.getWechatUnionid();
List<SysUserAccountEntity> oldSysUserList = sysUserAccountService.list(Wrappers.<SysUserAccountEntity>lambdaQuery() List<SysUserAccountEntity> oldSysUserList = sysUserAccountService.list(Wrappers.<SysUserAccountEntity>lambdaQuery()
.eq(SysUserAccountEntity::getUsername, username) .ne(SysUserAccountEntity::getId, id)
.or().eq(StrUtil.isNotBlank(email), SysUserAccountEntity::getEmail, email) .and(it1 -> it1
.or().eq(StrUtil.isNotBlank(phone), SysUserAccountEntity::getPhone, phone) .eq(SysUserAccountEntity::getUsername, username)
.or(StrUtil.isNotBlank(wechatOpenid) && StrUtil.isNotBlank(wechatUnionid), it -> it.eq(SysUserAccountEntity::getWechatOpenid, wechatOpenid).eq(SysUserAccountEntity::getWechatUnionid, wechatUnionid)) .or().eq(StrUtil.isNotBlank(email), SysUserAccountEntity::getEmail, email)
.or().eq(StrUtil.isNotBlank(phone), SysUserAccountEntity::getPhone, phone)
.or(StrUtil.isNotBlank(wechatOpenid) && StrUtil.isNotBlank(wechatUnionid),
it -> it.eq(SysUserAccountEntity::getWechatOpenid, wechatOpenid)
.eq(SysUserAccountEntity::getWechatUnionid, wechatUnionid))
)
); );
Assert.isTrue(oldSysUserList.stream().noneMatch(it -> username.equals(it.getUsername())), () -> Exceptions.exception("用户名【{}】已被使用", username)); Assert.isTrue(oldSysUserList.stream().noneMatch(it -> username.equals(it.getUsername())), () -> Exceptions.exception("用户名【{}】已被使用", username));
Assert.isTrue(StrUtil.isBlank(email) || oldSysUserList.stream().noneMatch(it -> email.equals(it.getEmail())), () -> Exceptions.exception("邮箱【{}】已被使用", email)); Assert.isTrue(StrUtil.isBlank(email) || oldSysUserList.stream().noneMatch(it -> email.equals(it.getEmail())), () -> Exceptions.exception("邮箱【{}】已被使用", email));

View File

@ -28,7 +28,7 @@ oss:
endpoint: http://localhost:9000 endpoint: http://localhost:9000
access-key: minioadmin access-key: minioadmin
secret-key: minioadmin secret-key: minioadmin
bucket-name: test bucket-name: zsy
app: app:
district: district:

View File

@ -13,6 +13,7 @@
SELECT a.id, SELECT a.id,
a.nickname, a.nickname,
a.gender, a.gender,
a.avatar,
a.email, a.email,
a.phone, a.phone,
b.id account_id, b.id account_id,