您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程
ecshop商品订单自动确认二次开发教程
周放大2024-01-16Ecshop商城教程已有人查阅
导读通过本教程可以实现ECSHOP商城订单自动确认!1、运行sql代码,生成数据库CREATE TABLE `ecs_order_auto_confirm`
通过本教程可以实现ECSHOP商城订单自动确认!
1、运行sql代码,生成数据库
CREATE TABLE `ecs_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已经确定',`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='订单定期自动确定'COLLATE='utf8_general_ci'ENGINE=MyISAM;
2./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, '未知请求act1'); $order_id = intval($_POST['order_id']); $order = order_info($order_id); if(empty($order)) make_json_response('', -2, '没有此订单ID'); if($order['order_status']) make_json_response('', -3, '此订单已经确认,不用自动确认'); if($order['pay_status']) make_json_response('', -4, '此订单支付状态已经变动,无法添加任务'); 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, '请求的时间错误'); $sql = 'select order_id from '.$GLOBALS['ecs']->table('order_auto_confirm').' where order_id='.$order_id; $rs = $db->getRow($sql); if($rs['order_id'] == $order_id){ make_json_response('', -30, '此订单任务已经存在,不能重复添加'); } $execute_time = local_strtotime($order_cron_time); $sql = "insert into ".$GLOBALS['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, '添加任务计划失败'); }elseif($act1 == 'cancel'){ $sql = 'delete from '.$GLOBALS['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')里加入:
//取自动确定订单信息 $sql = 'select order_status, execute_time, addtime, update_time from '.$GLOBALS['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);
2.新建php文件/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'); /* 描述对应的语言项 */ $modules[$i]['desc'] = 'order_auto_confirm_desc'; /* 作者 */ $modules[$i]['author'] = '超神学院'; /* 网址 */ $modules[$i]['website'] = 'http://www.ebingou.cn'; /* 版本号 */ $modules[$i]['version'] = '1.0.0'; /* 配置信息 */ $modules[$i]['config'] = array( array('name' => 'order_auto_confirm_count', 'type' => 'select', 'value' => '10'), ); return;}$time = gmtime();$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']; /* 标记订单为已确认 */ $update_status = update_order($order_id, array('order_status' => OS_CONFIRMED, 'confirm_time' => gmtime())); update_order_amount($order_id); /* 记录log */ $action_note = "计划任务:定期自动确定订单,订单号:".$order_sn.",执行状态:".($update_status ? '成功' : '失败'); order_action($order_sn, OS_CONFIRMED, SS_UNSHIPPED, PS_UNPAYED, $action_note, 'system_cron'); /* 如果原来状态不是“未确认”,且使用库存,且下订单时减库存,则减少库存 */ 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.'条数据';echo $string;file_put_contents('./a.txt', $time . '----' . date('Y-m-d H:i:s').$string."\r\n", FILE_APPEND); /** * 更新订单总金额 * @param int $order_id 订单id * @return bool */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);}?>
3.新建php文件/languages/zh_cn/cron/order_auto_confirm.php
global $_LANG;$_LANG['order_auto_confirm'] = '订单定期自动确定';
$_LANG['order_auto_confirm_desc'] = '定期自动确定订单';$_LANG['order_auto_confirm_count'] = '每次处理记录个数';$_LANG['order_auto_confirm_count_range']['5'] = '5';$_LANG['order_auto_confirm_count_range']['10'] = '10';$_LANG['order_auto_confirm_count_range']['15'] = '15';$_LANG['order_auto_confirm_count_range']['20'] = '20';?>
4.在/languages/zh_cn/admin/order.php里加入:
/* 订单自动确认 */$_LANG['order_auto_croned'] = '此订单于 %s 已被确认';$_LANG['order_auto_cron'] = '此订单于 %s 进行定时确认';$_LANG['order_auto'] = '将此订单加入自动定时确认';$_LANG['order_auto_time'] = '自动确认时间:';
5./admin/themes/order_info.htm 在:{$lang.base_info}后面加入:
<!--{if $order.status == 0 && $order.pay_status == 0 }-->
<script type="text/javascript" src="../js/calendar.php?lang={$cfg_lang}"></script>
<link href="../js/calendar/calendar.css" rel="stylesheet" type="text/css" />
<div id="order_auto_cron" style="display: inline-block; width: 300px;">
<!--{if !$cron}-->
<a href="javascript:;" id="ccd" onclick="document.getElementById('select_time').style.display=''; this.style.display='none';">{$lang.order_auto}</a>
<span id="select_time" style="display: none;">{$lang.order_auto_time}
<input type="text" id="order_cron_time" value="" onclick="return showCalendar('order_cron_time', '%Y-%m-%d %H:%M:%S', '24', false, 'order_cron_time');" name="order_cron_time">
<input type="button" value="保存" id="ccd_save" class="button" onclick="order_cron({$order.order_id}, 'add');">
<a href="javascript:;" onclick="document.getElementById('select_time').style.display='none'; document.getElementById('ccd').style.display='';">{$lang.op_cancel}</a>
</span>
<!--{elseif $cron.order_status == 0}-->
{$cron.execute_time}
<a href="javascript:;" onclick="if(confirm('确定要删除定时执行任务吗?')){order_cron({$order.order_id}, 'cancel');}else{return false;}">{$lang.op_cancel}</a>
<!--{else $cron.order_status == 1}-->
{$cron.update_time}
<!--{/if}-->
</div>
<!--{/if}-->
在此页面的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('无法获取时间'); 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;}
6.需保证在themes\default\library\page_footer.lbi文件中存在
{insert name='query_info'}
7.到后台"系统设置"->"计划任务"点击安装
大功告成,以后订单按时自动确认了
1、运行sql代码,生成数据库
CREATE TABLE `ecs_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已经确定',`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='订单定期自动确定'COLLATE='utf8_general_ci'ENGINE=MyISAM;
2./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, '未知请求act1'); $order_id = intval($_POST['order_id']); $order = order_info($order_id); if(empty($order)) make_json_response('', -2, '没有此订单ID'); if($order['order_status']) make_json_response('', -3, '此订单已经确认,不用自动确认'); if($order['pay_status']) make_json_response('', -4, '此订单支付状态已经变动,无法添加任务'); 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, '请求的时间错误'); $sql = 'select order_id from '.$GLOBALS['ecs']->table('order_auto_confirm').' where order_id='.$order_id; $rs = $db->getRow($sql); if($rs['order_id'] == $order_id){ make_json_response('', -30, '此订单任务已经存在,不能重复添加'); } $execute_time = local_strtotime($order_cron_time); $sql = "insert into ".$GLOBALS['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, '添加任务计划失败'); }elseif($act1 == 'cancel'){ $sql = 'delete from '.$GLOBALS['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')里加入:
//取自动确定订单信息 $sql = 'select order_status, execute_time, addtime, update_time from '.$GLOBALS['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);
2.新建php文件/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'); /* 描述对应的语言项 */ $modules[$i]['desc'] = 'order_auto_confirm_desc'; /* 作者 */ $modules[$i]['author'] = '超神学院'; /* 网址 */ $modules[$i]['website'] = 'http://www.ebingou.cn'; /* 版本号 */ $modules[$i]['version'] = '1.0.0'; /* 配置信息 */ $modules[$i]['config'] = array( array('name' => 'order_auto_confirm_count', 'type' => 'select', 'value' => '10'), ); return;}$time = gmtime();$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']; /* 标记订单为已确认 */ $update_status = update_order($order_id, array('order_status' => OS_CONFIRMED, 'confirm_time' => gmtime())); update_order_amount($order_id); /* 记录log */ $action_note = "计划任务:定期自动确定订单,订单号:".$order_sn.",执行状态:".($update_status ? '成功' : '失败'); order_action($order_sn, OS_CONFIRMED, SS_UNSHIPPED, PS_UNPAYED, $action_note, 'system_cron'); /* 如果原来状态不是“未确认”,且使用库存,且下订单时减库存,则减少库存 */ 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.'条数据';echo $string;file_put_contents('./a.txt', $time . '----' . date('Y-m-d H:i:s').$string."\r\n", FILE_APPEND); /** * 更新订单总金额 * @param int $order_id 订单id * @return bool */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);}?>
3.新建php文件/languages/zh_cn/cron/order_auto_confirm.php
global $_LANG;$_LANG['order_auto_confirm'] = '订单定期自动确定';
$_LANG['order_auto_confirm_desc'] = '定期自动确定订单';$_LANG['order_auto_confirm_count'] = '每次处理记录个数';$_LANG['order_auto_confirm_count_range']['5'] = '5';$_LANG['order_auto_confirm_count_range']['10'] = '10';$_LANG['order_auto_confirm_count_range']['15'] = '15';$_LANG['order_auto_confirm_count_range']['20'] = '20';?>
4.在/languages/zh_cn/admin/order.php里加入:
/* 订单自动确认 */$_LANG['order_auto_croned'] = '此订单于 %s 已被确认';$_LANG['order_auto_cron'] = '此订单于 %s 进行定时确认';$_LANG['order_auto'] = '将此订单加入自动定时确认';$_LANG['order_auto_time'] = '自动确认时间:';
5./admin/themes/order_info.htm 在:{$lang.base_info}后面加入:
<!--{if $order.status == 0 && $order.pay_status == 0 }-->
<script type="text/javascript" src="../js/calendar.php?lang={$cfg_lang}"></script>
<link href="../js/calendar/calendar.css" rel="stylesheet" type="text/css" />
<div id="order_auto_cron" style="display: inline-block; width: 300px;">
<!--{if !$cron}-->
<a href="javascript:;" id="ccd" onclick="document.getElementById('select_time').style.display=''; this.style.display='none';">{$lang.order_auto}</a>
<span id="select_time" style="display: none;">{$lang.order_auto_time}
<input type="text" id="order_cron_time" value="" onclick="return showCalendar('order_cron_time', '%Y-%m-%d %H:%M:%S', '24', false, 'order_cron_time');" name="order_cron_time">
<input type="button" value="保存" id="ccd_save" class="button" onclick="order_cron({$order.order_id}, 'add');">
<a href="javascript:;" onclick="document.getElementById('select_time').style.display='none'; document.getElementById('ccd').style.display='';">{$lang.op_cancel}</a>
</span>
<!--{elseif $cron.order_status == 0}-->
{$cron.execute_time}
<a href="javascript:;" onclick="if(confirm('确定要删除定时执行任务吗?')){order_cron({$order.order_id}, 'cancel');}else{return false;}">{$lang.op_cancel}</a>
<!--{else $cron.order_status == 1}-->
{$cron.update_time}
<!--{/if}-->
</div>
<!--{/if}-->
在此页面的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('无法获取时间'); 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;}
6.需保证在themes\default\library\page_footer.lbi文件中存在
{insert name='query_info'}
7.到后台"系统设置"->"计划任务"点击安装
大功告成,以后订单按时自动确认了
本文标签:
很赞哦! ()
图文教程
ecshop后台商品添加成品和利润参数代码实例
ecshop后台admin中的商品操作php文件,goods.php替换为下面的代码,还要在数据库商品本店售价后门添加 cost 字段 为 商品ecs_goods表中添加 cost 字段将字段添加到 goods_id
ecshop商品标签的作用介绍
今天为大家详细解说一下ECSHOP商品标签添加设置。一、ECSHOP商品标签对于网店管理员来讲:二、对于用户来讲
删除ecshop顶部标题栏"Powered by Ecshop"的方法
ECSHOP2.7.2 本来是个不错的网店程序,但由于版权多出加密,有些需要去除版权的朋友会碰到一些困难,本人特整理分享新版ecshop去处版权方法给大家分享:
ecshop商城301重定向方法
页面移走(301重定向)是一种非常重要的“自动转向”技术。网址重定向最为可行的一种办法。当用户或搜索引擎向网站服务器发出浏览请求时
相关源码
-
pbootcms模板(PC+WAP)微信小程序开发公司网站本模板为微信小程序开发代理、软件开发公司等企业设计,基于PbootCMS内核开发,支持PC+WAP双端响应式布局,数据实时同步,适用于多行业快速建站。查看源码 -
(自适应)绿色LED灯具照明灯饰灯光灯泡pbootcms网站源码下载本模板基于PbootCMS内核开发,为LED照明、灯具制造及相关光电技术企业量身打造。设计充分考虑了照明行业的展示需求,从产品陈列到技术说明,从光源展示到工程案例,每一个细节都体现出专业照明行业的特点。查看源码 -
(PC+WAP)红色家装设计智能家居家具建材pbootcms网站源码下载本模板基于PbootCMS系统开发,为智能家居、家装设计及家具建材行业设计。采用现代化布局风格,突出家居设计行业特色,适合展示各类家居产品、设计方案和建材信息。查看源码 -
自适应html5二极管LED灯具灯饰类企业网网站模板该PbootCMS内核开发的响应式模板专为LED照明、灯具制造类企业设计,通过HTML5技术实现手机与PC端自适应显示,确保跨设备访问体验一致。企业可快速替换图文内容适配其他工业领域查看源码 -
(自适应响应式)pbootcms紫色美容整形机构企业模板下载基于PbootCMS内核开发的响应式网站模板,为医疗美容机构、整形医院等企业设计,提供完整的线上展示平台采用紫色系配色方案,整体风格专业大气。模板包含首页轮播、服务项目、专家团队、案例展示等核心模块,能够充分展示医疗美容机构的专业服务和特色优势。查看源码 -
(自适应响应式)HTML5建筑工程公司建筑集团网站模板下载基于PbootCMS内核开发的响应式建筑行业网站模板,为建筑工程公司、建筑集团等企业打造,通过简洁大气的设计风格展现企业专业形象。查看源码
| 分享笔记 (共有 篇笔记) |
