From a1245c1ed23e6f576d39e8828ad6b98d7cbc0df2 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 23 Jan 2025 15:33:25 +0800
Subject: [PATCH] refactor(unisoftiot): 删除无用的 API 相关代码- 移除了 Account、Device、Product 等实体类 - 删除了对应的 Mapper 接口和服务类 - 移除了 API 请求相关的工具类和枚举类
---
src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java | 97 +++++++++++++++++++++++++++++++++++-------------
1 files changed, 70 insertions(+), 27 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 cb347fb..83a8b90 100644
--- a/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java
+++ b/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java
@@ -3,6 +3,7 @@
import cc.mrbird.febs.common.exception.FebsException;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import java.util.ArrayList;
@@ -14,16 +15,17 @@
*/
public class ValidateEntityUtils {
-
/**
* 确保指定列的有效性,并返回相应的实体对象
- * 此方法用于验证数据库中某列的值是否存在,并返回包含该值的实体对象
- * 如果指定的值不存在或为null,将抛出异常
+ * selectOne方法
+ * 此方法用于验证数据库中某列的值是否存在,并返回包含该值的实体对象
+ * 如果指定的值不存在或为null,将抛出异常
*
* @param valueToCheck 需要验证的值
* @param columnExtractor 列值提取器,用于指定需要验证的列
* @param queryWrapperExtractor 查询包装器提取器,用于执行数据库查询
* @param errMsg 错误消息格式字符串
+ * @param columnExtractors 可变参数(varargs)查询字段,可选,如果没有就是查询全部
* @param <T> 实体类类型
* @param <R> 列值类型
* @param <V> 需要验证的值的类型
@@ -35,34 +37,48 @@
V valueToCheck,
SFunction<T, R> columnExtractor,
SFunction<LambdaQueryWrapper<T>, T> queryWrapperExtractor,
- String errMsg) {
- // 检查需要验证的值是否为null
+ String errMsg,
+ SFunction<T, R>... columnExtractors) {
+
+ // 检查输入参数是否为null
if (valueToCheck == null) {
throw new IllegalArgumentException("The value to check cannot be null while ensureColumnReturnEntity column");
}
+ if (columnExtractor == null || queryWrapperExtractor == null) {
+ throw new IllegalArgumentException("Column extractor and query wrapper extractor cannot be null while ensureColumnReturnEntity column");
+ }
+
T entity = null;
try {
// 创建LambdaQueryWrapper并配置查询条件
- LambdaQueryWrapper<T> wrapper = new LambdaQueryWrapper<>();
- wrapper.select(columnExtractor)
- .eq(columnExtractor, valueToCheck);
+ LambdaQueryWrapper<T> wrapper = Wrappers.lambdaQuery();
+ if (columnExtractors != null && columnExtractors.length > 0) {
+ wrapper.select(columnExtractors);
+ }
+ wrapper.eq(columnExtractor, valueToCheck)
+ .last("limit 1");
// 执行查询并获取结果实体
entity = queryWrapperExtractor.apply(wrapper);
+
+ // 如果查询结果为空,则抛出异常
+ 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));
+ }
+
+ } catch (FebsException e) {
+ // 记录异常日志
+ throw e;
} 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));
+ throw new FebsException(StrUtil.format("An error occurred while ensuring column return entity: {}", valueToCheck));
}
// 返回查询到的实体类对象
@@ -71,13 +87,15 @@
/**
* 确保指定列的有效性,并返回相应的实体对象列表
- * 此方法用于验证数据库中某列的值是否存在,并返回包含该值的实体对象列表
- * 如果指定的值不存在或为null,将抛出异常
+ * selectList方法
+ * 此方法用于验证数据库中某列的值是否存在,并返回包含该值的实体对象列表
+ * 如果指定的值不存在或为null,将抛出异常
*
* @param valueToCheck 需要验证的值
* @param columnExtractor 列值提取器,用于指定需要验证的列
* @param queryWrapperExtractor 查询包装器提取器,用于执行数据库查询
* @param errMsg 错误消息格式字符串
+ * @param columnExtractors 可变参数(varargs)查询字段,可选,如果没有就是查询全部
* @param <T> 实体类类型
* @param <R> 列值类型
* @param <V> 需要验证的值的类型
@@ -89,7 +107,8 @@
V valueToCheck,
SFunction<T, R> columnExtractor,
SFunction<LambdaQueryWrapper<T>, List<T>> queryWrapperExtractor,
- String errMsg) {
+ String errMsg,
+ SFunction<T, R>... columnExtractors) {
// 检查需要验证的值是否为null
if (valueToCheck == null) {
throw new IllegalArgumentException("The value to check cannot be null while ensureColumnReturnEntityList column");
@@ -97,9 +116,11 @@
List<T> entities = new ArrayList<>();
try {
// 创建LambdaQueryWrapper并配置查询条件
- LambdaQueryWrapper<T> wrapper = new LambdaQueryWrapper<>();
- wrapper.select(columnExtractor)
- .eq(columnExtractor, valueToCheck);
+ LambdaQueryWrapper<T> wrapper = Wrappers.lambdaQuery();
+ if (columnExtractors != null && columnExtractors.length > 0) {
+ wrapper.select(columnExtractors);
+ }
+ wrapper.eq(columnExtractor, valueToCheck);
// 执行查询并获取结果实体列表
entities = queryWrapperExtractor.apply(wrapper);
@@ -117,7 +138,8 @@
}
/**
- * 确保指定列的值在数据库中是存在的,
+ * 确保指定列的值在数据库中是存在的
+ * selectOne方法
* 该方法通过查询数据库来验证给定的列值是否存在如果不存在,则抛出异常
*
* @param valueToCheck 需要验证的列值
@@ -165,6 +187,7 @@
/**
* 确保指定值在数据库中是唯一的
+ * selectCount方法
* 该方法通过查询数据库来验证给定的列值是否已经存在,如果存在,则抛出异常,以确保数据的唯一性
*
* @param valueToCheck 需要检查的值
@@ -234,4 +257,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));
+ }
+ }
+
+
}
--
Gitblit v1.9.1