php生成唯一订单号

使用 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();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容