/**
* 生成訂單號
* -當天從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;
}
自己封裝的,有不對請指示。