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