WaterDeviceController.php 1003 B

12345678910111213141516171819202122232425
  1. <?php
  2. declare(strict_types=1);
  3. namespace app\controller;
  4. use app\service\water\DeviceIngress;
  5. use plugin\saiadmin\exception\ApiException;
  6. use support\Request;
  7. use support\Response;
  8. final class WaterDeviceController
  9. {
  10. public function report(Request $request): Response
  11. {
  12. try {
  13. $data = (new DeviceIngress())->http($request->rawBody(),(string)$request->header('authorization',''),$request->header());
  14. return json(['code'=>200,'message'=>'设备报告已处理','data'=>$data]);
  15. } catch (ApiException $e) {
  16. $status = $e->getCode() >= 400 && $e->getCode() <= 599 ? $e->getCode() : 422;
  17. return json(['code'=>$status,'message'=>$e->getMessage(),'data'=>null])->withStatus($status);
  18. } catch (\Throwable $e) {
  19. \support\Log::error('Water device HTTP report failed.', ['type'=>get_class($e)]);
  20. return json(['code'=>500,'message'=>'设备报告处理失败','data'=>null])->withStatus(500);
  21. }
  22. }
  23. }