SyncStore.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. $inData['product_type'] = json_encode([]);
  45. echo "写入新数据===".getDateFull()."===".json_encode($inData)."\n";
  46. $poi->strict(false)->insertGetId($inData);
  47. }
  48. }
  49. echo getDateFull()."-页码:{$page}\n";
  50. $page ++;
  51. }
  52. return true;
  53. }
  54. }