<?php
namespace app\task\behavior;
use think\Cache;
use app\task\model\Order as OrderModel;
use app\task\model\dealer\Order as DealerOrderModel;
class DealerOrder
{
private $model;
public function run($model)
{
if (!$model instanceof DealerOrderModel) {
return new DealerOrderModel and false;
}
$this->model = $model;
if (!Cache::has('__task_space__DealerOrder')) {
$this->model->startTrans();
try {
$this->grantMoney();
$this->model->commit();
} catch (\Exception $e) {
$this->model->rollback();
}
Cache::set('__task_space__DealerOrder', time(), 3600);
}
return true;
}
private function grantMoney()
{
$list = $this->model->getUnSettledList();
if ($list->isEmpty()) return false;
$invalidIds = [];
$grantIds = [];
foreach ($list->toArray() as $item) {
if ($item['order_master']['order_status']['value'] == 20) {
$invalidIds[] = $item['id'];
}
if ($item['order_master']['order_status']['value'] == 30) {
$grantIds[] = $item['id'];
DealerOrderModel::grantMoney($item['order_master'], $item['order_type']['value']);
}
}
$this->model->setInvalid($invalidIds);
$this->dologs('invalidIds', ['Ids' => $invalidIds]);
$this->dologs('grantMoney', ['Ids' => $grantIds]);
return true;
}
private function dologs($method, $params = [])
{
$value = 'behavior DealerOrder --' . $method;
foreach ($params as $key => $val) {
$value .= ' --' . $key . ' ' . (is_array($val) ? json_encode($val) : $val);
}
return log_write($value);
}
}