問(wèn)題:多商戶自動(dòng)確認(rèn)收貨后發(fā)送短信問(wèn)題,會(huì)導(dǎo)致以前的舊數(shù)據(jù)也會(huì)發(fā)送短信,造成短信損失以及對(duì)客戶造成騷擾,針對(duì)此問(wèn)題做出一下優(yōu)化調(diào)整;
一、修改邏輯:
調(diào)整自動(dòng)確認(rèn)收貨功能處理的訂單時(shí)間范圍為,發(fā)貨的前15天即:
/**
* 設(shè)置自動(dòng)確認(rèn)收獲的時(shí)間默認(rèn)為 15
* 查詢確認(rèn)收貨 15 天前發(fā)貨,再向前查詢15天;
* 超過(guò)這個(gè)時(shí)間未處理的訂單將不做處理,
* 比如:發(fā)貨時(shí)間 10-1 ; 自動(dòng)確認(rèn)時(shí)間:15天,當(dāng)10-15日查詢的范圍:9-15 ~ 10-15 期間未處理訂單,9-15日以前訂單不做處理
*/
二、具體代碼修改
1. 修改監(jiān)聽文件 :crmeb\listens\AuthTakeOrderListen.php
$timer = ((int)systemConfig('auto_take_order_timer')) ?: 15;
$end = date('Y-m-d H:i:s', strtotime("- $timer day"));
$start = date('Y-m-d H:i:s', strtotime("- 15 day",strtotime($end)));
$ids = app()->make(StoreOrderStatusRepository::class)->getTimeoutDeliveryOrder($start,$end);
2. 修改:app\common\dao\store\order\StoreOrderStatusDao.php
public function getTimeoutDeliveryOrder($start,$end){
return StoreOrderStatus::getDB()->alias('A')->leftJoin('StoreOrder B', 'A.order_id = B.order_id')
->whereIn('A.change_type', ['delivery_0', 'delivery_1','delivery_2'])
->where('A.type','order')
->whereBetweenTime('A.change_time',$start,$end)
->where('B.paid', 1)->where('B.status', 1)
->column('A.order_id');
}
修改完畢后,重啟swoole服務(wù)即可。