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 {