<?php
namespace app\task\service;
use app\common\service\Basics;
use app\task\model\Order as OrderModel;
use app\task\model\UserCoupon as UserCouponModel;
use app\common\library\helper;
use app\common\service\goods\source\Factory as FactoryStock;
class Order extends Basics
{
private $model;
private $closeOrderIds = [];
public function __construct()
{
$this->model = new OrderModel;
}
public function close($deadlineTime, $where = [])
{
$filter = array_merge($where, [
'pay_status' => 10,
'order_status' => 10,
'create_time' => ['<=', $deadlineTime]
]);
$list = $this->model->getList($filter, ['goods', 'user']);
$this->closeOrderIds = helper::getArrayColumn($list, 'order_id');
if (!empty($this->closeOrderIds)) {
foreach ($list as &$order) {
FactoryStock::getFactory($order['order_source'])->backGoodsStock($order['goods'], false);
$order['coupon_id'] > 0 && UserCouponModel::setIsUse($order['coupon_id'], false);
$describe = "订单取消:{$order['order_no']}";
$order['points_num'] > 0 && $order->user->setIncPoints($order['points_num'], $describe);
}
return $this->model->onBatchUpdate($this->closeOrderIds, ['order_status' => 20]);
}
return true;
}
public function getCloseOrderIds()
{
return $this->closeOrderIds;
}
}