InTransitAction.php 689 B

1234567891011121314151617181920212223
  1. <?php
  2. declare(strict_types=1);
  3. namespace app\miniapi\service\driver;
  4. use app\miniapi\exception\ApiException;
  5. use plugin\saiadmin\app\model\water\WaterDelivery;
  6. /** Template method: every on-site action shares the same state precondition. */
  7. abstract class InTransitAction implements TaskAction
  8. {
  9. final public function execute(WaterDelivery $task, array $input, int $user): array
  10. {
  11. if ($task->status !== 'transit') {
  12. throw new ApiException(40902, '仅配送中的任务允许此操作', 409);
  13. }
  14. return $this->handle($task, $input, $user);
  15. }
  16. abstract protected function handle(WaterDelivery $task, array $input, int $user): array;
  17. }