php生成订单号-当天从1开始自增

本文介绍了一种基于当前日期和自增序号生成唯一订单号的方法,确保了订单号的唯一性和连续性,适用于高并发场景下的订单系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 生成订单号
 *  -当天从1开始自增
 *  -订单号模样:20190604000001
 * @param Client $redis
 * @param $key
 * @param $back:序号回退,如果订单创建失败,事务回滚可用
 * @return string
 */
public static function createOrderSn($key, $back=0)
{
    $sn = Redis::get($key);//laravel redis读取,替换一下
    $snDate = substr($sn,0,8);
    $snNo = intval(substr($sn,8));
    $curDate = date('Ymd');
    if($back==1){//序号回退
        if($curDate==$snDate){
            $snNo = ($snNo>1) ? ($snNo-1) : 1;
            $sn = $curDate.sprintf("%06d",$snNo);
        }
    }else{//序号增加
        if(empty($sn)){
            $sn = $curDate.'000001';
        }else{
            $snNo = ($curDate==$snDate) ? ($snNo+1) : 1;
            $sn = $curDate.sprintf("%06d",$snNo);
        }
    }
    Redis::set($key,$sn);//laravel redis写入,替换一下
    return $sn;
}

自己封装的,有不对请指示。

转载于:https://www.cnblogs.com/mg007/p/10975562.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值