You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.5 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. <?php
  2. namespace App\Service\v3\Implementations;
  3. use App\Model\v3\Market;
  4. use App\Model\v3\OrderMain;
  5. use Hyperf\Di\Annotation\Inject;
  6. use App\Service\v3\Interfaces\HorsemanServiceInterface;
  7. use Hyperf\Utils\ApplicationContext;
  8. use App\Constants\v3\SsdbKeys;
  9. use App\TaskWorker\SSDBTask;
  10. use App\Constants\v3\ErrorCode;
  11. use App\Exception\ErrorCodeException;
  12. class HorsemanService implements HorsemanServiceInterface
  13. {
  14. public function do()
  15. {
  16. // TODO: Implement do() method.
  17. }
  18. public function check()
  19. {
  20. // TODO: Implement check() method.
  21. }
  22. public function undo()
  23. {
  24. // TODO: Implement undo() method.
  25. }
  26. public function getOrderList()
  27. {
  28. return OrderMain::query()->where('state',3)->limit(5)->get();
  29. }
  30. /**
  31. * 记录骑手坐标
  32. */
  33. public function setHorsemanCoordinate($employeesId,$coordinate){
  34. $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class);
  35. if(false === $ssdb->exec('set', SsdbKeys::HORSEMAN_COORDINATE.$employeesId,$coordinate)) {
  36. return false;
  37. }
  38. return true;
  39. }
  40. /**
  41. * 获取骑手坐标
  42. */
  43. public function getHorsemanCoordinate($employeesId){
  44. $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class);
  45. $params = $ssdb->exec('get', SsdbKeys::HORSEMAN_COORDINATE.$employeesId);
  46. if ((false === $params) || empty($params)) {
  47. throw new ErrorCodeException(ErrorCode::HORSEMAN_COORDINATE_FAIL, '获取骑手坐标失败');
  48. }
  49. return $params;
  50. }
  51. /**
  52. * 获取订单起止坐标
  53. */
  54. public function getOrderCoordinate($globalOrderId){
  55. //获取订单信息
  56. $order = OrderMain::where('global_order_id',$globalOrderId)
  57. ->select(
  58. 'lat as origi_lat',
  59. 'lng as origi_lng',
  60. 'state',
  61. 'market_id'
  62. )
  63. ->first();
  64. if($order->state != 3)
  65. {
  66. return false;
  67. }
  68. //获取市场信息
  69. $market = Market::where('id',$order->market_id)
  70. ->select(
  71. 'lat as destination_lat',
  72. 'lng as destination_lng'
  73. )
  74. ->first();
  75. $res = [
  76. 'origi_lat' => $order->origi_lat,
  77. 'origi_lng' => $order->origi_lng,
  78. 'destination_lat' => $market->destination_lat,
  79. 'destination_lng' => $market->destination_lng
  80. ];
  81. return $res;
  82. }
  83. }