相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動到新位置)
- dirname(__FILE__)的含義和應(yīng)用說明
- thinkPHP5框架實(shí)現(xiàn)分頁查詢功能的方法示例
- PHP中單雙號與變量
- PHP獲得當(dāng)日零點(diǎn)時間戳的方法分析
- Laravel ORM對Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時進(jìn)度條顯示的實(shí)現(xiàn)
ECSHOP自動收貨解決方案 【附代碼】
ecshop系統(tǒng),本身不帶自動確認(rèn)收貨的,網(wǎng)上也找了一下,很多很復(fù)雜,且需要在服務(wù)器端設(shè)置定時任務(wù),如果是虛擬主機(jī),基本上就歇菜了。
某寶有一些賣自動收貨的插件,不太了解其機(jī)制,不過也比較貴,要1-200一個。沒辦法,就自己開發(fā)吧。以下為解決方案。
解決思路:
跟淘寶的類似,默認(rèn)設(shè)置7天后還沒有自動確認(rèn)收貨,那么就會系統(tǒng)強(qiáng)制確認(rèn)收貨。只不過這個強(qiáng)制確認(rèn)收貨,沒有在系統(tǒng)里設(shè)置常駐內(nèi)存的程序,也沒有設(shè)置系統(tǒng)自動任務(wù),為變通的方案。設(shè)定為用戶在登錄成功后,進(jìn)入用戶中心頁面,就會掃描自己名下,有沒有超過7天還未確認(rèn)收貨的訂單,如果有,則啟動確認(rèn)收貨程序。沒有,則跳過。
方案說明:
1、這個強(qiáng)制確認(rèn)收貨,其實(shí)不是完整版的強(qiáng)制確認(rèn)收貨,不一定是到了15天系統(tǒng)就自動確認(rèn)收貨了,而是在下一次用戶登錄的時候檢索是否有超時的訂單,所以,這個自動確認(rèn)收貨的時間,其實(shí)不一定是準(zhǔn)確的。只不過不需要用戶再主動點(diǎn)一下;
2、本來有考慮到在網(wǎng)站首頁或者其他頁面嵌入一個觸發(fā)點(diǎn),然后啟動自動確認(rèn)收貨程序,但是考慮到,如果系統(tǒng)用戶比較多(或者訂單比較多),這個遍歷的過程可能就會比較長了,系統(tǒng)開銷大,也可能頁面超時,所以就弄的這個變通方案。
3、ECSHOP有一個計(jì)劃任務(wù)的功能,但是之前沒有用過,再次優(yōu)化的方案,可以寫一個程序,然后開啟計(jì)劃任務(wù),這樣也可用滿足要求。
所以,這個是不圓滿版的解決方案,只是修改起來比較簡單,菜鳥都會,另外因?yàn)槭怯脩舻卿浻|發(fā)的,所以對系統(tǒng)資源占用不高,所以,有需要的童鞋可以拿去。
搜索“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'] == '已確認(rèn),已付款,已發(fā)貨'){ //此條件下的為未確認(rèn)收貨的訂單,開始啟動自動收貨程序 $ord['order_time'] = strtotime($ord['order_time']); $thistime = time(); if($thistime>($ord['order_time']+86400*7)){//如果訂單日期往后7天大于當(dāng)前時間 則表示有超時未確認(rèn)的訂單 affirm_received($ord['order_id'], $user_id);//強(qiáng)制確認(rèn)收貨 } } }
程序affirm_received即為確認(rèn)收貨程序。