| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?php
- namespace app\queue\redis;
- use app\extra\dyLife\data\BaseData;
- use app\model\saas\SaasStore;
- use Webman\RedisQueue\Consumer;
- class SyncStore implements Consumer
- {
- /**
- * 消费队列名
- * @var string
- */
- public string $queue = "sync-store";
- /**
- * 连接配置
- * @var string
- */
- public string $connection = "default";
- public function consume($data): bool
- {
- $page = 1;
- $hasMore = true;
- $mode = (new SaasStore);
- while ($hasMore) {
- $result = (new BaseData)->config(['appid' => $data['appid'],'secret' => $data['secret']])->token()->getStoreData($data['account'],$page,2);
- if (empty($result)) {
- $hasMore = false;
- break;
- }
- $totalPage = ceil($result['total'] / 2);
- if ($page >= $totalPage) {
- $hasMore = false;
- }
- foreach ($result['pois'] as $key=>$val) {
- $poi = $mode->where("poi_id",$val['poi']['poi_id'])->findOrEmpty();
- if ($poi->isEmpty()) {
- $inData = $val['poi'];
- $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);
- if ($amap['status'] == "1" && isset($amap['regeocode']['addressComponent'])) {
- $inData['poi_city'] = "{$amap['regeocode']['addressComponent']['province']}/{$amap['regeocode']['addressComponent']['city']}/{$amap['regeocode']['addressComponent']['district']}";
- }
- $inData['poi_address'] = $val['poi']['address'];
- $inData['poi_account_id'] = $val['account']['poi_account']['account_id'];
- $inData['store_id'] = $val['account']['parent_account']['account_id'];
- echo "写入新数据===".getDateFull()."===".json_encode($inData)."\n";
- $poi->strict(false)->insertGetId($inData);
- }
- }
- echo getDateFull()."-页码:{$page}\n";
- $page ++;
- }
- return true;
- }
- }
|