refactor(util): 重构工具类代码以改进资源管理和验证逻辑

This commit is contained in:
2026-01-09 11:57:06 +08:00
parent 42b9adc5bd
commit 4c7d250500
8 changed files with 48 additions and 31 deletions
@@ -110,10 +110,12 @@ public class KitRedisHelper {
ScanOptions options = ScanOptions.scanOptions().match(pattern).build(); ScanOptions options = ScanOptions.scanOptions().match(pattern).build();
RedisConnectionFactory factory = redisTemplate.getConnectionFactory(); RedisConnectionFactory factory = redisTemplate.getConnectionFactory();
RedisConnection rc = Objects.requireNonNull(factory).getConnection(); RedisConnection rc = Objects.requireNonNull(factory).getConnection();
Cursor<byte[]> cursor = rc.scan(options); List<String> result;
List<String> result = new ArrayList<>(); try (Cursor<byte[]> cursor = rc.scan(options)) {
while (cursor.hasNext()) { result = new ArrayList<>();
result.add(new String(cursor.next())); while (cursor.hasNext()) {
result.add(new String(cursor.next()));
}
} }
try { try {
RedisConnectionUtils.releaseConnection(rc, factory); RedisConnectionUtils.releaseConnection(rc, factory);
@@ -15,6 +15,7 @@
*/ */
package cn.odboy.util; package cn.odboy.util;
import cn.hutool.core.collection.CollUtil;
import cn.odboy.base.KitSelectOptionVo; import cn.odboy.base.KitSelectOptionVo;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@@ -38,7 +39,7 @@ import lombok.experimental.UtilityClass;
* @date 2022-11-09 * @date 2022-11-09
*/ */
@UtilityClass @UtilityClass
public final class KitCollUtil extends cn.hutool.core.collection.CollUtil { public final class KitCollUtil extends CollUtil {
private static <T, K> Predicate<T> distinctPredicate(Function<? super T, ? extends K> keyMapper) { private static <T, K> Predicate<T> distinctPredicate(Function<? super T, ? extends K> keyMapper) {
Map<Object, Boolean> map = new HashMap<>(3); Map<Object, Boolean> map = new HashMap<>(3);
@@ -192,6 +193,7 @@ public final class KitCollUtil extends cn.hutool.core.collection.CollUtil {
* @return / * @return /
*/ */
public static BigDecimal streamBigDecimalAvg(List<BigDecimal> data) { public static BigDecimal streamBigDecimalAvg(List<BigDecimal> data) {
KitValidUtil.notEmpty(data, "data");
return data.stream().filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add) return data.stream().filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
.divide(BigDecimal.valueOf(data.size()), 6, RoundingMode.FLOOR); .divide(BigDecimal.valueOf(data.size()), 6, RoundingMode.FLOOR);
} }
@@ -81,10 +81,6 @@ public final class KitFileUtil extends FileUtil {
* 定义KB的计算常量 * 定义KB的计算常量
*/ */
private static final int KB = 1024; private static final int KB = 1024;
/**
* 格式化小数
*/
private static final DecimalFormat DF = new DecimalFormat("0.00");
/** /**
* MultipartFile转File * MultipartFile转File
@@ -113,13 +109,13 @@ public final class KitFileUtil extends FileUtil {
String resultSize; String resultSize;
if (size / GB >= 1) { if (size / GB >= 1) {
//如果当前Byte的值大于等于1GB //如果当前Byte的值大于等于1GB
resultSize = DF.format(size / (float) GB) + " GB"; resultSize = new DecimalFormat("0.00").format(size / (float) GB) + " GB";
} else if (size / MB >= 1) { } else if (size / MB >= 1) {
//如果当前Byte的值大于等于1MB //如果当前Byte的值大于等于1MB
resultSize = DF.format(size / (float) MB) + " MB"; resultSize = new DecimalFormat("0.00").format(size / (float) MB) + " MB";
} else if (size / KB >= 1) { } else if (size / KB >= 1) {
//如果当前Byte的值大于等于1KB //如果当前Byte的值大于等于1KB
resultSize = DF.format(size / (float) KB) + " KB"; resultSize = new DecimalFormat("0.00").format(size / (float) KB) + " KB";
} else { } else {
resultSize = size + " B"; resultSize = size + " B";
} }
@@ -15,16 +15,18 @@
*/ */
package cn.odboy.util; package cn.odboy.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.validation.ConstraintViolation; import javax.validation.ConstraintViolation;
import jakarta.validation.Validation; import javax.validation.Validation;
import jakarta.validation.Validator; import javax.validation.Validator;
import jakarta.validation.ValidatorFactory; import javax.validation.ValidatorFactory;
import jakarta.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import jakarta.validation.groups.Default; import javax.validation.groups.Default;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
/** /**
@@ -65,7 +67,7 @@ public final class KitValidUtil {
} }
public static void notNull(Object value, @NotNull String name, @NotNull String code) { public static void notNull(Object value, @NotNull String name, @NotNull String code) {
if (value != null) { if (value == null) {
throw new BadRequestException(String.format("参数 %s(%s) 必填", name, code)); throw new BadRequestException(String.format("参数 %s(%s) 必填", name, code));
} }
} }
@@ -81,4 +83,10 @@ public final class KitValidUtil {
throw new BadRequestException(String.format("参数 %s(%s) 必填", name, code)); throw new BadRequestException(String.format("参数 %s(%s) 必填", name, code));
} }
} }
public static void notEmpty(List<?> data, @NotNull String code) {
if (CollUtil.isEmpty(data)) {
throw new BadRequestException(String.format("参数 %s 必填", code));
}
}
} }
@@ -110,10 +110,12 @@ public class KitRedisHelper {
ScanOptions options = ScanOptions.scanOptions().match(pattern).build(); ScanOptions options = ScanOptions.scanOptions().match(pattern).build();
RedisConnectionFactory factory = redisTemplate.getConnectionFactory(); RedisConnectionFactory factory = redisTemplate.getConnectionFactory();
RedisConnection rc = Objects.requireNonNull(factory).getConnection(); RedisConnection rc = Objects.requireNonNull(factory).getConnection();
Cursor<byte[]> cursor = rc.scan(options); List<String> result;
List<String> result = new ArrayList<>(); try (Cursor<byte[]> cursor = rc.scan(options)) {
while (cursor.hasNext()) { result = new ArrayList<>();
result.add(new String(cursor.next())); while (cursor.hasNext()) {
result.add(new String(cursor.next()));
}
} }
try { try {
RedisConnectionUtils.releaseConnection(rc, factory); RedisConnectionUtils.releaseConnection(rc, factory);
@@ -15,7 +15,9 @@
*/ */
package cn.odboy.util; package cn.odboy.util;
import cn.hutool.core.collection.CollUtil;
import cn.odboy.base.KitSelectOptionVo; import cn.odboy.base.KitSelectOptionVo;
import cn.odboy.framework.exception.BadRequestException;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -192,6 +194,7 @@ public final class KitCollUtil extends cn.hutool.core.collection.CollUtil {
* @return / * @return /
*/ */
public static BigDecimal streamBigDecimalAvg(List<BigDecimal> data) { public static BigDecimal streamBigDecimalAvg(List<BigDecimal> data) {
KitValidUtil.notEmpty(data, "data");
return data.stream().filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add) return data.stream().filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
.divide(BigDecimal.valueOf(data.size()), 6, RoundingMode.FLOOR); .divide(BigDecimal.valueOf(data.size()), 6, RoundingMode.FLOOR);
} }
@@ -81,10 +81,6 @@ public final class KitFileUtil extends FileUtil {
* 定义KB的计算常量 * 定义KB的计算常量
*/ */
private static final int KB = 1024; private static final int KB = 1024;
/**
* 格式化小数
*/
private static final DecimalFormat DF = new DecimalFormat("0.00");
/** /**
* MultipartFile转File * MultipartFile转File
@@ -113,13 +109,13 @@ public final class KitFileUtil extends FileUtil {
String resultSize; String resultSize;
if (size / GB >= 1) { if (size / GB >= 1) {
//如果当前Byte的值大于等于1GB //如果当前Byte的值大于等于1GB
resultSize = DF.format(size / (float) GB) + " GB"; resultSize = new DecimalFormat("0.00").format(size / (float) GB) + " GB";
} else if (size / MB >= 1) { } else if (size / MB >= 1) {
//如果当前Byte的值大于等于1MB //如果当前Byte的值大于等于1MB
resultSize = DF.format(size / (float) MB) + " MB"; resultSize = new DecimalFormat("0.00").format(size / (float) MB) + " MB";
} else if (size / KB >= 1) { } else if (size / KB >= 1) {
//如果当前Byte的值大于等于1KB //如果当前Byte的值大于等于1KB
resultSize = DF.format(size / (float) KB) + " KB"; resultSize = new DecimalFormat("0.00").format(size / (float) KB) + " KB";
} else { } else {
resultSize = size + " B"; resultSize = size + " B";
} }
@@ -15,8 +15,10 @@
*/ */
package cn.odboy.util; package cn.odboy.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolation;
@@ -65,7 +67,7 @@ public final class KitValidUtil {
} }
public static void notNull(Object value, @NotNull String name, @NotNull String code) { public static void notNull(Object value, @NotNull String name, @NotNull String code) {
if (value != null) { if (value == null) {
throw new BadRequestException(String.format("参数 %s(%s) 必填", name, code)); throw new BadRequestException(String.format("参数 %s(%s) 必填", name, code));
} }
} }
@@ -81,4 +83,10 @@ public final class KitValidUtil {
throw new BadRequestException(String.format("参数 %s(%s) 必填", name, code)); throw new BadRequestException(String.format("参数 %s(%s) 必填", name, code));
} }
} }
public static void notEmpty(List<?> data, @NotNull String code) {
if (CollUtil.isEmpty(data)) {
throw new BadRequestException(String.format("参数 %s 必填", code));
}
}
} }