package com.zy.crm.manager.utils;
|
|
import com.zy.crm.manager.entity.Rule;
|
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.concurrent.ThreadLocalRandom;
|
|
|
/*
|
* 定义一个规则:头:String ruleHeader;体: String ruleBody;连接符:String ruleConnector;连接符是否启用(0:启用;1:不启用。:Integer ruleConnectorType;规则方式(默认1:当前日期时间戳):Integer ruleType;
|
* 根据规则自动生成
|
* Created by Monkey D. Luffy on 2023.08.22.
|
* */
|
public class RuleUtils {
|
private String ruleHeader;
|
private String ruleBody;
|
private String ruleConnector;
|
private int ruleConnectorType;
|
private int ruleType;
|
|
public RuleUtils(String ruleHeader, String ruleBody, String ruleConnector, int ruleConnectorType, int ruleType) {
|
this.ruleHeader = ruleHeader;
|
this.ruleBody = ruleBody;
|
this.ruleConnector = ruleConnector;
|
this.ruleConnectorType = ruleConnectorType;
|
this.ruleType = ruleType;
|
}
|
|
public String generateString() {
|
StringBuilder sb = new StringBuilder();
|
|
// 添加头部
|
sb.append(ruleHeader);
|
// 添加连接符(如果启用)
|
if (ruleConnectorType == 0) {
|
sb.append(ruleConnector);
|
}
|
|
// 根据规则方式生成日期时间戳或随机字符串
|
String ruleValue = "";
|
switch (ruleType) {
|
case 1:
|
ruleValue = String.valueOf(System.currentTimeMillis());
|
break;
|
case 2:
|
ruleValue = generateRandomString(10); // 生成长度为10的随机字符串
|
break;
|
case 3:
|
ruleValue = generateCustomTimestamp(); // 自定义生成日期时间戳的逻辑
|
break;
|
}
|
|
// 添加规则值到字符串体
|
sb.append(ruleBody);
|
// 添加连接符(如果启用)
|
if (ruleConnectorType == 0) {
|
sb.append(ruleConnector);
|
}
|
sb.append(ruleValue);
|
|
return sb.toString();
|
}
|
|
private String generateRandomString(int length) {
|
// 生成指定长度的随机字符串的逻辑
|
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < length; i++) {
|
int index = ThreadLocalRandom.current().nextInt(characters.length());
|
char randomChar = characters.charAt(index);
|
sb.append(randomChar);
|
}
|
|
return sb.toString(); // 返回生成的随机字符串
|
}
|
|
private String generateCustomTimestamp() {
|
// 自定义生成日期时间戳的逻辑
|
LocalDateTime now = LocalDateTime.now();
|
return now.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);// 返回生成的自定义日期时间戳
|
}
|
|
public static String rule(Rule rule){
|
String ruleHeader = rule.getRuleHeader();
|
String ruleBody = rule.getRuleBody();
|
String ruleConnector = rule.getRuleConnector();
|
int ruleConnectorType = rule.getRuleConnectorType();
|
int ruleType = rule.getRuleType();
|
|
RuleUtils generator = new RuleUtils(ruleHeader, ruleBody, ruleConnector, ruleConnectorType, ruleType);
|
String generatedString = generator.generateString();
|
return generatedString;
|
}
|
|
public static void main(String[] args) {
|
String ruleHeader = "HEADER";
|
String ruleBody = "TIMESTAMP";
|
String ruleConnector = "-";
|
int ruleConnectorType = 1;
|
int ruleType = 1;
|
|
RuleUtils generator = new RuleUtils(ruleHeader, ruleBody, ruleConnector, ruleConnectorType, ruleType);
|
String generatedString = generator.generateString();
|
System.out.println(generatedString);
|
}
|
}
|