Pre Merge pull request !172 from 让无线电飞BG8GLR/master-jdk17

pull/172/MERGE
让无线电飞BG8GLR 2025-03-15 12:55:14 +00:00 committed by Gitee
commit e9568d4c62
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 26 additions and 3 deletions

View File

@ -51,12 +51,22 @@ public class GrayLoadBalancer implements ReactorServiceInstanceLoadBalancer {
public Mono<Response<ServiceInstance>> choose(Request request) {
// 获得 HttpHeaders 属性,实现从 header 中获取 version
HttpHeaders headers = ((RequestDataContext) request.getContext()).getClientRequest().getHeaders();
//从requet中取得链接参数列表
java.net.URI uri = ((RequestDataContext) request.getContext()).getClientRequest().getUrl();
java.util.Map<String, String> queryParams = java.util.stream.Stream.of(uri.getQuery().split("&"))
.filter(s -> !s.isEmpty())
.map(s -> s.split("="))
.collect(java.util.stream.Collectors.toMap(
arr -> arr[0],
arr -> arr.length > 1 ? arr[1] : "",
(existing, replacement) -> existing
));
// 选择实例
ServiceInstanceListSupplier supplier = serviceInstanceListSupplierProvider.getIfAvailable(NoopServiceInstanceListSupplier::new);
return supplier.get(request).next().map(list -> getInstanceResponse(list, headers));
return supplier.get(request).next().map(list -> getInstanceResponse(list, headers,queryParams));
}
private Response<ServiceInstance> getInstanceResponse(List<ServiceInstance> instances, HttpHeaders headers) {
private Response<ServiceInstance> getInstanceResponse(List<ServiceInstance> instances, HttpHeaders headers, java.util.Map<String, String> queryParams) {
// 如果服务实例为空,则直接返回
if (CollUtil.isEmpty(instances)) {
log.warn("[getInstanceResponse][serviceId({}) 服务实例列表为空]", serviceId);
@ -64,8 +74,12 @@ public class GrayLoadBalancer implements ReactorServiceInstanceLoadBalancer {
}
// 筛选满足 version 条件的实例列表
String version = headers.getFirst(VERSION);
String version1 = headers.getFirst(VERSION);
if(StrUtil.isEmpty(version1)) {
version1 = queryParams.get("version");
}
List<ServiceInstance> chooseInstances;
String version = version1;
if (StrUtil.isEmpty(version)) {
chooseInstances = instances;
} else {

View File

@ -24,6 +24,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.module.infra.framework.file.core.utils.FileTypeUtils.writeAttachment;
@ -42,6 +43,14 @@ public class FileController {
public CommonResult<String> uploadFile(FileUploadReqVO uploadReqVO) throws Exception {
MultipartFile file = uploadReqVO.getFile();
String path = uploadReqVO.getPath();
// 校验文件类型
String extname = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")).toLowerCase();
if(StrUtil.isEmpty(extname)){
return error(3379,"只能上传图片文件!");
}
if(!".bmp,.jpg,.jpeg,.png".contains(extname)) {
return error(3379,"只能上传图片文件!");
}
return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream())));
}