金宝棋牌

ecshop教程

金宝棋牌 本栏目供应ecshop教程,ecshop视频教程,ecshop金宝棋牌二八杠制造教程,ecshop二次开发教程,ecshop应用教程。

修改Ecshop后台订单统计数据不准确BUG

揭晓于:2019-05-18 12:07:24 | 点击: | 栏目:

ecshop教程

Ecshop后台的订双数据统计不准确,效果出在order_status.php文件function get_orderinfo($start_date, $end_date)的界说,其中所有的sql都用了下面的代码:

function get_orderinfo($start_date, $end_date){$order_info = array();/* 未确认订双数 */$sql = 'SELECT COUNT(*) AS unconfirmed_num FROM ' .$GLOBALS['ecs']->table('order_info')." WHERE order_status = '" .OS_UNCONFIRMED. "' AND add_time >= '$start_date'".
" AND add_time < '" . ($end_date + 86400) . "'";

很显着,这里有个很显着的逻辑弱点,即$end_date+86400,除非这里用户选择的泉源时间和阻拦时间是统一天,否则没有须要加上86400(86400秒即是1天),这个弱点效果会招致最后的订单统计数目曾经不是在指准时间段内的数据,而是指定的时间后再加上一天。
另外Ecshop自己自己订单确认功效,招致的默许订单统计页面,只显示未确认,已确认,已成交,有用这四个信息。这四个信息都不网罗最最主要的已付款的订双数的信息
只需将无用的已确认订单统计代码改成已支付的统计代码:

/* 已确认订双数 */
$sql = 'SELECT COUNT(*) AS confirmed_num FROM ' .$GLOBALS['ecs']->table('order_info').
" WHERE order_status = '" .OS_CONFIRMED. "' AND shipping_status NOT ". db_create_in(array(SS_SHIPPED, SS_RECEIVED)) . " AND pay_status NOT" . db_create_in(array(PS_PAYED, PS_PAYING)) ." AND add_time >= '$start_date'".
" AND add_time < '" . ($end_date + 86400) . "'";
$order_info['confirmed_num'] = $GLOBALS['db']->getOne($sql);

改成:

/* by tiandi 已支付订双数 */
$sql = 'SELECT COUNT(*) AS confirmed_num FROM ' .$GLOBALS['ecs']->table('order_info').
" WHERE pay_status =" . PS_PAYED ." AND shipping_status NOT" . db_create_in(array(SS_SHIPPED, SS_RECEIVED)) ." AND add_time >= '$start_date'".
" AND add_time < $end_date";
$order_info['confirmed_num'] = $GLOBALS['db']->getOne($sql);

便可修复ecshop统计不准备效果。

猜您喜欢
相关信息