// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\console\task; use app\console\service\Order as OrderService; use app\common\model\Order as OrderModel; /** * 定时任务:自提订单超时未核销系统退款 * Class PickupOrderRefund * @package app\console\task */ class PickupOrderRefund extends Task { // 当前任务唯一标识 private $taskKey = 'PickupOrderRefund'; // 任务执行间隔时长 (单位:秒) protected $taskExpire = 30; // 当前商城ID private $storeId; /** * 任务处理 * @param array $param * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function handle(array $param) { // log_record([ // 'name' => '超时未自提订单自动退款', // 'data' => 1111 // ]); ['storeId' => $this->storeId] = $param; $this->setInterval($this->storeId, $this->taskKey, $this->taskExpire, function () { // echo $this->taskKey . PHP_EOL; $this->refundPickupEvent(); }); } /** * 超时未自提订单自动退款 */ private function refundPickupEvent() { // log_record([ // 'name' => '超时未自提订单自动退款', // 'data' => '222' // ]); // 自动关闭自提订单的分钟数 $closeMinutes = OrderModel::getPickupDeadline(); // 提交订单2天后 log_record([ 'name' => '超时未自提订单自动退款', 'data' => $closeMinutes ]); // 执行自动关闭 if ($closeMinutes > 0) { $service = new OrderService; $service->refundPickupEvent($this->storeId, $closeMinutes); } } }