一些通用代码
Response的封装
代码
java
@AllArgsConstructor
@NoArgsConstructor
@Data
public class BaseResponse<T> {
private int code;
private String msg;
private T data;
public BaseResponse<T> code(ResponseStatusEnum statusEnum) {
this.code = statusEnum.getStatusCode();
return this;
}
public BaseResponse<T> msg(String msg) {
this.msg = msg;
return this;
}
public BaseResponse<T> data(T data) {
this.data = data;
return this;
}
public BaseResponse<T> build() {
return this;
}
public BaseResponse<T> success() {
return new BaseResponse<T>()
.code(ResponseStatusEnum.OK)
.msg(ResponseStatusEnum.OK.getDescription())
.data(null)
.build();
}
public BaseResponse<T> success(ResponseStatusEnum statusEnum) {
return new BaseResponse<T>()
.code(statusEnum)
.msg(statusEnum.getDescription())
.data(null)
.build();
}
public BaseResponse<T> success(String msg) {
return new BaseResponse<T>()
.code(ResponseStatusEnum.OK)
.msg(msg)
.data(null)
.build();
}
public BaseResponse<T> success(T data) {
return new BaseResponse<T>()
.code(ResponseStatusEnum.OK)
.msg(msg)
.data(data)
.build();
}
public BaseResponse<T> error() {
return new BaseResponse<T>()
.code(ResponseStatusEnum.ERROR)
.msg(ResponseStatusEnum.ERROR.getDescription())
.data(null)
.build();
}
public BaseResponse<T> error(ResponseStatusEnum statusEnum) {
return new BaseResponse<T>()
.code(statusEnum)
.msg(statusEnum.getDescription())
.data(null)
.build();
}
public BaseResponse<T> error(String msg) {
return new BaseResponse<T>()
.code(ResponseStatusEnum.ERROR)
.msg(msg)
.data(null)
.build();
}
public BaseResponse<T> callBack(ResponseStatusEnum statusEnum,String msg,T data){
return new BaseResponse<T>()
.code(statusEnum)
.msg(msg)
.data(data)
.build();
}
}
随机数生成工具
java
public class RandomStringUtils {
private static final String NUMBERS = "0123456789";
private static final String LOWERCASE_LETTERS = "abcdefghijklmnopqrstuvwxyz";
private static final String UPPERCASE_LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static final String ALL_CHARACTERS = NUMBERS + LOWERCASE_LETTERS + UPPERCASE_LETTERS;
private static final SecureRandom SECURE_RANDOM = new SecureRandom();
// 私有构造器,防止实例化
private RandomStringUtils() {
}
/**
* 生成指定长度的随机字符串(包含大小写字母和数字)
*
* @param length 长度(必须≥1)
* @return 随机字符串
*/
public static String generateMixed(int length) {
return generate(length, true, true, true);
}
/**
* 生成指定长度的纯数字字符串
*
* @param length 长度(必须≥1)
* @return 数字字符串
*/
public static String generateNumbers(int length) {
return generate(length, false, false, true);
}
/**
* 生成指定长度的纯小写字母字符串
*
* @param length 长度(必须≥1)
* @return 小写字母字符串
*/
public static String generateLowercase(int length) {
return generate(length, true, false, false);
}
/**
* 生成指定长度的纯大写字母字符串
*
* @param length 长度(必须≥1)
* @return 大写字母字符串
*/
public static String generateUppercase(int length) {
return generate(length, false, true, false);
}
/**
* 生成自定义组合的随机字符串
*
* @param length 长度(必须≥1)
* @param includeLower 是否包含小写字母
* @param includeUpper 是否包含大写字母
* @param includeNumbers 是否包含数字
* @return 自定义组合的随机字符串
*/
public static String generate(int length, boolean includeLower, boolean includeUpper, boolean includeNumbers) {
if (length < 1) {
throw new ServiceException("生成自定义组合的随机字符串 长度必须≥1");
}
// 构建可用字符集
StringBuilder charSet = new StringBuilder();
if (includeLower) {
charSet.append(LOWERCASE_LETTERS);
}
if (includeUpper) {
charSet.append(UPPERCASE_LETTERS);
}
if (includeNumbers) {
charSet.append(NUMBERS);
}
if (charSet.length() == 0) {
throw new ServiceException("生成自定义组合的随机字符串 必须选择至少一种字符类型");
}
// 使用SecureRandom生成安全随机数(适合敏感场景)
char[] buffer = new char[length];
for (int i = 0; i < length; i++) {
int index = SECURE_RANDOM.nextInt(charSet.length());
buffer[i] = charSet.charAt(index);
}
return new String(buffer);
}
}