php生成唯一订单号

孤人 提交于 2020-10-03 13:18:01

使用 https://github.com/godruoyi/php-snowflake 来生成

<?php

declare(strict_types=1);

use think\facade\Cache;
use think\facade\Config;
use Godruoyi\Snowflake\Snowflake;
use Godruoyi\Snowflake\RedisSequenceResolver;

/**
 * 获取redis实例
 *
 * @return \Redis
 */
function get_redis(): \Redis
{
    return Cache::store()->handler();
}

/**
 * 生成唯一订单号
 * 
 * @param string $prefix 订单号前缀
 * @return string
 */
function build_order_no(string $prefix = ''): string
{
    $options = Config::get('cache.stores.redis');
    $redis = get_redis();
    $snowflake = new Snowflake();
    $sequence = new RedisSequenceResolver($redis);
    $sequence->setCachePrefix($options['prefix'] . 'order_no:');
    $snowflake->setSequenceResolver($sequence);
    return $prefix . $snowflake->id();
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!