155 lines
4.4 KiB
Java
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.jsl.oa.utils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Random;
/**
* <h1>自定义快捷工具类</h1>
* <hr/>
*
* @author 筱锋xiao_lfeng
* @version v1.0.0
* @since v1.0.0
*/
public class Processing {
/**
* <h1>获取参数校验错误信息</h1>
* <hr/>
* 用于获取参数校验错误信息
*
* @param bindingResult 参数校验结果
* @return {@link ArrayList<String>}
* @since v1.0.0
*/
public static @NotNull ArrayList<String> getValidatedErrorList(BindingResult bindingResult) {
ArrayList<String> arrayList = new ArrayList<>();
for (ObjectError objectError : bindingResult.getAllErrors()) {
arrayList.add(objectError.getDefaultMessage());
}
return arrayList;
}
/**
* <h1>生成工号</h1>
* <hr/>
* 用于生成工号默认长度为10
*
* @param type 0:学生 1:教师 2:其他
* @return {@link String}
* @since v1.0.0
*/
public static @NotNull String createJobNumber(Short type) {
return createJobNumber(type, (short) 10);
}
/**
* <h1>生成工号</h1>
* <hr/>
* 用于生成工号
*
* @param type 0:学生 1:教师 2:其他
* @param size 工号长度
* @return {@link String}
* @since v1.0.0
*/
public static @NotNull String createJobNumber(Short type, Short size) {
StringBuilder stringBuilder = new StringBuilder();
if (type == 0) {
stringBuilder.append("STU");
} else if (type == 1) {
stringBuilder.append("TCH");
} else {
stringBuilder.append("OTH");
}
// 生成工号
Random random = new Random();
for (int i = 0; i < size - 3; i++) {
stringBuilder.append(random.nextInt(10));
}
return stringBuilder.toString();
}
/**
* <h1>生成验证码</h1>
* <hr/>
* 用于生成验证码默认长度为6
*
* @return {@link Integer}
*/
public static @NotNull Integer createCode(Integer size) {
if (size == null) {
size = 6;
}
StringBuilder stringBuilder = new StringBuilder();
// 生成验证码
Random random = new Random();
for (int i = 0; i < size; i++) {
stringBuilder.append(random.nextInt(10));
}
return Integer.valueOf(stringBuilder.toString());
}
/**
* <h1>生成256位字符串</h1>
* <hr/>
* 用于生成256位字符串用于加密
*
* @param input 输入
* @return 返回加密后的字符串
*/
public static String generateKey(Long input) {
String inputString = String.valueOf(input);
// 使用简单的伪随机算法生成256位字符串
StringBuilder result = new StringBuilder();
for (int i = 0; i < 256; i++) {
int charIndex;
int math;
if (i == 0) {
math = Math.abs(inputString.hashCode());
} else {
math = Math.abs(inputString.hashCode() % i);
}
if (i < 62) {
charIndex = (math % 62);
} else {
charIndex = (math / 6 % 62);
}
char nextChar = getCharFromIndex(charIndex);
result.append(nextChar);
}
return result.toString();
}
/**
* <h2>获取Authorization Header</h2>
* <hr/>
* 用于获取Authorization Header
*
* @param request 请求
*/
public static @Nullable Long getAuthHeader(@NotNull HttpServletRequest request) {
String token = request.getHeader("Authorization");
if (token == null || token.isEmpty()) {
return null;
} else {
// 解析Bearer后面的令牌
token = token.replace("Bearer ", "");
return JwtUtil.getUserId(token);
}
}
private static char getCharFromIndex(int index) {
// 生成字符集合,可以根据需要自定义
String charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
return charset.charAt(index);
}
}