多语言展示
当前在线:355今日阅读:23今日分享:25

ecshop订单核心架构分析与拆解

解剖ecshop核心逻辑
工具/原料
1

ecshop

2

php5.3

操作返回
订单状态

define('OS_UNCONFIRMED',            0); // 未确认define('OS_CONFIRMED',              1); // 已确认define('OS_CANCELED',               2); // 已取消define('OS_INVALID',                3); // 无效define('OS_RETURNED',               4); // 退货define('OS_SPLITED',                5); // 已分单define('OS_SPLITING_PART',          6); // 部分分单

配送状态

define('SS_UNSHIPPED',              0); // 未发货define('SS_SHIPPED',                1); // 已发货define('SS_RECEIVED',               2); // 已收货define('SS_PREPARING',              3); // 备货中define('SS_SHIPPED_PART',           4); // 已发货(部分商品)define('SS_SHIPPED_ING',            5); // 发货中(处理分单)define('OS_SHIPPED_PART',           6); // 已发货(部分商品)

支付状态

define('PS_UNPAYED',                0); // 未付款define('PS_PAYING',                 1); // 付款中define('PS_PAYED',                  2); // 已付款

ECSHOP订单号生成函数

/** * 得到新订单号 * @return  string */function get_order_sn(){    /* 选择一个随机的方案 */    mt_srand((double) microtime() * 1000000);    return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); }

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); //如果是订单号重复则重新提交数据

ECSHOP订单核心表

order_info  订单的表 pay_log     系统支付记录order_goods  订单的商品信息

推荐信息