小编Sri*_*ivi的帖子

如何使用spring webflux在功能性反应Java中编写具有多个if else的复杂代码

我是 RXjava 函数式编程的新手。我正在编写一个具有多种条件的 post 端点:

  1. 当发布端点被产品击中时
  2. 如果登录用户的购物车在 DB 中不存在,则创建一个新购物车
  3. 如果购物车已存在于沙发底座中,则提取该记录并检查产品 JSON 是否给定的 productid 已存在于产品 JSON 中。
  4. 如果它在产品 JSON 中不可用,则必须创建新产品
  5. 应使用新创建的 productId 更新购物车
  6. 如果它存在于产品 JSON 中,则获取产品记录并验证数量。
  7. 如果数量相同,则什么都不做
  8. 否则,更新记录。

我面临着在函数式编程中编写这些 if else 条件的挑战。尝试过switchifEmpty但无法在其中编写代码。

这是一个示例代码。

public Mono<Product> createProduct(final Tuple2<String, productdto> tuple2) {
    final Product productdto = tuple2.getT2();
    return Mono.just(tuple2.getT1())
        .map(cartRepository::findById)
        .defaultIfEmpty(cartRepository.save(
            cart.builder()
                .id(tuple2.getT1())
                .build()))
        .flatMap(cartres -> cartres)
        .flatMap(cartres -> {
             final Product product = Product.builder()
                 .id(1234)
                 .productId(productDTO.getProductId())
                 .productName(productDTO.getProductName())
                 .build();
             return productRepository.save(product)
                 .map(saveCart -> cart.builder()
                     .id(cartres.getId()).build())
                 .flatMap(cartRepository::save);
        });
    }).then(Mono.just(productDto));
}
Run Code Online (Sandbox Code Playgroud)

java spring functional-programming reactive spring-webflux

6
推荐指数
1
解决办法
1218
查看次数