🏗️ (结构/架构): 重命名响应对象类名并优化工具类

- 将 ResponseVO 重命名为 BasicResponse
- 将 ListResponseVO 重命名为 ListResponse 并添加 totalCount 字段
- 将 ObjectResponseVO 重命名为 ObjectResponse
- 将 SignRequestVO 重命名为 SignRequest
- 将 SignResponseVO 重命名为 SignResponse
- 在 ObjUtil 中添加 parseBigDecimal、compareLength、equals 和 sub 方法
- 优化 ObjUtil 中的字段复制日志记录
- 更新 maven-compiler-plugin 配置源码和目标版本为 16
This commit is contained in:
maxf
2025-12-11 17:47:01 +08:00
parent 2153456157
commit 6ea9870f65
7 changed files with 352 additions and 170 deletions

View File

@@ -11,7 +11,7 @@ import com.yexuejc.base.util.JsonUtil;
* @author ISC * @author ISC
* @date 2023/08/18 * @date 2023/08/18
*/ */
public class ResponseVO implements Serializable { public class BasicResponse implements Serializable {
public enum Codes { public enum Codes {
/** 处理成功 */ SUCCESS("S"), /** 处理成功 */ SUCCESS("S"),
@@ -38,10 +38,10 @@ public class ResponseVO implements Serializable {
/** 业务异常 */ /** 业务异常 */
private String bizMessage; private String bizMessage;
public ResponseVO() { public BasicResponse() {
} }
public ResponseVO(String code, String msg) { public BasicResponse(String code, String msg) {
this.code = code; this.code = code;
this.message = msg; this.message = msg;
} }
@@ -50,7 +50,7 @@ public class ResponseVO implements Serializable {
return code; return code;
} }
public ResponseVO setCode(String code) { public BasicResponse setCode(String code) {
this.code = code; this.code = code;
return this; return this;
} }
@@ -59,7 +59,7 @@ public class ResponseVO implements Serializable {
return message; return message;
} }
public ResponseVO setMessage(String message) { public BasicResponse setMessage(String message) {
this.message = message; this.message = message;
return this; return this;
} }
@@ -68,7 +68,7 @@ public class ResponseVO implements Serializable {
return bizCode; return bizCode;
} }
public ResponseVO setBizCode(String bizCode) { public BasicResponse setBizCode(String bizCode) {
this.bizCode = bizCode; this.bizCode = bizCode;
return this; return this;
} }
@@ -77,7 +77,7 @@ public class ResponseVO implements Serializable {
return bizMessage; return bizMessage;
} }
public ResponseVO setBizMessage(String bizMessage) { public BasicResponse setBizMessage(String bizMessage) {
this.bizMessage = bizMessage; this.bizMessage = bizMessage;
return this; return this;
} }
@@ -87,8 +87,8 @@ public class ResponseVO implements Serializable {
* *
* @return * @return
*/ */
public static ResponseVO success() { public static BasicResponse success() {
return new ResponseVO(Codes.SUCCESS.code, SymbolicConsts.EMPTY); return new BasicResponse(Codes.SUCCESS.code, SymbolicConsts.EMPTY);
} }
/** /**
@@ -97,8 +97,8 @@ public class ResponseVO implements Serializable {
* @param message * @param message
* @return * @return
*/ */
public static ResponseVO success(String message) { public static BasicResponse success(String message) {
return new ResponseVO(Codes.SUCCESS.code, message); return new BasicResponse(Codes.SUCCESS.code, message);
} }
/** /**
@@ -107,8 +107,8 @@ public class ResponseVO implements Serializable {
* @param message * @param message
* @return * @return
*/ */
public static ResponseVO fail(String message) { public static BasicResponse fail(String message) {
return new ResponseVO(Codes.SYSTEM_ERROR.code, message); return new BasicResponse(Codes.SYSTEM_ERROR.code, message);
} }
/** /**
@@ -117,8 +117,8 @@ public class ResponseVO implements Serializable {
* @param errorCode * @param errorCode
* @return * @return
*/ */
public static ResponseVO fail4Code(String errorCode) { public static BasicResponse fail4Code(String errorCode) {
return new ResponseVO(errorCode, SymbolicConsts.EMPTY); return new BasicResponse(errorCode, SymbolicConsts.EMPTY);
} }
@@ -129,8 +129,8 @@ public class ResponseVO implements Serializable {
* @param message * @param message
* @return * @return
*/ */
public static ResponseVO fail(String errorCode, String message) { public static BasicResponse fail(String errorCode, String message) {
return new ResponseVO(errorCode, message); return new BasicResponse(errorCode, message);
} }
@Override @Override

View File

@@ -0,0 +1,123 @@
package com.yexuejc.base.pojo;
import java.util.List;
/**
* API結果が戻りする、集合型
*
* @author ISC
* @date 2023/08/18
*/
public class ListResponse<T> extends BasicResponse {
/** 数据对象 */
private List<T> data;
/** 总件数 */
private Long totalCount;
public ListResponse() {
}
public ListResponse(List<T> data) {
this.data = data;
this.totalCount = data == null ? 0L : (long) data.size();
}
public ListResponse(List<T> data, Long totalCount) {
this.data = data;
this.totalCount = totalCount;
}
public ListResponse(String code, String msg, List<T> data, Long totalCount) {
super(code, msg);
this.data = data;
this.totalCount = totalCount;
}
public static <T> ListResponse<T> of(List<T> pagedList, long count) {
return new ListResponse<>(pagedList, count);
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
public Long getTotalCount() {
return totalCount;
}
public void setTotalCount(Long totalCount) {
this.totalCount = totalCount;
}
/**
* 创建成功结果
*
* @param data
* @param <T>
* @return
*/
public static <T> ListResponse<T> success(List<T> data) {
return new ListResponse<>(data);
}
/**
* 创建失败并设定message默认code
*
* @param message
* @return
*/
public static ListResponse<String> fail(String message) {
ListResponse<String> vo = new ListResponse<>();
vo.setCode(Codes.SYSTEM_ERROR.code).setMessage(message);
return vo;
}
/**
* 创建失败并设定messagecode
*
* @param errorCode
* @param message
* @return
*/
public static ListResponse<String> fail(String errorCode, String message) {
ListResponse<String> vo = new ListResponse<>();
vo.setCode(errorCode).setMessage(message);
return vo;
}
@Override
public ListResponse<T> setCode(String code) {
super.setCode(code);
return this;
}
@Override
public ListResponse<T> setMessage(String message) {
super.setMessage(message);
return this;
}
@Override
public ListResponse<T> setBizCode(String errCode) {
super.setBizCode(errCode);
return this;
}
@Override
public ListResponse<T> setBizMessage(String errCodeDes) {
super.setBizMessage(errCodeDes);
return this;
}
@Override
public String toString() {
return super.toString();
}
}

View File

@@ -1,104 +0,0 @@
package com.yexuejc.base.pojo;
import java.util.List;
import com.yexuejc.base.constant.SymbolicConsts;
/**
* API結果が戻りする、集合型
*
* @author ISC
* @date 2023/08/18
*/
public class ListResponseVO<T> extends ResponseVO {
private List<T> data;
public ListResponseVO() {
super();
}
public ListResponseVO(List<T> data) {
this.data = data;
setMessage(SymbolicConsts.EMPTY);
setCode(Codes.SUCCESS.code);
}
public ListResponseVO(List<T> data, String code, String msg) {
super(code, msg);
this.data = data;
}
public List<T> getData() {
return data;
}
public ListResponseVO<T> setData(List<T> data) {
this.data = data;
return this;
}
/**
* 创建成功结果
* @param data
* @return
* @param <T>
*/
public static <T> ListResponseVO<T> success(List<T> data) {
return new ListResponseVO<>(data);
}
/**
* 创建失败并设定message默认code
* @param message
* @return
*/
public static ListResponseVO<String> fail(String message) {
ListResponseVO<String> vo = new ListResponseVO<>();
vo.setCode(Codes.SYSTEM_ERROR.code).setMessage(message);
return vo;
}
/**
* 创建失败并设定messagecode
* @param errorCode
* @param message
* @return
*/
public static ListResponseVO<String> fail(String errorCode, String message) {
ListResponseVO<String> vo = new ListResponseVO<>();
vo.setCode(errorCode).setMessage(message);
return vo;
}
@Override
public ListResponseVO<T> setCode(String code) {
super.setCode(code);
return this;
}
@Override
public ListResponseVO<T> setMessage(String message) {
super.setMessage(message);
return this;
}
@Override
public ListResponseVO<T> setBizCode(String errCode) {
super.setBizCode(errCode);
return this;
}
@Override
public ListResponseVO<T> setBizMessage(String errCodeDes) {
super.setBizMessage(errCodeDes);
return this;
}
@Override
public String toString() {
return super.toString();
}
}

View File

@@ -9,20 +9,20 @@ import com.yexuejc.base.constant.SymbolicConsts;
* @author ISC * @author ISC
* @date 2023/08/18 * @date 2023/08/18
*/ */
public class ObjectResponseVO<T> extends ResponseVO { public class ObjectResponse<T> extends BasicResponse {
private T data; private T data;
public ObjectResponseVO() { public ObjectResponse() {
} }
public ObjectResponseVO(T data) { public ObjectResponse(T data) {
this.data = data; this.data = data;
setMessage(SymbolicConsts.EMPTY); setMessage(SymbolicConsts.EMPTY);
setCode(Codes.SUCCESS.code); setCode(Codes.SUCCESS.code);
} }
public ObjectResponseVO(T data, String code, String msg) { public ObjectResponse(T data, String code, String msg) {
super(code, msg); super(code, msg);
this.data = data; this.data = data;
} }
@@ -32,7 +32,7 @@ public class ObjectResponseVO<T> extends ResponseVO {
return data; return data;
} }
public ObjectResponseVO<T> setData(T data) { public ObjectResponse<T> setData(T data) {
this.data = data; this.data = data;
return this; return this;
} }
@@ -43,8 +43,8 @@ public class ObjectResponseVO<T> extends ResponseVO {
* @return * @return
* @param <T> * @param <T>
*/ */
public static <T> ObjectResponseVO<T> success(T data) { public static <T> ObjectResponse<T> success(T data) {
return new ObjectResponseVO<>(data); return new ObjectResponse<>(data);
} }
/** /**
@@ -52,8 +52,8 @@ public class ObjectResponseVO<T> extends ResponseVO {
* @param message * @param message
* @return * @return
*/ */
public static ObjectResponseVO<String> fail(String message) { public static ObjectResponse<String> fail(String message) {
ObjectResponseVO<String> vo = new ObjectResponseVO<>(); ObjectResponse<String> vo = new ObjectResponse<>();
vo.setCode(Codes.SYSTEM_ERROR.code).setMessage(message); vo.setCode(Codes.SYSTEM_ERROR.code).setMessage(message);
return vo; return vo;
} }
@@ -64,32 +64,32 @@ public class ObjectResponseVO<T> extends ResponseVO {
* @param message * @param message
* @return * @return
*/ */
public static ObjectResponseVO<String> fail(String errorCode, String message) { public static ObjectResponse<String> fail(String errorCode, String message) {
ObjectResponseVO<String> vo = new ObjectResponseVO<>(); ObjectResponse<String> vo = new ObjectResponse<>();
vo.setCode(errorCode).setMessage(message); vo.setCode(errorCode).setMessage(message);
return vo; return vo;
} }
@Override @Override
public ObjectResponseVO<T> setCode(String code) { public ObjectResponse<T> setCode(String code) {
super.setCode(code); super.setCode(code);
return this; return this;
} }
@Override @Override
public ObjectResponseVO<T> setMessage(String message) { public ObjectResponse<T> setMessage(String message) {
super.setMessage(message); super.setMessage(message);
return this; return this;
} }
@Override @Override
public ObjectResponseVO<T> setBizCode(String bizCode) { public ObjectResponse<T> setBizCode(String bizCode) {
super.setBizCode(bizCode); super.setBizCode(bizCode);
return this; return this;
} }
@Override @Override
public ObjectResponseVO<T> setBizMessage(String bizMessage) { public ObjectResponse<T> setBizMessage(String bizMessage) {
super.setBizMessage(bizMessage); super.setBizMessage(bizMessage);
return this; return this;
} }

View File

@@ -10,7 +10,7 @@ import com.yexuejc.base.util.JsonUtil;
* @author: maxf * @author: maxf
* @date: 2018/5/12 14:52 * @date: 2018/5/12 14:52
*/ */
public class SignRequestVO implements Serializable { public class SignRequest implements Serializable {
private static final long serialVersionUID = 9171765814642105098L; private static final long serialVersionUID = 9171765814642105098L;
/** /**

View File

@@ -6,7 +6,7 @@ package com.yexuejc.base.pojo;
* @author maxiaofeng * @author maxiaofeng
* @date 2025/9/25 17:35 * @date 2025/9/25 17:35
*/ */
public class SignResponseVO<T> extends ObjectResponseVO<T> { public class SignResponse<T> extends ObjectResponse<T> {
/** /**
* 签名 * 签名
*/ */
@@ -16,37 +16,37 @@ public class SignResponseVO<T> extends ObjectResponseVO<T> {
return sign; return sign;
} }
public SignResponseVO<T> setSign(String sign) { public SignResponse<T> setSign(String sign) {
this.sign = sign; this.sign = sign;
return this; return this;
} }
@Override @Override
public SignResponseVO<T> setData(T data) { public SignResponse<T> setData(T data) {
super.setData(data); super.setData(data);
return this; return this;
} }
@Override @Override
public SignResponseVO<T> setMessage(String message) { public SignResponse<T> setMessage(String message) {
super.setMessage(message); super.setMessage(message);
return this; return this;
} }
@Override @Override
public SignResponseVO<T> setCode(String code) { public SignResponse<T> setCode(String code) {
super.setCode(code); super.setCode(code);
return this; return this;
} }
@Override @Override
public SignResponseVO<T> setBizCode(String bizCode) { public SignResponse<T> setBizCode(String bizCode) {
super.setBizCode(bizCode); super.setBizCode(bizCode);
return this; return this;
} }
@Override @Override
public SignResponseVO<T> setBizMessage(String message) { public SignResponse<T> setBizMessage(String message) {
super.setBizMessage(message); super.setBizMessage(message);
return this; return this;
} }

View File

@@ -1,17 +1,32 @@
package com.yexuejc.base.util; package com.yexuejc.base.util;
import com.yexuejc.base.annotation.ToUeProperty; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.*; import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Array;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.yexuejc.base.annotation.ToUeProperty;
import com.yexuejc.base.exception.BaseException;
/** /**
* 对象工具:对类的操作 * 对象工具:对类的操作
* *
@@ -27,6 +42,160 @@ public class ObjUtil {
private ObjUtil() { private ObjUtil() {
} }
/**
* 将对象转换为BigDecimal
*
* @param obj 要转换的对象
* @return BigDecimal
*/
public static BigDecimal parseBigDecimal(Object obj) {
if (StrUtil.isEmpty(obj)) {
return BigDecimal.ZERO;
}
if (obj instanceof BigDecimal) {
return (BigDecimal) obj;
}
return new BigDecimal(obj.toString());
}
/**
* 比较两个对象的长度或大小
*
* @param obj1 第一个对象
* @param obj2 第二个对象
* @return 长度相等返回true否则返回false
*/
public static boolean compareLength(Object obj1, Object obj2) {
// 如果两个对象都为null返回true
if (obj1 == null && obj2 == null) {
return true;
}
// 如果只有一个对象为null返回false
if (obj1 == null || obj2 == null) {
return false;
}
// 如果是字符串类型,比较字符数
if (obj1 instanceof String && obj2 instanceof String) {
String str1 = (String) obj1;
String str2 = (String) obj2;
return str1.length() == str2.length();
}
// 如果是集合类型,比较元素数量
if (obj1 instanceof Collection<?> && obj2 instanceof Collection<?>) {
Collection<?> coll1 = (Collection<?>) obj1;
Collection<?> coll2 = (Collection<?>) obj2;
return coll1.size() == coll2.size();
}
// 如果是数组类型,比较数组长度
if (obj1.getClass().isArray() && obj2.getClass().isArray()) {
return java.lang.reflect.Array.getLength(obj1) == java.lang.reflect.Array.getLength(obj2);
}
// 其他类型返回false
return false;
}
/**
* 判断多个对象是否相等
*
* @param obj1 目标对象
* @param tagObjs 标记对象
* @return 多个对象是否相等的判断结果
*/
public static boolean equals(Object obj1, Object... tagObjs) {
for (Object tagObj : tagObjs) {
if (!isEqual(obj1, tagObj)) {
return false;
}
}
return true;
}
/**
* 判断两个对象是否相等
*
* @param obj1 目标对象
* @param obj2 标记对象
* @return 对象是否相等的判断结果
*/
private static boolean isEqual(Object obj1, Object obj2) {
// 使用标准的Objects.equals处理基本的相等情况
if (java.util.Objects.equals(obj1, obj2)) {
return true;
}
// 特殊处理将null与空字符串视为相等
if ((obj1 == null && "".equals(obj2)) || (obj2 == null && "".equals(obj1))) {
return true;
}
// 处理数值类型的比较
if (obj1 instanceof Number && obj2 instanceof Number) {
Number n1 = (Number) obj1;
Number n2 = (Number) obj2;
return n1.doubleValue() == n2.doubleValue();
}
return false;
}
/**
* 获取对象的子对象
* <p>支持的对象类型String、数组和集合(List,Set)。不支持Map。</p>
*
* @param obj 目标对象
* @param beginIndex 开始索引
* @param endIndex 结束索引
* @return 子字符串
* @throws BaseException 开始索引大于结束索引时抛出异常
*/
@SuppressWarnings("unchecked")
public static <T> T sub(T obj, int beginIndex, int endIndex) throws BaseException {
if (StrUtil.isEmpty(obj)) {
return obj;
}
if (beginIndex < 0) {
beginIndex = 0;
}
if (endIndex < beginIndex) {
throw new BaseException("开始索引大于结束索引。");
}
if (obj instanceof String) {
String str = (String) obj;
if (endIndex > str.length()) {
endIndex = str.length();
}
return (T) str.substring(beginIndex, endIndex);
}
if (obj.getClass().isArray()) {
if (endIndex > Array.getLength(obj)) {
endIndex = Array.getLength(obj);
}
int newSize = endIndex - beginIndex;
T newArray = (T) Array.newInstance(obj.getClass().getComponentType(), newSize);
for (int i = 0; i < newSize; i++) {
Array.set(newArray, i, Array.get(obj, beginIndex + i));
}
return newArray;
}
if (obj instanceof Collection<?>) {
Collection<?> coll = (Collection<?>) obj;
if (endIndex > coll.size()) {
endIndex = coll.size();
}
int newSize = endIndex - beginIndex;
return (T) coll.stream().skip(beginIndex).limit(newSize).collect(Collectors.toList());
}
throw new BaseException("不支持的类型。");
}
/** /**
* <p>把对象按照{@link ToUeProperty}注解转换</p> * <p>把对象按照{@link ToUeProperty}注解转换</p>
* <i>字段值为空不输出</i> * <i>字段值为空不输出</i>
@@ -228,10 +397,8 @@ public class ObjUtil {
if (null == obj) { if (null == obj) {
return false; return false;
} }
boolean b = obj.getClass().isPrimitive() boolean b = obj.getClass()
|| obj instanceof Integer || obj instanceof Character || obj instanceof Boolean .isPrimitive() || obj instanceof Integer || obj instanceof Character || obj instanceof Boolean || obj instanceof Number || obj instanceof String || obj instanceof Double || obj instanceof Float || obj instanceof Short || obj instanceof Long || obj instanceof Byte;
|| obj instanceof Number || obj instanceof String || obj instanceof Double || obj instanceof Float
|| obj instanceof Short || obj instanceof Long || obj instanceof Byte;
if (b) { if (b) {
return true; return true;
} }
@@ -298,8 +465,7 @@ public class ObjUtil {
} }
} catch (Exception e) { } catch (Exception e) {
log.warning(lowerCaseFirstChar(f.getName()) + " field copy failed. " + e.getMessage()); log.warning(lowerCaseFirstChar(f.getName()) + " field copy failed. " + e.getMessage());
log.log(Level.FINER, lowerCaseFirstChar(f.getName()) + log.log(Level.FINER, lowerCaseFirstChar(f.getName()) + " field copy failed. The exception information is as follows:", e);
" field copy failed. The exception information is as follows:", e);
} }
}); });
return o; return o;
@@ -341,8 +507,7 @@ public class ObjUtil {
} }
} catch (Exception e) { } catch (Exception e) {
log.warning(lowerCaseFirstChar(fieldName) + " field copy failed. " + e.getMessage()); log.warning(lowerCaseFirstChar(fieldName) + " field copy failed. " + e.getMessage());
log.log(Level.FINER, lowerCaseFirstChar(fieldName) + log.log(Level.FINER, lowerCaseFirstChar(fieldName) + " field copy failed. The exception information is as follows:", e);
" field copy failed. The exception information is as follows:", e);
} }
}); });
return o; return o;
@@ -359,9 +524,7 @@ public class ObjUtil {
List<Method> methodList = new ArrayList<>(); List<Method> methodList = new ArrayList<>();
Method[] methods = beanClass.getDeclaredMethods(); Method[] methods = beanClass.getDeclaredMethods();
if (StrUtil.isNotEmpty(startsWith)) { if (StrUtil.isNotEmpty(startsWith)) {
methodList.addAll(Arrays.stream(methods) methodList.addAll(Arrays.stream(methods).filter(method -> method.getName().startsWith(startsWith)).collect(Collectors.toList()));
.filter(method -> method.getName().startsWith(startsWith))
.collect(Collectors.toList()));
} else { } else {
methodList.addAll(Arrays.asList(methods)); methodList.addAll(Arrays.asList(methods));
} }
@@ -406,7 +569,7 @@ public class ObjUtil {
* 查找目标类中的字段 * 查找目标类中的字段
* *
* @param targetClass 目标类 * @param targetClass 目标类
* @param fieldName 字段名 * @param fieldName 字段名
* @return 找到的字段未找到返回null * @return 找到的字段未找到返回null
*/ */
private static Field findTargetField(Class<?> targetClass, String fieldName) { private static Field findTargetField(Class<?> targetClass, String fieldName) {
@@ -426,8 +589,8 @@ public class ObjUtil {
* 查找setter方法 * 查找setter方法
* *
* @param targetClass 目标类 * @param targetClass 目标类
* @param fieldName 字段名 * @param fieldName 字段名
* @param paramType 参数类型 * @param paramType 参数类型
* @return 找到的setter方法未找到返回null * @return 找到的setter方法未找到返回null
*/ */
private static Method findSetterMethod(Class<?> targetClass, String fieldName, Class<?> paramType) { private static Method findSetterMethod(Class<?> targetClass, String fieldName, Class<?> paramType) {
@@ -442,8 +605,8 @@ public class ObjUtil {
/** /**
* 复制字段值 * 复制字段值
* *
* @param source 源对象 * @param source 源对象
* @param target 目标对象 * @param target 目标对象
* @param sourceField 源字段 * @param sourceField 源字段
* @param targetField 目标字段 * @param targetField 目标字段
* @throws IllegalAccessException 反射访问异常 * @throws IllegalAccessException 反射访问异常
@@ -462,8 +625,8 @@ public class ObjUtil {
* 设置字段值 * 设置字段值
* *
* @param target 目标对象 * @param target 目标对象
* @param field 字段 * @param field 字段
* @param value 值 * @param value
* @throws IllegalAccessException 反射访问异常 * @throws IllegalAccessException 反射访问异常
*/ */
private static void setFieldValue(Object target, Field field, Object value) throws IllegalAccessException { private static void setFieldValue(Object target, Field field, Object value) throws IllegalAccessException {