如何实现订单号如:日期+自动ID 20090214-18?

2016-07-07 15:04 来源:www.chinab4c.com 作者:ecshop专家

如何实现订单号如:日期+自动ID 20090214-18?
这样首先保证不会重单,也很方便客户进行少量订单查询!
现在的方式后面是五位随机号,不好按顺序查找,对用户现实操作来说不能便捷!
也希望官方能够提供订单号,自己定义的功能 !

希望能给出实例!!!谢了


回答:
这个功能我提过很多次了。这次的2.6.2我看了下 没增加这个功能!
这个功能是非常有必要的。很多方面可能都需要这样的功能来区别。

这个修改下SN生成代码就好了 lib_order.php
  1. /**
  2. * 得到新订单号
  3. * @returnstring
  4. */
  5. function get_order_sn()
  6. {
  7. /* 选择一个随机的方案 */
  8. mt_srand((double) microtime() * 1000000);

  9. return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
  10. }
复制代码
修改
return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);

return date('Ymd') .'-'. str_pad(mt_rand(1, 99), 2, '0', STR_PAD_LEFT);

原理我就不讲了 太简单了 说下重号这 EC在添加订单时用的是DO WHILE 如果插入重复会从新生成sn

赞个。需要

赞。

这个修改下SN生成代码就好了 lib_order.php

/**
* 得到新订单号
* @returnstring
*/
function get_order_sn()
{
/* 选择一个随机的方案 */
mt_srand((double) microtime() * 1000000);

...
myareaway 发表于 2009-2-26 07:52


这样修改,一天订单数超过了怎么办?

翻到我以前改的代码了
  1. /**
  2. * 得到新订单号
  3. * @returnstring
  4. */
  5. function get_order_sn()
  6. {
  7. $date = date('Ymd');
  8. $new_sn =$GLOBALS['db']->getOne("SELECT order_sn FROM".$GLOBALS['ecs']->table('order_info')."ORDER BY add_time DESC ") ;
  9. $order_time = substr($new_sn,0,8);
  10. if ($date == $order_time)
  11. {
  12. return $new_sn+1;
  13. }
  14. else
  15. {
  16. return $date.'00001';
  17. }
  18. }
复制代码

个人认定功能可以修改成这样,在新建类别的时候就要设置订单规则,这样每个大类生成的订单都能自定义了,比如我是卖耐克,订单号前面就可以加一个NK,这样也就不会重复了,也好区分~~

留个记号。方便以后查询!

修改下SN生成代码就好了