ecshop實(shí)現(xiàn)后臺(tái)訂單自動(dòng)確認(rèn)開(kāi)發(fā)方法

ecshop教程欄目介紹實(shí)現(xiàn)后臺(tái)訂單自動(dòng)確認(rèn)開(kāi)發(fā)方法

ecshop實(shí)現(xiàn)后臺(tái)訂單自動(dòng)確認(rèn)開(kāi)發(fā)方法

推薦(免費(fèi)):ecshop教程

ecshop實(shí)現(xiàn)后臺(tái)訂單自動(dòng)確認(rèn)開(kāi)發(fā)方法

CREATE TABLE `order_auto_confirm` (  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,  `order_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',  `order_sn` VARCHAR(20) NOT NULL,  `execute_time` INT(10) UNSIGNED NOT NULL DEFAULT '0',  `order_status` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' COMMENT '0未確定,1已經(jīng)確定',  `addtime` INT(10) UNSIGNED NOT NULL DEFAULT '0',  `update_time` INT(10) UNSIGNED NOT NULL DEFAULT '0',  PRIMARY KEY (`id`),  UNIQUE INDEX `order_id` (`order_id`),  INDEX `execute_time` (`execute_time`)  )  COMMENT='訂單定期自動(dòng)確定'  COLLATE='utf8_general_ci'  ENGINE=MyISAM;

一、

/admin/order.php加入以下代碼:

elseif($_REQUEST['act'] == 'order_cron')  {  $act1 = empty($_POST['act1']) ? 0 : $_POST['act1'];  if(empty($act1) || !in_array($act1, array('add', 'cancel'))) make_json_response('', -1, '未知請(qǐng)求act1');    $order_id = intval($_POST['order_id']);  $order = order_info($order_id);  if(empty($order)) make_json_response('', -2, '沒(méi)有此訂單ID');    if($order['order_status']) make_json_response('', -3, '此訂單已經(jīng)確認(rèn),不用自動(dòng)確認(rèn)');    if($order['pay_status']) make_json_response('', -4, '此訂單支付狀態(tài)已經(jīng)變動(dòng),無(wú)法添加任務(wù)');    if($act1 == 'add'){  $order_cron_time = empty($_POST['order_cron_time']) ? 0 : $_POST['order_cron_time'];        if(empty($order_cron_time)) make_json_response('', -10, '請(qǐng)求的時(shí)間錯(cuò)誤');        $sql = 'select order_id from '.$ecs->table('order_auto_confirm').' where order_id='.$order_id;  $rs  = $db->getRow($sql);  if($rs['order_id'] == $order_id){  make_json_response('', -30, '此訂單任務(wù)已經(jīng)存在,不能重復(fù)添加');  }  $execute_time = local_strtotime($order_cron_time);  $sql    = "insert into ".$ecs->table('order_auto_confirm')."(order_id, order_sn, execute_time, order_status, addtime) values(".$order_id.",'".$order['order_sn']."',".$execute_time.", 0, ".local_gettime().")";  $result = $db->query($sql);  if($result){  make_json_response('', 0, '');  }  make_json_response('', -9, '添加任務(wù)計(jì)劃失敗');  }elseif($act1 == 'cancel'){  $sql = 'delete  from '.$ecs->table('order_auto_confirm').' where order_id='.$order_id.' and order_status=0 ';  $db->query($sql);  make_json_response('', 0, '');  }  }

二、

在elseif($_REQUEST[‘act’] == ‘info’)里加入:

//取自動(dòng)確定訂單信息  $sql = 'select order_status, execute_time, addtime, update_time from '.$ecs->table('order_auto_confirm').' where order_id='.$order['order_id'];  $cron= $db->getRow($sql);  if(!empty($cron)){  if($cron['order_status'] == 1)  $cron['update_time'] = sprintf($_LANG['order_auto_croned'], local_date('Y-m-d H:i:s', $cron['update_time']));  else  $cron['execute_time']= sprintf($_LANG['order_auto_cron'], local_date('Y-m-d H:i:s', $cron['execute_time']));  }  $smarty->assign('cron', $cron);

三、

/includes/modules/cron/order_auto_confirm.php

if (!defined('IN_ECS'))  {  die('Hacking attempt');  }  require_once(ROOT_PATH . 'includes/lib_order.php');  $cron_lang = ROOT_PATH . 'languages/' .$GLOBALS['_CFG']['lang']. '/cron/order_auto_confirm.php';  if (file_exists($cron_lang))  {  global $_LANG;    include_once($cron_lang);  }/* 模塊的基本信息 */  if (isset($set_modules) && $set_modules == TRUE)  {  $i = isset($modules) ? count($modules) : 0;    /* 代碼 */  $modules[$i]['code']    = basename(__FILE__, '.php');    /* 描述對(duì)應(yīng)的語(yǔ)言項(xiàng) */  $modules[$i]['desc']    = 'order_auto_confirm_desc';    /* 作者 */  $modules[$i]['author']  = 'wjzhhr';    /* 網(wǎng)址 */  $modules[$i]['website'] = 'http://www.wodeqingchun.com';    /* 版本號(hào) */  $modules[$i]['version'] = '1.0.0';    /* 配置信息 */  $modules[$i]['config']  = array(  array('name' => 'order_auto_confirm_count', 'type' => 'select', 'value' => '10'),  );    return;  }  $time  = gmtime();  //$time  = local_gettime();  $limit = empty($cron['order_auto_confirm_count']) ? 5 : $cron['order_auto_confirm_count'];  $sql   = "SELECT * FROM " . $GLOBALS['ecs']->table('order_auto_confirm') . " WHERE execute_time <= ".$time." and order_status=0 LIMIT $limit";  $autodb= $db->getAll($sql);  $i     = 0;  foreach ($autodb as $key => $val)  {  $order_id = $val['order_id'];  $order_sn = $val['order_sn'];  /* 標(biāo)記訂單為已確認(rèn) */  $update_status = update_order($order_id, array('order_status' => OS_CONFIRMED, 'confirm_time' => gmtime()));  update_order_amount($order_id);        /* 記錄log */  $action_note = "計(jì)劃任務(wù):定期自動(dòng)確定訂單,訂單號(hào):".$order_sn.",執(zhí)行狀態(tài):".($update_status ? '成功' : '失敗');  order_action($order_sn, OS_CONFIRMED, SS_UNSHIPPED, PS_UNPAYED, $action_note, 'system_cron');        /* 如果原來(lái)狀態(tài)不是“未確認(rèn)”,且使用庫(kù)存,且下訂單時(shí)減庫(kù)存,則減少庫(kù)存 */  if ($val['order_status'] != OS_UNCONFIRMED && $_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE)  {  change_order_goods_storage($order_id, true, SDT_PLACE);  }        if($update_status)  {  $i  += 1;  $sql = "update " . $GLOBALS['ecs']->table('order_auto_confirm') . " set order_status=1, update_time=".$time." where order_id=".$order_id;  $db->query($sql);  }  }$string = '此次共更新:'.$i.'條數(shù)據(jù)';  echo $string;file_put_contents('./a.txt',  $time . '----' . date('Y-m-d H:i:s').$string."rn", FILE_APPEND);  /**  * 更新訂單總金額  * @param   int     $order_id   訂單id  * @return  bool  //zuimoban.com  */  function update_order_amount($order_id)  {  include_once(ROOT_PATH . 'includes/lib_order.php');  //更新訂單總金額  $sql = "UPDATE " . $GLOBALS['ecs']->table('order_info') .  " SET order_amount = " . order_due_field() .  " WHERE order_id = '$order_id' LIMIT 1";    return $GLOBALS['db']->query($sql);  }  ?>

四、

/languages/zh_cn/admin/order.php里加入:

//  $_LANG['order_auto_croned'] = '此訂單于 %s 已被確認(rèn)';  $_LANG['order_auto_cron']   = '此訂單于 %s 進(jìn)行定時(shí)確認(rèn)';  $_LANG['order_auto']        = '將此訂單加入自動(dòng)定時(shí)確認(rèn)';  $_LANG['order_auto_time']   = '自動(dòng)確認(rèn)時(shí)間:';

五、

/admin/themes/order_info.htm在:{$lang.base_info}后面加入:

ecshop實(shí)現(xiàn)后臺(tái)訂單自動(dòng)確認(rèn)開(kāi)發(fā)方法

在此頁(yè)面的JS里面加入:

function order_cron(order_id, act){    var order_cron_time = 0;    if(act == 'add'){        order_cron_time = document.getElementById('order_cron_time').value;        if(!order_cron_time){            alert('無(wú)法獲取時(shí)間');            return false;        }    }    Ajax.call('order.php?act=order_cron', 'order_id=' + order_id + '&act1=' + act + '&order_cron_time=' + order_cron_time, order_cron_response, 'POST', 'JSON');}function order_cron_response(res){  if (res.error == 0)  {      alert('保存成功');  }  else  {      alert(res.message);  }  return false;}

還有/themes/default/footer.dwt里是否含有:
{insert name=’query_info’}
這一句,比較重要,前人把這句去掉了,害最模板到處找原因。共涉及5個(gè)文件,兩個(gè)新添加的

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊6 分享
站長(zhǎng)的頭像-小浪學(xué)習(xí)網(wǎng)月度會(huì)員