memberParentOfMemberJob.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: dingran
  5. * Date: 2018/10/22
  6. * Time: 下午3:50
  7. */
  8. namespace app\Jobs;
  9. use app\backend\modules\member\models\Member;
  10. use app\common\models\member\ChildrenOfMember;
  11. use app\common\models\member\ParentOfMember;
  12. use Illuminate\Bus\Queueable;
  13. use Illuminate\Contracts\Queue\ShouldQueue;
  14. use Illuminate\Queue\InteractsWithQueue;
  15. use Illuminate\Queue\SerializesModels;
  16. class memberParentOfMemberJob implements ShouldQueue
  17. {
  18. use InteractsWithQueue, Queueable, SerializesModels;
  19. private $uniacid;
  20. private $member_info;
  21. public $memberModel;
  22. public $childMemberModel;
  23. public $pageSize;
  24. public $offset;
  25. public function __construct($uniacid, $pageSize, $offset)
  26. {
  27. $this->queue = 'statistics';
  28. $this->uniacid = $uniacid;
  29. $this->pageSize = $pageSize;
  30. $this->offset = $offset;
  31. }
  32. public function handle()
  33. {
  34. \Log::debug('-----queue uniacid-----', $this->uniacid);
  35. return $this->synRun($this->uniacid);
  36. }
  37. /**
  38. * @param $uniacid
  39. */
  40. public function synRun($uniacid)
  41. {
  42. ini_set("memory_limit","-1");
  43. $parentMemberModle = new ParentOfMember();
  44. $childMemberModel = new ChildrenOfMember();
  45. $memberModel = new Member();
  46. $memberModel->_allNodes = collect([]);
  47. $memberInfo = $memberModel->getTreeAllNodes($uniacid);
  48. if ($memberInfo->isEmpty()) {
  49. \Log::debug('----is empty-----');
  50. return;
  51. }
  52. foreach ($memberInfo as $item) {
  53. $memberModel->_allNodes->put($item->member_id, $item);
  54. }
  55. $this->member_info = Member::getAllMembersInfosByQueue($uniacid, $this->pageSize,
  56. $this->offset)->distinct()->get();
  57. \Log::debug('------queue member count-----', $this->member_info->count());
  58. if (!$this->member_info->isEmpty()) {
  59. \Log::debug('-----queue member empty-----');
  60. }
  61. \Log::debug('--------queue synRun -----');
  62. foreach ($this->member_info as $key => $val) {
  63. $attr = [];
  64. $child_attr = [];
  65. \Log::debug('--------foreach start------', $val->member_id);
  66. $memberModel->filter = [];
  67. $data = $memberModel->getNodeParents($uniacid, $val->member_id);
  68. if (!$data->isEmpty()) {
  69. \Log::debug('--------insert init------');
  70. foreach ($data as $k => $v) {
  71. if ($k != $val->member_id) {
  72. $attr[] = [
  73. 'uniacid' => $uniacid,
  74. 'parent_id' => $k,
  75. 'level' => $v['depth'] + 1,
  76. 'member_id' => $val->member_id,
  77. 'created_at' => time()
  78. ];
  79. $child_attr[] = [
  80. 'uniacid' => $uniacid,
  81. 'child_id' => $val->member_id,
  82. 'level' => $v['depth'] + 1,
  83. 'member_id' => $k,
  84. 'created_at' => time()
  85. ];
  86. } else {
  87. file_put_contents(storage_path("logs/" . date('Y-m-d') . "_batchparent.log"),
  88. print_r([$val->member_id, $v, 'insert'], 1), FILE_APPEND);
  89. }
  90. }
  91. $parentMemberModle->createData($attr);
  92. $childMemberModel->createData($child_attr);
  93. }
  94. }
  95. }
  96. }