From 45c8db9f7f9b05480d5234177e6743fd0c8a1e40 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 22 Jan 2025 18:02:09 +0800 Subject: [PATCH] refactor(mall): 重构订单确认和删除方法的验证逻辑 - 使用 ValidateEntityUtils 工具类统一处理实体验证逻辑 - 提高代码复用性,减少重复代码 - 增加 ensureNotEqual 方法用于验证两个值不相等 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 18 +++++------------- src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java b/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java index c766630..4833a8e 100644 --- a/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java +++ b/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java @@ -252,4 +252,24 @@ } + /** + * 确保两个参数不相等,如果相等则抛出异常 + * + * @param value1 第一个参数 + * @param value2 第二个参数 + * @param errMsg 当两个参数相等时抛出的异常消息格式字符串 + * @throws FebsException 如果两个参数相等 + */ + public static <T> void ensureNotEqual( + T value1, + T value2, + String errMsg) { + // 使用 Objects.equals 处理 null 值,避免显式 null 检查 + if (Objects.equals(value1, value2)) { + // 延迟字符串格式化,只在需要抛出异常时进行 + throw new FebsException(StrUtil.format(errMsg, value1, value2)); + } + } + + } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index c346f21..1124cd7 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -662,15 +662,10 @@ @Transactional(rollbackFor = Exception.class) public void confirmOrder(Long id) { MallMember member = LoginUserUtil.getLoginUser(); - MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); - if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { - throw new FebsException("订单不存在"); - } - if (orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) { - throw new FebsException("该状态不能确认收货"); - } - + MallOrderInfo orderInfo = ValidateEntityUtils.ensureColumnReturnEntity(id,MallOrderInfo::getId,this.baseMapper::selectOne,"订单不存在"); + ValidateEntityUtils.ensureEqual(member.getId(), orderInfo.getMemberId(), "订单数据异常"); + ValidateEntityUtils.ensureEqual(orderInfo.getStatus(), OrderStatusEnum.WAIT_FINISH.getValue(), "该状态不能确认收货"); // if (orderInfo.getDeliveryState() != OrderDeliveryStateEnum.DELIVERY_FINISH.getValue()) { // throw new FebsException("还未送至自提点"); // } @@ -720,11 +715,8 @@ @Override public void delOrder(Long id) { MallMember member = LoginUserUtil.getLoginUser(); - MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); - if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { - throw new FebsException("订单不存在"); - } - + MallOrderInfo orderInfo = ValidateEntityUtils.ensureColumnReturnEntity(id,MallOrderInfo::getId,this.baseMapper::selectOne,"订单不存在"); + ValidateEntityUtils.ensureNotEqual(orderInfo.getDelFlag(),AppContants.DEL_FLAG_Y,"订单已删除"); orderInfo.setDelFlag(AppContants.DEL_FLAG_Y); this.baseMapper.updateById(orderInfo); } -- Gitblit v1.9.1