News新闻

业界新闻动态、技术前沿
Who are we?

您的位置:首页      乐道系统FAQ      ecshop怎样解决重复订单问题

ecshop怎样解决重复订单问题

发布日期:2017-04-20 00:00:00 600

  ecshop是一个比较优秀的网上商城CMS系统,其程序比较小,但是电商所涉及到的功能一样不少。其一些程序核心还是值得借鉴学习的。


  在做某一个小企业站的时候,客户需要新增订单功能,那么怎么解决重复订单问题,因对ecshop比较熟,就借鉴了ECSHOP的处理方式;


代码

$error_no = 0;
do
{
$order['order_sn'] = get_order_sn(); //获取新订单号
$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT');
$error_no = $GLOBALS['db']->errno();
if ($error_no > 0 && $error_no != 1062)
{
die($GLOBALS['db']->errorMsg());
}
}
while ($error_no == 1062);


  其代码很好理解,首先对错误码进行清零。然后使用do while 进行提交(插入订单表);


  正常情况下,至少提交一次。首先,使用订单号生成程序生成一个新的订单号,这个订单号是日期加随机生成,虽然重复的几率比较小,但是还是不得不防止重复的现象发生,所以有了这个处理机制;


  接下来,把获取到的新订单号,赋予到订单数组 order_sn中,然后开始插入操作;

然后,判断插入操作是否出错。因order_sn加入了索引,并且为Unique类型,如果重复,则插入出错;


  如果出错代码为除0和1062外的代码,则弹出出错消息;


  如果出错代码为1062,则继续提交,直到提交成功。