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