From d7f01edd56f2f8a822ceffa9240fa22e4763d7e4 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 22 Jan 2025 15:42:40 +0800
Subject: [PATCH] refactor(mall): 重构订单发货相关代码
---
src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 105 insertions(+), 2 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 1501a44..cb347fb 100644
--- a/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java
+++ b/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java
@@ -5,12 +5,116 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Objects;
/**
* 实体验证工具类
*/
public class ValidateEntityUtils {
+
+
+ /**
+ * 确保指定列的有效性,并返回相应的实体对象
+ * 此方法用于验证数据库中某列的值是否存在,并返回包含该值的实体对象
+ * 如果指定的值不存在或为null,将抛出异常
+ *
+ * @param valueToCheck 需要验证的值
+ * @param columnExtractor 列值提取器,用于指定需要验证的列
+ * @param queryWrapperExtractor 查询包装器提取器,用于执行数据库查询
+ * @param errMsg 错误消息格式字符串
+ * @param <T> 实体类类型
+ * @param <R> 列值类型
+ * @param <V> 需要验证的值的类型
+ * @return 返回包含指定列值的实体对象
+ * @throws IllegalArgumentException 如果需要验证的值为null
+ * @throws FebsException 如果查询结果为空或列值为null,或查询过程中发生异常
+ */
+ public static <T, R, V> T ensureColumnReturnEntity(
+ V valueToCheck,
+ SFunction<T, R> columnExtractor,
+ SFunction<LambdaQueryWrapper<T>, T> queryWrapperExtractor,
+ String errMsg) {
+ // 检查需要验证的值是否为null
+ if (valueToCheck == null) {
+ throw new IllegalArgumentException("The value to check cannot be null while ensureColumnReturnEntity column");
+ }
+ T entity = null;
+ try {
+ // 创建LambdaQueryWrapper并配置查询条件
+ LambdaQueryWrapper<T> wrapper = new LambdaQueryWrapper<>();
+ wrapper.select(columnExtractor)
+ .eq(columnExtractor, valueToCheck);
+
+ // 执行查询并获取结果实体
+ entity = queryWrapperExtractor.apply(wrapper);
+ } catch (Exception e) {
+ // 记录异常日志
+ throw new FebsException(StrUtil.format("An error occurred while ensureColumnReturnEntity column: {}", valueToCheck));
+ }
+ // 如果查询结果为空,则抛出异常
+ if (entity == null) {
+ throw new FebsException(StrUtil.format(errMsg, valueToCheck));
+ }
+
+ // 提取查询结果中的列值
+ R columnValue = columnExtractor.apply(entity);
+ // 如果列值为null,则抛出异常
+ if (columnValue == null) {
+ throw new FebsException(StrUtil.format(errMsg, valueToCheck));
+ }
+
+ // 返回查询到的实体类对象
+ return entity;
+ }
+
+ /**
+ * 确保指定列的有效性,并返回相应的实体对象列表
+ * 此方法用于验证数据库中某列的值是否存在,并返回包含该值的实体对象列表
+ * 如果指定的值不存在或为null,将抛出异常
+ *
+ * @param valueToCheck 需要验证的值
+ * @param columnExtractor 列值提取器,用于指定需要验证的列
+ * @param queryWrapperExtractor 查询包装器提取器,用于执行数据库查询
+ * @param errMsg 错误消息格式字符串
+ * @param <T> 实体类类型
+ * @param <R> 列值类型
+ * @param <V> 需要验证的值的类型
+ * @return 返回包含指定列值的实体对象列表
+ * @throws IllegalArgumentException 如果需要验证的值为null
+ * @throws FebsException 如果查询结果为空或列值为null,或查询过程中发生异常
+ */
+ public static <T, R, V> List<T> ensureColumnReturnEntityList(
+ V valueToCheck,
+ SFunction<T, R> columnExtractor,
+ SFunction<LambdaQueryWrapper<T>, List<T>> queryWrapperExtractor,
+ String errMsg) {
+ // 检查需要验证的值是否为null
+ if (valueToCheck == null) {
+ throw new IllegalArgumentException("The value to check cannot be null while ensureColumnReturnEntityList column");
+ }
+ List<T> entities = new ArrayList<>();
+ try {
+ // 创建LambdaQueryWrapper并配置查询条件
+ LambdaQueryWrapper<T> wrapper = new LambdaQueryWrapper<>();
+ wrapper.select(columnExtractor)
+ .eq(columnExtractor, valueToCheck);
+
+ // 执行查询并获取结果实体列表
+ entities = queryWrapperExtractor.apply(wrapper);
+ } catch (Exception e) {
+ // 记录异常日志
+ throw new FebsException(StrUtil.format("An error occurred while ensureColumnReturnEntityList column: {}", valueToCheck));
+ }
+ // 如果查询结果为空,则抛出异常
+ if (entities == null || entities.isEmpty()) {
+ throw new FebsException(StrUtil.format(errMsg, valueToCheck));
+ }
+
+ // 返回查询到的实体类对象列表
+ return entities;
+ }
/**
* 确保指定列的值在数据库中是存在的,
@@ -100,8 +204,7 @@
} catch (Exception e) {
// 记录异常日志
- // 如果在检查过程中发生异常,抛出FebsException异常
- throw new FebsException(StrUtil.format("An error occurred while ensuring unique column: {}", valueToCheck));
+ throw new FebsException(StrUtil.format("An error occurred while ensureUnique column: {}", valueToCheck));
}
// 如果结果数量大于0,说明值已存在,抛出FebsException异常
--
Gitblit v1.9.1