From d451a93a4e30b4d7d311163639b79309852737b8 Mon Sep 17 00:00:00 2001 From: dzq Date: Sat, 7 Jun 2025 10:39:47 +0800 Subject: [PATCH] =?UTF-8?q?refactor(asset):=20=E9=87=8D=E6=9E=84=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E5=AE=A1=E6=89=B9=E6=B5=81=E7=A8=8B=EF=BC=8C=E5=88=86?= =?UTF-8?q?=E7=A6=BB=E5=AE=A1=E6=89=B9=E5=95=86=E5=93=81=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将审批商品信息从审批流程中分离出来,使用单独的模型和表进行存储 更新测试数据以匹配新的商品ID和名称 --- .../controller/AssetApiControllerTest.java | 9 +++- .../domain/asset/AssetApplicationService.java | 44 +++++++++++++------ 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/agileboot-api/src/test/java/com/agileboot/api/controller/AssetApiControllerTest.java b/agileboot-api/src/test/java/com/agileboot/api/controller/AssetApiControllerTest.java index 98a9cc4..ba4351d 100644 --- a/agileboot-api/src/test/java/com/agileboot/api/controller/AssetApiControllerTest.java +++ b/agileboot-api/src/test/java/com/agileboot/api/controller/AssetApiControllerTest.java @@ -22,8 +22,8 @@ public class AssetApiControllerTest { public void testPushExternalGoods() throws UnsupportedEncodingException { // 1.构建测试商品数据 PostAssetGoodsCommand.GoodsInfo goodsInfo = new PostAssetGoodsCommand.GoodsInfo(); - goodsInfo.setExternalGoodsId(1003L); - goodsInfo.setGoodsName("测试笔记本电脑3"); + goodsInfo.setExternalGoodsId(1004L); + goodsInfo.setGoodsName("测试笔记本电脑4"); goodsInfo.setPrice(new BigDecimal("5999.00")); goodsInfo.setStock(10); goodsInfo.setAutoApproval(0); @@ -83,6 +83,11 @@ public class AssetApiControllerTest { goodsInfo.setApplyQuantity(2); approvalCommand.getGoodsInfoList().add(goodsInfo); + goodsInfo = new PostAssetApprovalCommand.ApprovalGoodsInfo(); + goodsInfo.setExternalGoodsId(1004L); + goodsInfo.setApplyQuantity(5); + approvalCommand.getGoodsInfoList().add(goodsInfo); + // 2.构造请求体 Map params = new HashMap<>(); params.put("timestamp", String.valueOf(System.currentTimeMillis())); diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java index ea11366..893b81c 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java @@ -13,6 +13,9 @@ import com.agileboot.domain.qywx.user.db.QyUserService; import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand; import com.agileboot.domain.shop.approval.model.ReturnApprovalModel; import com.agileboot.domain.shop.approval.model.ReturnApprovalModelFactory; +import com.agileboot.domain.shop.approvalGoods.command.AddApprovalGoodsCommand; +import com.agileboot.domain.shop.approvalGoods.model.ApprovalGoodsModel; +import com.agileboot.domain.shop.approvalGoods.model.ApprovalGoodsModelFactory; import com.agileboot.domain.shop.goods.db.ShopGoodsEntity; import com.agileboot.domain.shop.goods.db.ShopGoodsService; import com.agileboot.domain.shop.goods.model.GoodsModel; @@ -36,6 +39,7 @@ public class AssetApplicationService { private final AuthCorpInfoApplicationService authCorpInfoApplicationService; private final AccessTokenApplicationService accessTokenApplicationService; private final QyUserService qyUserService; + private final ApprovalGoodsModelFactory approvalGoodsModelFactory; public void pushExternalGoods(PostAssetGoodsCommand postAssetGoodsCommand) { if (postAssetGoodsCommand == null || postAssetGoodsCommand.getGoodsInfoList() == null || postAssetGoodsCommand.getGoodsInfoList().isEmpty()) { @@ -105,9 +109,19 @@ public class AssetApplicationService { throw new IllegalArgumentException("Corpid cannot be null"); } + + AddReturnApprovalCommand returnApprovalCommand = new AddReturnApprovalCommand(); + BeanUtils.copyProperties(postAssetApprovalCommand, returnApprovalCommand); + if (returnApprovalCommand.getApprovalType() == null) { + returnApprovalCommand.setApprovalType(1); + } + + ReturnApprovalModel returnApprovalModel = returnApprovalModelFactory.create(); + returnApprovalModel.initBaseEntity(); + returnApprovalModel.loadAddCommand(returnApprovalCommand); + + List approvalGoodsModels = new ArrayList<>(); for (PostAssetApprovalCommand.ApprovalGoodsInfo command : postAssetApprovalCommand.getGoodsInfoList()) { - - if (command.getApplyQuantity() == null || command.getApplyQuantity() <= 0) { throw new IllegalArgumentException("ApplyQuantity must be greater than 0"); } @@ -120,21 +134,23 @@ public class AssetApplicationService { throw new IllegalArgumentException("Insufficient stock"); } - AddReturnApprovalCommand returnApprovalCommand = new AddReturnApprovalCommand(); - BeanUtils.copyProperties(postAssetApprovalCommand, returnApprovalCommand); - BeanUtils.copyProperties(command, returnApprovalCommand); - returnApprovalCommand.setGoodsId(shopGoodsEntity.getGoodsId()); - returnApprovalCommand.setGoodsPrice(shopGoodsEntity.getPrice()); - if (returnApprovalCommand.getApprovalType() == null) { - returnApprovalCommand.setApprovalType(1); - } - ReturnApprovalModel returnApprovalModel = returnApprovalModelFactory.create(); - returnApprovalModel.initBaseEntity(); - returnApprovalModel.loadAddCommand(returnApprovalCommand); - returnApprovalCommand.insert(); + AddApprovalGoodsCommand approvalGoodsCommand = new AddApprovalGoodsCommand(); + approvalGoodsCommand.initBaseEntity(); + BeanUtils.copyProperties(postAssetApprovalCommand, approvalGoodsCommand); + BeanUtils.copyProperties(command, approvalGoodsCommand); + BeanUtils.copyProperties(shopGoodsEntity, approvalGoodsCommand); + + ApprovalGoodsModel approvalGoodsModel = approvalGoodsModelFactory.create(); + approvalGoodsModel.loadAddCommand(approvalGoodsCommand); + approvalGoodsModels.add(approvalGoodsModel); } + returnApprovalModel.insert(); + approvalGoodsModels.stream() + .peek(approvalGoodsModel -> approvalGoodsModel.setApprovalId(returnApprovalModel.getApprovalId())) + .forEach(ApprovalGoodsModel::insert); + ShopGoodsEntity firstGoods = shopGoodsService.getGoodsByExternalGoodsId(postAssetApprovalCommand.getCorpid(), postAssetApprovalCommand.getGoodsInfoList().get(0).getExternalGoodsId()); // 发送审核消息 try {