获取单据编号 不重复 骚

列:sn=CS201911-0002

$sn = $this->visitinSn("CS"); //生成单据编号

/**
 * Notes:生成单据公共接口
 * Created by xxg@seabig.cn
 * Date: 2019/11/7
 * Time: 15:18
 */
public function visitinSn($key)
{
    $this->_globals();
    //初始化
    $sn = "";
    $zero = "";
    //获取所有单据编号
    $reports = $this->mBasic->getList("crm_visitin", array("is_del=0", "sn like '" . $key . date("Ym") . "-%'"), false);
    if ($reports) {
        foreach ($reports as $v) {
            //初始化
            $reportSn = "";
            $reportSn = substr(strstr($v['sn'], '-'), strlen('-'));  //截取
            if ($reportSn > $sn) {
                $sn = $reportSn;
            }
        }
    } else {
        $sn = 0;
    }

    $sn += 1;
    for ($i = 0; $i < (4 - strlen($sn)); $i++) {
        $zero .= "0";
    }
    $sn = $key . date("Ym") . '-' . $zero . $sn;
    print_r($sn);die;
    return $sn;
}

 

  # 生成订单号
    if (!function_exists('makePaySn')) {
        /**
         * 生成20位编号(时间+微秒+随机数+会员ID%1000),该值会传给第三方支付接口
         * 长度 =12位 + 3位 + 2位 + 3位  = 20位
         * 1000个会员同一微秒提订单,重复机率为1/100
         * @return string
         */
        function makePaySn($member_id)
        {
            return date('ymdHis', time()) . sprintf('%03d', (float) microtime() * 1000) . mt_rand(10, 99) . sprintf('%03d', intval($member_id) % 1000);
        }
    }

  

posted @ 2020-03-12 14:36  丶XianGang  阅读(193)  评论(0编辑  收藏  举报