where('number', $no)->when($type, function (Model $query, $type) { $query->where('type', $type); })->findOrEmpty(); if (!$entity->isEmpty() && ($entity->is_sign == 1 || $entity->update_time > time() - 3600)) { // 已签收或一小时内更新过,直接返回 return $entity->toArray(); } // 一个人一天最多查询100次 $name = 'wuliu_' . date('Ymd') . '_' . $userID; $times = Cache::remember($name, function () use ($name) { return Cache::get($name, 0) + 1; }, 86400); if ($times > 100) { throw_logic_exception('查询太过频繁,请明天再试'); } $result = WuLiuClient::kdi($no, $type); $entity->number = $result->number; $entity->type = $result->type; $entity->list = $result->list; $entity->delivery_status = $result->deliverystatus; $entity->is_sign = $result->issign; $entity->exp_name = $result->expName; $entity->exp_site = $result->expSite; $entity->exp_phone = $result->expPhone; $entity->courier = $result->courier; $entity->courier_phone = $result->courierPhone; $entity->take_time = $result->takeTime; $entity->save(); return $entity->toArray(); } }