美文网首页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