SyncStore.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace app\queue\redis;
  3. use app\extra\dyLife\data\BaseData;
  4. use app\model\saas\SaasStore;
  5. use Webman\RedisQueue\Consumer;
  6. class SyncStore implements Consumer
  7. {
  8. /**
  9. * 消费队列名
  10. * @var string
  11. */
  12. public string $queue = "sync-store";
  13. /**
  14. * 连接配置
  15. * @var string
  16. */
  17. public string $connection = "default";
  18. public function consume($data): bool
  19. {
  20. $page = 1;
  21. $hasMore = true;
  22. $mode = (new SaasStore);
  23. while ($hasMore) {
  24. $result = (new BaseData)->config(['appid' => $data['appid'],'secret' => $data['secret']])->token()->getStoreData($data['account'],$page,2);
  25. if (empty($result)) {
  26. $hasMore = false;
  27. break;
  28. }
  29. $totalPage = ceil($result['total'] / 2);
  30. if ($page >= $totalPage) {
  31. $hasMore = false;
  32. }
  33. foreach ($result['pois'] as $key=>$val) {
  34. $poi = $mode->where("poi_id",$val['poi']['poi_id'])->findOrEmpty();
  35. if ($poi->isEmpty()) {
  36. $inData = $val['poi'];
  37. $amap = json_decode(file_get_contents("https://restapi.amap.com/v3/geocode/regeo?output=json&location={$val['poi']['longitude']},{$val['poi']['latitude']}&key=1f677969233c2e0b5770bf1752254a57"),true);
  38. if ($amap['status'] == "1" && isset($amap['regeocode']['addressComponent'])) {
  39. $inData['poi_city'] = "{$amap['regeocode']['addressComponent']['province']}/{$amap['regeocode']['addressComponent']['city']}/{$amap['regeocode']['addressComponent']['district']}";
  40. }
  41. $inData['poi_address'] = $val['poi']['address'];
  42. $inData['poi_account_id'] = $val['account']['poi_account']['account_id'];
  43. $inData['store_id'] = $val['account']['parent_account']['account_id'];
  44. echo "写入新数据===".getDateFull()."===".json_encode($inData)."\n";
  45. $poi->strict(false)->insertGetId($inData);
  46. }
  47. }
  48. echo getDateFull()."-页码:{$page}\n";
  49. $page ++;
  50. }
  51. return true;
  52. }
  53. }