From 848f9d960647733f3fff6076f6c5eb1f85f0539c Mon Sep 17 00:00:00 2001 From: dzq Date: Mon, 9 Jun 2025 17:38:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=95=86=E5=93=81):=20=E6=B7=BB=E5=8A=A0b?= =?UTF-8?q?elongType=E5=AD=97=E6=AE=B5=E5=B9=B6=E4=BC=98=E5=8C=96=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在SearchGoodsWithCabinetDO中添加belongType字段以支持商品分类 优化ReturnApprovalApplicationService中的审批流程,添加订单商品校验和状态更新 简化ShopGoodsMapper中的SQL查询语句 重构OrderApplicationService中的submitAssetApproval方法,使用完整命令对象 --- .../approval/ReturnApprovalApplicationService.java | 13 +++++++++++++ .../shop/goods/db/SearchGoodsWithCabinetDO.java | 1 + .../domain/shop/goods/db/ShopGoodsMapper.java | 8 ++------ .../domain/shop/order/OrderApplicationService.java | 14 +++++++------- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java index 3965f59..5c14e86 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java @@ -1,5 +1,6 @@ package com.agileboot.domain.shop.approval; +import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONUtil; import com.agileboot.common.constant.PayApiConstants; import com.agileboot.common.constant.WeixinConstants; @@ -247,6 +248,10 @@ public class ReturnApprovalApplicationService { // 获取关联的订单商品列表 List shopOrderGoodsList = shopOrderGoodsService.selectOrderGoodsByApprovalId(model.getApprovalId()); + if (shopOrderGoodsList == null || shopOrderGoodsList.isEmpty()) { + throw new RuntimeException("未找到关联的订单商品"); + } + // 设置审批人信息 if (StringUtils.isNotBlank(command.getAuditName())) { model.setAuditName(command.getAuditName()); @@ -311,6 +316,14 @@ public class ReturnApprovalApplicationService { // 批量更新格口库存 cabinetCellModelList.forEach(CabinetCellModel::updateById); + + + OrderModel orderModel = orderModelFactory.loadById(shopOrderGoodsList.get(0).getOrderId()); + orderModel.setStatus(2); + orderModel.setPayStatus(2); + orderModel.setPayTime(new Date()); + orderModel.setIsDeductStock(1); + orderModel.updateById(); } /** diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/SearchGoodsWithCabinetDO.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/SearchGoodsWithCabinetDO.java index 91a3dc6..403ed38 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/SearchGoodsWithCabinetDO.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/SearchGoodsWithCabinetDO.java @@ -22,6 +22,7 @@ public class SearchGoodsWithCabinetDO extends BaseEntity { * 查询商品及其关联的柜机格口信息 * @return 商品列表 */ - @Select("SELECT g.goods_id, g.goods_name, g.category_id, g.price, " + - "g.status, g.cover_img, g.goods_detail, g.usage_instruction, " + - "g.creator_id, g.create_time, g.updater_id, g.update_time, g.remark, g.deleted, " + + @Select("SELECT g.*, " + "sc.cabinet_id, sc.cabinet_name, cc.stock, cc.cell_id " + "FROM shop_goods g " + "LEFT JOIN cabinet_cell cc ON g.goods_id = cc.goods_id " + @@ -74,9 +72,7 @@ public interface ShopGoodsMapper extends BaseMapper { "WHERE g.deleted = 0 AND g.belong_type = 0 AND sc.deleted = 0 AND cc.deleted = 0 AND cc.goods_id IS NOT NULL ") List getGoodsWithCabinetList(); - @Select("SELECT g.goods_id, g.goods_name, g.category_id, g.price, " + - "g.status, g.cover_img, g.goods_detail, g.usage_instruction, " + - "g.creator_id, g.create_time, g.updater_id, g.update_time, g.remark, g.deleted, " + + @Select("SELECT g.*, " + "sc.cabinet_id, sc.cabinet_name, sc.shop_id, cc.stock, cc.cell_id " + "FROM shop_goods g " + "LEFT JOIN cabinet_cell cc ON g.goods_id = cc.goods_id " + diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java index 8a7ecbd..f2efb1e 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java @@ -213,22 +213,22 @@ public class OrderApplicationService { "balance-" + orderModel.getOrderId(), DateUtil.formatDateTime(new Date())); return new CreateOrderResult(orderModel.getOrderId(), orderModel.getTotalAmount(), null, qyUser.getBalance()); } else if (Objects.equals(command.getPaymentType(), "approval")) { - submitAssetApproval(orderModel, goodsList, command.getCorpid(), command.getName()); + submitAssetApproval(orderModel, goodsList, command); return new CreateOrderResult(orderModel.getOrderId(), orderModel.getTotalAmount(), null, BigDecimal.valueOf(0)); }else { throw new ApiException(ErrorCode.Client.COMMON_REQUEST_PARAMETERS_INVALID, "无效的支付类型"); } } - private void submitAssetApproval(OrderModel orderModel, List orderGoodsList, String corpid, String name) { + private void submitAssetApproval(OrderModel orderModel, List orderGoodsList, SubmitOrderCommand submitOrderCommand) { ShopOrderGoodsEntity firstOrderGoods = orderGoodsList.get(0); // 设置商品价格并初始化审批状态 AddReturnApprovalCommand command = new AddReturnApprovalCommand(); command.initBaseEntity(); command.setGoodsId(firstOrderGoods.getGoodsId()); command.setOrderId(orderModel.getOrderId()); - command.setReturnImages(command.getReturnImages()); - command.setReturnRemark(command.getReturnRemark()); + command.setApplyRemark(submitOrderCommand.getApplyRemark()); + command.setApprovalType(1); command.setStatus(1); command.setCreatorId(0L); command.setCreateTime(new Date()); @@ -259,7 +259,7 @@ public class OrderApplicationService { .findFirst().orElse(null); QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid(appid, authCorpInfo.getCorpid()); // 获取用户ID - List adminUserIds = qyUserService.selectAdminUserIds(corpid); + List adminUserIds = qyUserService.selectAdminUserIds(submitOrderCommand.getCorpid()); String toUser = String.join("|", adminUserIds); String toparty = ""; String totag = ""; @@ -268,9 +268,9 @@ public class OrderApplicationService { article.setTitle("耗材领用申请通知"); article.setDescription("领用商品:" + firstOrderGoods.getGoodsName()); if (orderGoodsList.size() > 1) { - article.setDescription(name + " 申请领用" + firstOrderGoods.getGoodsName() + "等" + orderGoodsList.size() + "件商品"); + article.setDescription(submitOrderCommand.getName() + " 申请领用" + firstOrderGoods.getGoodsName() + "等" + orderGoodsList.size() + "件商品"); } else { - article.setDescription(name + " 申请领用" + firstOrderGoods.getGoodsName()); + article.setDescription(submitOrderCommand.getName() + " 申请领用" + firstOrderGoods.getGoodsName()); } article.setPicurl(firstOrderGoods.getCoverImg()); article.setUrl("http://wxshop.ab98.cn/shop-api/api/shop/qy/wechatAuth");