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); } }