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