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

copy/**
 * 生成订单号
 *	-当天从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;
}

自己封装的..

posted @   pine007  阅读(1863)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示