问题:多商户自动确认收货后发送短信问题,会导致以前的旧数据也会发送短信,造成短信损失以及对客户造成骚扰,针对此问题做出一下优化调整;
一、修改逻辑:
调整自动确认收货功能处理的订单时间范围为,发货的前15天即:
/**
* 设置自动确认收获的时间默认为 15
* 查询确认收货 15 天前发货,再向前查询15天;
* 超过这个时间未处理的订单将不做处理,
* 比如:发货时间 10-1 ; 自动确认时间:15天,当10-15日查询的范围:9-15 ~ 10-15 期间未处理订单,9-15日以前订单不做处理
*/
二、具体代码修改
1. 修改监听文件 :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服务即可。
{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}
作者 管理员 企业
{{itemf.name}}
{{itemc.user_info.nickname}}
{{itemc.user_name}}
回复 {{itemc.comment_user_info.nickname}}
{{itemf.name}}