美文网首页PHP
生成重复性小的订单号

生成重复性小的订单号

作者: 这真的是一个帅气的名字 | 来源:发表于2019-09-26 10:15 被阅读0次
private $orderCodes = [];
 private function generateOrderId()
    {
 //生成24位唯一订单号码,格式:YYYY-MMDD-HHII-SS-NNNN,NNNN-CC,
        //其中:YYYY=年份,MM=月份,DD=日期,HH=24格式小时,II=分,SS=秒,NNNNNNNN=随机数,CC=检查码
        @date_default_timezone_set("PRC");
        //订单号码主体(YYYYMMDDHHIISSNNNNNNNN)
        $order_id_main = date("YmdHis").rand(100000, 999999);
        //订单号码主体长度
        $order_id_len = strlen($order_id_main);
        $order_id_sum = 0;
        for ($i = 0; $i < $order_id_len; $i++) {
            $order_id_sum += (int)(substr($order_id_main, $i, 1));
        }
        //唯一订单号码(YYYYMMDDHHIISSNNNNNNNNCC)
        $order_id = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100, 2, '0', STR_PAD_LEFT);
        return $this->checkOrder($order_id);
}
    private function checkOrder($order_id)
    {
        if(in_array($order_id,$this->orderCodes)){
            return $this->generateOrderId();
        }else{
            array_push($this->orderCodes,$order_id);
            return $order_id;
        }
    }

相关文章

网友评论

    本文标题:生成重复性小的订单号

    本文链接:https://www.haomeiwen.com/subject/blyructx.html