搜索
首页CMS教程ECShopecshop实现后台订单自动确认开发方法

ecshop教程栏目介绍实现后台订单自动确认开发方法

ecshop实现后台订单自动确认开发方法

推荐(免费):ecshop教程

711ee6d91cabd313498025fd75683eb.png

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}后面加入:

43a3a0ce92a697e49317c2baf9738f2.png

在此页面的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实现后台订单自动确认开发方法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:简书。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版