123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- namespace App\Crontab;
- use EasySwoole\Crontab\JobInterface;
- use App\Com\SmtpSend;
- use EasySwoole\EasySwoole\Config;
- use App\Models\WarningBody;
- use EasySwoole\Mysqli\QueryBuilder;
- use EasySwoole\ORM\DbManager;
- use EasySwoole\EasySwoole\Logger;
- class ElasticSearchGoodsCrontab implements JobInterface
- {
- public function jobName(): string
- {
-
- return 'ElasticSearchGoodsCrontab';
- }
- public function crontabRule(): string
- {
-
-
- return '*/10 * * * *';
- }
- public function run()
- {
-
- $welfare_api_set = Config::getInstance()->getConf('WELFARE_API');
- $page = 1;
- while (true) {
- $goods = $this->getUpdateGoods($page);
- if (!$goods) {
- break;
- } else {
- $page++;
- }
- foreach($goods as $key=>$value){
- $res = $this->http_request(
- $welfare_api_set['url'],
- ['goodsid'=>$value['id'],'goods_body'=>json_encode($value)]
- );
-
- Logger::getInstance()->notice("商品ID{$value['id']}导入结果:{$res}\n");
- }
- }
- }
-
- protected function getUpdateGoods($page = 1)
- {
- $size = 50;
- $offset = ($page - 1) * $size;
- $where = ' g.`updatetime`>'.(time()-1800);
- $que_sql = "SELECT * FROM ims_superdesk_shop_goods g
- WHERE {$where}
- LIMIT {$offset},{$size}
- ";
- $queryBuild = new QueryBuilder();
- $queryBuild->raw($que_sql);
- $res_data = DbManager::getInstance()->query($queryBuild, true, 'default')->toArray();
- return $res_data['result'];
- }
-
- protected function http_request($url,$data){
- $opts = array(
- 'http' => array(
- 'method' => 'POST',
- 'header' => "Content-type:application/x-www-form-urlencoded",
- 'content' => http_build_query($data),
- )
- );
- $context = stream_context_create($opts);
- $response = file_get_contents($url,false,$context);
- return $response;
- }
- public function onException(\Throwable $throwable)
- {
-
- }
- }
|