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