dev798
wxy 2024-04-09 20:35:13 +08:00
parent 88de15ced1
commit 8296126d9f
11 changed files with 58 additions and 29 deletions

View File

@ -15,9 +15,11 @@ spring:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -15,9 +15,11 @@ spring:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -15,9 +15,11 @@ spring:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -15,9 +15,11 @@ spring:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -15,9 +15,11 @@ spring:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -50,9 +50,10 @@ public class ProductController {
return success(list); return success(list);
} }
@ApiOperation("添加商品") @ApiOperation("添加商品")
@PostMapping("/productInsert") @PostMapping("/productInsert")
public R<Product>productInsert(@Valid @RequestBody ProductReq productReq){ public R productInsert(@Valid @RequestBody ProductReq productReq){
productService.productInsert(productReq); productService.productInsert(productReq);
return R.ok(null,"添加成功"); return R.ok(null,"添加成功");
} }

View File

@ -2,7 +2,6 @@ package com.muyu.product.mapper;
import com.muyu.product.domain.DTO.Product; import com.muyu.product.domain.DTO.Product;
import com.muyu.product.domain.Resp.ProductResp; import com.muyu.product.domain.Resp.ProductResp;
import com.muyu.product.domain.req.ProductReq;
import com.muyu.product.domain.req.QueryProductReq; import com.muyu.product.domain.req.QueryProductReq;
import java.util.List; import java.util.List;
@ -19,7 +18,8 @@ public interface ProductMapper {
void updateMothodId(Integer id); void updateMothodId(Integer id);
Integer findProductNumber(ProductReq productReq); Integer findProductNumber(String productNumber);
Integer deleteProduct(Integer id); Integer deleteProduct(Integer id);
} }

View File

@ -35,10 +35,6 @@ import java.util.concurrent.Executors;
@Log4j2 @Log4j2
public class ProductServiceImpl implements ProductService { public class ProductServiceImpl implements ProductService {
private final Integer min = 0;
private final Integer max = 5;
@Resource @Resource
private ProductMapper productMapper; private ProductMapper productMapper;
@ -54,33 +50,49 @@ public class ProductServiceImpl implements ProductService {
private ExecutorService executor = Executors.newFixedThreadPool(3); private ExecutorService executor = Executors.newFixedThreadPool(3);
public void checkProductParams(ProductReq productReq){ // 检查产品参数
CompletableFuture<ValidationResult>methodTypeFuture = public void checkProductParams(ProductReq productReq) {
CompletableFuture.supplyAsync(() -> checkMethodType(productReq),executor); try {
CompletableFuture<ValidationResult>skuIdFuture = // 异步执行方法类型检查
CompletableFuture.supplyAsync(() -> findSkuId(productReq),executor); CompletableFuture<ValidationResult> methodTypeFuture =
CompletableFuture<ValidationResult>productNumberFuture = CompletableFuture.supplyAsync(() -> checkMethodType(productReq), executor);
CompletableFuture.supplyAsync(() -> checkProductNumber(productReq),executor); // 异步执行查找skuId检查
CompletableFuture<String>allValidFuture = CompletableFuture<ValidationResult> skuIdFuture =
methodTypeFuture.thenCombine(skuIdFuture, CompletableFuture.supplyAsync(() -> findSkuId(productReq), executor);
(methodTypeResult,skuIdResult)-> // 异步执行产品编号检查
methodTypeResult.isValid()&& skuIdResult.isValid()) CompletableFuture<ValidationResult> productNumberFuture =
.thenCombine(productNumberFuture,(previousResult,productNumberResult) CompletableFuture.supplyAsync(() -> checkProductNumber(productReq), executor);
->previousResult&&productNumberResult.isValid())
.thenApply(allValid->allValid ? "所有检查通过":"存在检查未通过")
.exceptionally(throwable -> "检验过程发送异常" + throwable.getMessage());
allValidFuture.thenAccept(System.out::println); // 组合所有的异步任务,判断是否所有检查通过
} CompletableFuture<String> allValidFuture =
CompletableFuture.allOf(methodTypeFuture, skuIdFuture, productNumberFuture)
.thenApply(ignored -> {
boolean allValid = methodTypeFuture.join().isValid()
&& skuIdFuture.join().isValid()
&& productNumberFuture.join().isValid();
return allValid ? "所有检查通过" : "存在检查未通过";
})
.exceptionally(throwable -> "校验过程发生异常: " + throwable.getMessage());
private ValidationResult checkProductNumber(ProductReq productReq) { // 输出结果
Integer productNumber = productMapper.findProductNumber(productReq); allValidFuture.thenAccept(System.out::println);
if(productNumber>=Integer.valueOf(Number.zero.getValue())){ } catch (Exception e) {
return new ValidationResult(false,"productNumber不能重复"); System.err.println("校验过程发生异常: " + e.getMessage());
} }
return new ValidationResult(true,"通过");
} }
// 检查产品编号
private ValidationResult checkProductNumber(ProductReq productReq) {
try {
Integer productNumber = productMapper.findProductNumber(String.valueOf(productReq.getProduct().getProductNumber()));
if (productNumber < Integer.valueOf(Number.zero.getValue())) {
return new ValidationResult(false, "productNumber不能重复");
}
return new ValidationResult(true, "productNumber检查通过");
} catch (Exception e) {
return new ValidationResult(false, "检查产品编号时发生异常:" + e.getMessage());
}
}
private ValidationResult findSkuId(ProductReq productReq) { private ValidationResult findSkuId(ProductReq productReq) {
Integer skuId = productSkuMapper.findSkuId(productReq.getProductSkus()); Integer skuId = productSkuMapper.findSkuId(productReq.getProductSkus());
if(skuId>=Integer.valueOf(Number.zero.getValue())){ if(skuId>=Integer.valueOf(Number.zero.getValue())){

View File

@ -15,9 +15,11 @@ spring:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -15,9 +15,11 @@ spring:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -15,9 +15,11 @@ spring:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 111.231.174.71:8848 server-addr: 111.231.174.71:8848
namespace: addbe994-b6ee-4b87-bde0-76f34d2681bd
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置