ECSHOP自动收货解决方案 【附代码】

  ecshop系统,本身不带自动确认收货的,网上也找了一下,很多很复杂,且需要在服务器端设置定时任务,如果是虚拟主机,基本上就歇菜了。

  某宝有一些卖自动收货的插件,不太了解其机制,不过也比较贵,要1-200一个。没办法,就自己开发吧。以下为解决方案。

解决思路:

  跟淘宝的类似,默认设置7天后还没有自动确认收货,那么就会系统强制确认收货。只不过这个强制确认收货,没有在系统里设置常驻内存的程序,也没有设置系统自动任务,为变通的方案。设定为用户在登录成功后,进入用户中心页面,就会扫描自己名下,有没有超过7天还未确认收货的订单,如果有,则启动确认收货程序。没有,则跳过。

方案说明:

  1、这个强制确认收货,其实不是完整版的强制确认收货,不一定是到了15天系统就自动确认收货了,而是在下一次用户登录的时候检索是否有超时的订单,所以,这个自动确认收货的时间,其实不一定是准确的。只不过不需要用户再主动点一下;

  2、本来有考虑到在网站首页或者其他页面嵌入一个触发点,然后启动自动确认收货程序,但是考虑到,如果系统用户比较多(或者订单比较多),这个遍历的过程可能就会比较长了,系统开销大,也可能页面超时,所以就弄的这个变通方案。

  3、ECSHOP有一个计划任务的功能,但是之前没有用过,再次优化的方案,可以写一个程序,然后开启计划任务,这样也可用满足要求。

  所以,这个是不圆满版的解决方案,只是修改起来比较简单,菜鸟都会,另外因为是用户登录触发的,所以对系统资源占用不高,所以,有需要的童鞋可以拿去。

搜索“if ($action == ‘default‘)”,然后在“$info = get_user_default($user_id);”后面,插入以下代码即可

$orders = get_user_orders($user_id,1000,0);
foreach($orders as $ord){
  if($ord[‘order_status_flg‘]==5 && $ord[‘order_status‘] == ‘已确认,已付款,已发货‘){
    //此条件下的为未确认收货的订单,开始启动自动收货程序
    $ord[‘order_time‘] = strtotime($ord[‘order_time‘]);
    $thistime = time();
    if($thistime>($ord[‘order_time‘]+86400*7)){//如果订单日期往后7天大于当前时间  则表示有超时未确认的订单
    affirm_received($ord[‘order_id‘], $user_id);//强制确认收货
    }
  }
}

程序affirm_received即为确认收货程序。

文章来源:http://www.ledaokj.com/a-wlyx/176/4437.html

时间: 2024-10-11 13:23:41

ECSHOP自动收货解决方案 【附代码】的相关文章

用LabVIEW实现《家国梦》游戏中自动收货收金币

前几周,很流行一个手机游戏,叫<家国梦>.我在手机上玩了一两天后,发现了两个问题: 1. 收货收金币太没意思,只需要手指滑在固定的路线,一会儿就烦了 2. 怎么追赶也追不上手快的人(当然也需要一定策略) 我刚玩这个游戏的时候,还能在好友里排名第一,但三四天后就落到了第三,真是比不过年轻人... 正好最近在研究LabVIEW里面关于Vision的东西,就在想能不能写个自动收货收金币的程序,能够晚上临睡前让程序跑起来,早上起床时候红包就可以收获很多.说干就干! 框架设计 整体思路就是用图像识别的算

关于web开发中订单自动超时和自动收货的简单方法(window server)

最近做一个订单自动超时和自动收货的功能,因为以前是用的mysql 存储过程和定时器来完成,这次的业务逻辑相对复杂用以前的方式就不太合适,本来是准备使用定时执行php脚本来实现的,后来发现业务逻辑中使用THINK PHP 内置方法较多移植不太方便,先解决方式如下: 1.建立bat文件 php D:\web\api.php 2.在api.php中写入 <?php // 最大执行时间这里设置300秒 set_time_limit(0); // 请求一次接口 $data = file_get_conte

ecshop 调用收货地址

html {insert_scripts files='region.js,utils.js'} <script type="text/javascript"> region.isAdmin = false; {foreach from=$lang.flow_js item=item key=key} var {$key} = "{$item}"; {/foreach} {literal} onload = function() { if (!docum

PHP电商订单自动确认收货redis队列

一.场景 之前做的电商平台,用户在收到货之后,大部分都不会主动的点击确认收货,导致给商家结款的时候,商家各种投诉,于是就根据需求,要做一个订单在发货之后的x天自动确认收货.所谓的订单自动确认收货,就是在在特定的时间,执行一条update语句,改变订单的状态. 二.思路 最笨重的做法,通过linux后台定时任务,查询符合条件的订单,然后update.最理想情况下,如果每分钟都有需要update的订单,这种方式也还行.奈何平台太小,以及卖家发货时间大部分也是密集的,不会分散在24小时的每分钟.那么,

微信共享收货地址 edit_address:fail 吐白沫级解决方案

又被微信坑了一整天,看完官方文档怎么测试都不通过,我一直怀疑是新版本微信支付我没有设置“共享收货地址”开关造成的. 后来经过验证,新版本不需要做这件事了. 那么,我没错,是微信的文档没及时更新... 查了几个技术博客得知,这个接口在2016年的年中已经升级了,旧版的那个接口不能使了. 于是那个什么Addrsign就去见鬼了. 真的无力吐槽微信团队的文档水平和工作态度,这一家独大的优越感.. 好了好了,说正事儿: 首先,你得开通微信支付,其次,要在微信公众后台配置个安全域名的URL,设置下微信支付

MM模块采购收货的错误解决方案(1)

仓库发OA过来,说有一票采购订单收货的时候提示红灯错误,截图如下: 双击错误消息,提示该消息是出自于M7429.百度,没有相关资料.问群里,也没人懂. 于是通过/H 来查看代码,断点之后可知出现该错误是在程序 MM07MFB7_BESTELLUNG_UEBERNEH02 里面!! 有此可知到大概情况,系统会检查两个变量,而采购收货的移动类型是101,于是就报这个错误了. 再一次通过断点,可以知道dm07m-weora为X,故而触发此消息,该栏位通过pot表获得,而pot通过EKPO表获得.目前尚

SAP-MM:收货转储时提示 M7053“只能在公司代码 **** 的期间 2014/04 和 2014/03 中记账”

错误信息 消息号M7053 解决方法 Step 1.使用MMPV进入"关闭账期"界面. Step 2.输入"公司代码"."期间"."会计年度"后,执行(F8). Step 3.使用MMRV进入"查看打开的账期"界面,当前期间仍为"2014/04". Step 4.同 Step 1.Step 2 操作,将期间改为 "05". Step 5.同 Step 3 操作,当前期

SAP收货时自动创建采购订单(或106 ,自动建立退货采购订单)

在实际业务中,常常出现到货物料没有订单或订单未批准的现象,按照SAP的标准流程,应该拒绝收货.但在实际业务中,这些物料可能是紧急采购的急件,如不及时处理,将会影响生产计划的安排.对于这种特殊情况,其实SAP有很灵活的处理方式,即由收货自动创建订单.需要说明的是,这种操作方式并不是SAP推荐的,不应在实际业务中大量采用. 具体流程如下: 1.移动类型101已在后台设置为自动创建定单.具体方法是:进入IMG后台,物料管理->库存管理和实际库存->收货->自动创建采购订单,双击进入后,将101

ecshop 收货地址处理,默认,删除

设置位置:ecs_users标的   country字段,默认是0,默认地址是 users_address 的address_id 设置默认收货地址 /** * 设置默认地址 * * @access public * @param integer $id 收货地址id * @return boolean */ function set_default_addr($id) { $uid = $_SESSION['user_id']; $sql = "UPDATE " .$GLOBALS[