千家信息网

如何实现ecshop后台订单自动确认功能

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章将为大家详细讲解有关如何实现ecshop后台订单自动确认功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ecshop栏目介绍ecshop后台订单自动确认开
千家信息网最后更新 2025年12月01日如何实现ecshop后台订单自动确认功能

这篇文章将为大家详细讲解有关如何实现ecshop后台订单自动确认功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

ecshop栏目介绍ecshop后台订单自动确认开发

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已经确定',`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;

一、
/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 '.$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 ".$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 '.$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 '.$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');    /* 描述对应的语言项 */$modules[$i]['desc']    = 'order_auto_confirm_desc';    /* 作者 */$modules[$i]['author']  = 'wjzhhr';    /* 网址 */$modules[$i]['website'] = 'http://www.wodeqingchun.com';    /* 版本号 */$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'];/* 标记订单为已确认 */$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//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 已被确认';$_LANG['order_auto_cron']   = '此订单于 %s 进行定时确认';$_LANG['order_auto']        = '将此订单加入自动定时确认';$_LANG['order_auto_time']   = '自动确认时间:';

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

在此页面的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;}

还有/themes/default/footer.dwt里是否含有:
{insert name='query_info'}
这一句,比较重要,前人把这句去掉了,害最模板到处找原因。共涉及5个文件,两个新添加的

关于"如何实现ecshop后台订单自动确认功能"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

订单 任务 后台 信息 库存 时间 状态 篇文章 更新 功能 成功 代码 更多 金额 单于 里加 不错 实用 重要 不用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 光纤报警数据采集服务器 web软件开发面试自我介绍 微信收款服务器为什么老断开 网络安全信息化责任分工 网络技术对教育的利弊 方舟服务器模组玩家怎么删 moba连接服务器超时 湛江自主可控软件开发优化价格 自动投注挂机软件开发 lol进游戏无法连接服务器 软件开发服务业需要结转成本吗 甘肃省村庄规划数据库建设标准 一般写入数据库怎么写代码 mysql备份数据库到另外 西子奥蒂斯服务器no110ac 上海大数据网络技术咨询机构 服务器站群系统机房 进销存软件开发论坛 华三网络安全考试费 盐城营销软件开发哪家好 广州智能照明软件开发定制 怎么看服务器linux重启了没 一般写入数据库怎么写代码 小刀网络技术有限公司 关系数据库四个范式举例 行政部门网络安全 用云服务器挂机安全吗 软件开发pgm是什么的缩写 网络安全文明上网直播 联想服务器规格
0