package com.ruoyi.common.utils.uuid;

import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;
import com.alibaba.fastjson2.util.DateUtils;

import java.util.Date;
import java.util.Random;

/**
 * ID生成器工具类
 *
 * @author ruoyi
 */
public class IdUtils
{
    /**
     * 获取随机UUID
     *
     * @return 随机UUID
     */
    public static String randomUUID()
    {
        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID()
    {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 随机UUID
     */
    public static String fastUUID()
    {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID()
    {
        return UUID.fastUUID().toString(true);
    }

    /**
     * 生成用户登录标识
     * @return 结果
     */
    public static String getUserLoginToken(){
        return IdUtil.getSnowflake(1, 1).nextIdStr();
    }

    /**
     * 生成随机数
     * @param step 位数
     * @return 结果
     */
    public static String buildNumberCode(Integer step) {
        String sources = "0123456789";
        Random rand = new Random();
        StringBuilder flag = new StringBuilder();
        for (int j = 0; j < step; j++) {
            flag.append(sources.charAt(rand.nextInt(10)));
        }
        return flag.toString();
    }

    public static String getOrderNum(){//订单号
        String time = DateUtils.format(new Date(),"yyMMddHHmmss");
        String randomStr = RandomUtil.randomNumbers(7);
        return time+randomStr;
    }
}
