MENU

PHP生成唯一订单号

• October 2, 2017 • Read: 156 • PHP

一、需求


很直接: 为订单生成一个订单号

需要:

  • 结合当前的时间(订单应当显示的存在时间关系)
  • 可能在订单号下存在子单

形如 : A201706265699100949-103X

二、实现

/**
*  生成订单号
*  - 生成的是公共订单号
*  @param $str string
*  @return $no string 
*  - 生成一个common_id,这个common_id的开头 可以根据str设置不同的开头
*/
function get_order_common_id($str='A'){
    $str=strtoupper($str);
    // 生成$no
    $no=$str.date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8).rand(11, 99);
    //检测是否存在
    $info = OrderModel::get(['common_id'=>$no]); 
    // 如果存在则重新获取一个 递归操作
    (!empty($info)) && $no =get_order_common_id($str);
    return $no;
}

三、订单号的拼接和显示


第1部分:

A 字母。 这部分可以根据不同需求选择显示或者不显示

第2部分:

201706265699100949。 订单前8位和当前时间有关,后面是 unique , 保证混乱和唯一性

第3部分:

  • 破折号 用于分割查询

第4部分:

103 数据库自增字段 PK

第5部分:

X / P 字母,用来再次区分或者辅助操作

Tags: None
Archives QR Code
QR Code for this page
Tipping QR Code
Leave a Comment