浏览代码

feed分表

wzq 5 年之前
父节点
当前提交
dc33515b06
共有 1 个文件被更改,包括 11 次插入9 次删除
  1. 11 9
      app/Repositories/FeedRepositories.php

+ 11 - 9
app/Repositories/FeedRepositories.php

@@ -10,9 +10,9 @@ namespace App\Repositories;
 
 
 use App\Models\Behavior;
-use App\Models\Feed;
 use App\Models\PostComment;
 use Carbon\Carbon;
+use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Facades\Redis;
 use Tymon\JWTAuth\Facades\JWTAuth;
@@ -25,9 +25,8 @@ class FeedRepositories
 {
     use UserTrait;
 
-    public function __construct(Feed $feed, PostRepositories $postRepositories, PostComment $postComment)
+    public function __construct(PostRepositories $postRepositories, PostComment $postComment)
     {
-        $this->feed = $feed;
         $this->postRepositories = $postRepositories;
         $this->postComment = $postComment;
     }
@@ -78,6 +77,7 @@ class FeedRepositories
         if ($feedType) {
             $data = [];
             foreach ($fans as $fan) {
+                $number = substr($fan, -1);
                 $data['uid'] = $fan;
                 $data['follow_uid'] = $request['target_id'];
                 $data['follow_username'] = $request['target_username'];
@@ -111,20 +111,20 @@ class FeedRepositories
                 Log::debug('创建Feed流-data:' . json_encode($data));
                 //目前只有评论可以重复出现在别人的feed流中,其他类型如果出现过一次不再产生新的feed信息
                 if (in_array($feedType, [4])) {
-                    $this->feed->insert($data);
+                    DB::table('feed_'.$number)->insert($data);
                 } else {
                     //此处需要优化,如果feed表需要清理历史数据怎么处理
                     //以下判断可以控制virus的行为,重复不添加feed,但是关注用户不行,关注用户不存在is_existing字段
                     //if (isset($request['is_existing']) && intval($request['is_existing']) == 0) {
-                    //    $this->feed->insert($data);
+                    //    DB::table('feed_'.$number)->insert($data);
                     //}
-                    $feedRow = $this->feed->where('uid',$data['uid'])
+                    $feedRow = DB::table('feed_'.$number)->where('uid',$data['uid'])
                         ->where('follow_uid',$data['follow_uid'])
                         ->where('type',$data['type'])
                         ->where('relate_id',$data['relate_id'])
                         ->first();
                     if(empty($feedRow)){
-                        $this->feed->insert($data);
+                        DB::table('feed_'.$number)->insert($data);
                     }
                 }
 
@@ -142,7 +142,8 @@ class FeedRepositories
         }
         $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
         $where[] = ['uid', $userInfo['uid']];
-        $data = $this->feed
+        $number = substr($userInfo['uid'], -1);
+        $data = DB::table('feed_'.$number)
             ->where($where)
             ->orderBy('id', 'desc')
             ->paginate($perPage);
@@ -248,8 +249,9 @@ class FeedRepositories
      */
     public function contentFeedDelete($data)
     {
+        $number = substr($data['uid'], -1);
         try {
-            $this->feed->where('uid', $data['uid'])->where('follow_uid', $data['follow_uid'])->delete();
+            DB::table('feed_'.$number)->where('uid', $data['uid'])->where('follow_uid', $data['follow_uid'])->delete();
             Log::debug("取消关注删除对应feed成功uid{$data['uid']}followUid{$data['follow_uid']}");
         } catch (\Exception $exception) {
             Log::error('取消关注删除对应feed失败' . json_encode($data) . $exception->getMessage());