refactor(mall): 重构订单确认和删除方法的验证逻辑
- 使用 ValidateEntityUtils 工具类统一处理实体验证逻辑
- 提高代码复用性,减少重复代码
- 增加 ensureNotEqual 方法用于验证两个值不相等
2 files modified
38 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 18 ●●●● patch | view | raw | blame | history
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));
        }
    }
}
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);
    }