第一種是以前寫過的那種 , 訂單號要多少位數自己控制,反正前面6位都是時間:
第二種是:
1,生成A類,B類兩個表,
CREATE TABLE `order_id_a` (
`id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
`stub` char(1) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;
CREATE TABLE `order_id_b` (
`id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
`stub` char(1) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;
其中,單數天是A類,雙數是B類;
2,然后根據一定的規則生成17位的訂單號:
<?php /** * 生成訂單號表a * @param int $suid 門店id * @return string */ public static function getorderIdA($suid = 0) { $table = CaterDbTables::orderIdA(); $sql = "REPLACE INTO $table (stub) VALUES ('a')"; $conn = MysqlHelper::getInstance(); $id = $conn->insert($sql, 1); $system_num = '11'; return date('ymd') . $system_num . ($suid % 10) . sprintf("%08d", $id % 100000000); } /** * 生成訂單號表b * @param int $suid 門店id * @return string */ public static function getorderIdB($suid = 0) { $table = CaterDbTables::orderIdB(); $sql = "REPLACE INTO $table (stub) VALUES ('b')"; $conn = MysqlHelper::getInstance(); $id = $conn->insert($sql, 1); $system_num = '11'; return date('ymd') . $system_num . ($suid % 10) . sprintf("%08d", $id % 100000000); }
