ZenCart个性化订单号格式(2年+2月+2日+2时+2位递增数)

zencart订单号默认是从0开始的,这样给客户一你网站是新站没什么可信度的感觉,虽然可以通过后台将开始号码改为自己的指定值开始,但是还是不够个性,不够人性化。今天介绍一种将订单号改为前缀+时间+随机数格式

这篇文章参考zencart中文社区,并在其基础上做了修改

方案介绍

方案一:增加非数字前缀 (我原来的修改方式)

这个需要修改数据表,而且zencart有很多文件将order_id强制整型了,必须修正,代价太高修改文件太多不可取

方案二:4位年+月+日+时+分+秒+4位随机数 (我原来的修改方式)

由于32位系统整型最大数为2147483647,明显这种格式超出范围了,32位系统不兼容不可取

方案三:2年+2月+2日+2时+2位递增数 (推荐)

缺点:当每小时内订单超过100单时,会订单重复 (这个缺点可忽略不计了,你有本事每小时产生100订单,完全可以挑选64位系统然后再补充递增数或者随机数)

效果图

修改方法

2.打开includes\classes\order.php,查找

1function create($zf_ot_modules, $zf_mode = 2) {
2  global $db;

其上增加

1/**
2 * [get_timezone_offset 当前时区与美国时区时间差]
3 * 作用:统一订单时区,避免网站迁移后空间时区问题造成的订单冲突
4 */
5function get_timezone_offset() {
6  $origin_tz='America/New_York'//中国时区 Asia/Shanghai
7  $remote_tz=date_default_timezone_get();
8    $origin_dtz = new DateTimeZone($origin_tz);
9    $remote_dtz = new DateTimeZone($remote_tz);
10    $origin_dt = new DateTime("now", $origin_dtz);
11    $remote_dt = new DateTime("now", $remote_dtz);
12    $offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt);
13    return $offset;
14}
15
16/**
17 * [create_order_number 生成订单号]
18 */
19function create_order_number(){
20  global $db;
21  $time=time()+$this->get_timezone_offset();
22  $order_prefix=date('ymdH');
23  $check=$db->Execute("SELECT orders_id FROM ".TABLE_ORDERS." WHERE orders_id like '".$order_prefix."%' ORDER BY  orders_id DESC LIMIT 1");
24  $order_number= $check->fields['orders_id'] ? $check->fields['orders_id']+1 :$order_prefix.'01';
25  return $order_number;
26}

然后,其下增加

1$order_number=$this->create_order_number();

查找

1if ($_SESSION['shipping'] == 'free_free') {
2  $this->info['shipping_module_code'] = $_SESSION['shipping'];
3}

其下的$sql_data_array增加orders_id键值内容

1$sql_data_array = array(
2                       'orders_id' => $order_number,

查找

1$insert_id = $db->Insert_ID();

修改为

1$insert_id =$order_number;

本人测试时zencart1.5.1修改样本下载:order number

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: