DataSyncService.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Service;
  3. use Hyperf\DbConnection\Db;
  4. use Hyperf\Elasticsearch\ClientBuilderFactory;
  5. use Elasticsearch\Client;
  6. class DataSyncService
  7. {
  8. protected $client;
  9. public function __construct(ClientBuilderFactory $clientBuilderFactory)
  10. {
  11. $this->client = $clientBuilderFactory->create();
  12. }
  13. public function syncArticles()
  14. {
  15. $articles = Db::table('article')->get();
  16. $articleData = Db::table('article_data')->get();
  17. foreach ($articles as $article) {
  18. $data = $articleData->firstWhere('article_id', $article->id);
  19. if ($data) {
  20. $params = [
  21. 'index' => 'articles',
  22. 'id' => $article->id,
  23. 'body' => [
  24. 'id' => $article->id,
  25. 'catid' => $article->catid,
  26. 'level' => $article->level,
  27. 'title' => $article->title,
  28. 'introduce' => $article->introduce,
  29. 'tag' => $article->tag,
  30. 'keyword' => $article->keyword,
  31. 'author' => $article->author,
  32. 'copyfrom' => $article->copyfrom,
  33. 'fromurl' => $article->fromurl,
  34. 'hits' => $article->hits,
  35. 'ip' => $article->ip,
  36. 'status' => $article->status,
  37. 'islink' => $article->islink,
  38. 'linkurl' => $article->linkurl,
  39. 'imgurl' => $article->imgurl,
  40. 'admin_user_id' => $article->admin_user_id,
  41. 'cat_arr_id' => $article->cat_arr_id,
  42. 'created_at' => $article->created_at,
  43. 'updated_at' => $article->updated_at,
  44. 'is_original' => $article->is_original,
  45. 'content' => $data->content,
  46. ],
  47. ];
  48. try {
  49. $this->client->index($params);
  50. } catch (\Exception $e) {
  51. // 记录日志或处理异常
  52. // \Hyperf\Utils\LoggerFactory::getInstance()->error($e->getMessage());
  53. }
  54. }
  55. }
  56. }
  57. }