Просмотр исходного кода

wesmiler 报恩寺项目提交

wesmiler 4 лет назад
Родитель
Сommit
69b77d4cf4

+ 7 - 1
app/Http/Controllers/Api/v1/DynamicController.php

@@ -37,7 +37,13 @@ class DynamicController extends BaseController
      */
     public function index(){
         $params = request()->all();
-        return $this->service->getDataList($params);
+        $type == isset($params['type'])? $params['type'] : 0;
+        if($type==1){
+            $params['user_id'] = $this->userId;
+            return $this->service->getCollectList($params);
+        }else{
+            return $this->service->getDataList($params);
+        }
     }
 
     /**

+ 8 - 0
app/Http/Controllers/Api/v1/MemberController.php

@@ -99,6 +99,14 @@ class MemberController extends BaseController
     }
 
     /**
+     * 感兴趣的人
+     * @return array
+     */
+    public function recommand(){
+        return $this->service->recommand($this->userId);
+    }
+
+    /**
      * 义工申请信息
      * @return mixed
      */

+ 20 - 0
app/Services/CollectService.php

@@ -11,7 +11,10 @@
 
 namespace App\Services;
 
+use App\Models\ArticleModel;
 use App\Models\CollectModel;
+use App\Models\DynamicModel;
+use App\Models\MemberModel;
 
 /**
  * 收藏管理-服务类
@@ -114,7 +117,24 @@ class CollectService extends BaseService
         if(!in_array($status, [1,2])){
             return message('参数错误', false);
         }
+
         $name = $type==1? '收藏':'关注';
+        if($type == 2){
+            $info = DynamicModel::where(['id'=> $id,'mark'=> 1,'status'=> 1])->select(['id','user_id'])->first();
+            if(!$info){
+                return message("{$name}对象不存在", false);
+            }
+            if($info->user_id == $userId){
+                return message("不能{$name}自己的动态", false);
+            }
+        }else{
+            $info = ArticleModel::where(['id'=> $id,'mark'=> 1,'status'=> 1])->select(['id','user_id'])->first();
+            if(!$info){
+                return message("{$name}对象不存在", false);
+            }
+        }
+
+
         $info = $this->model::where(['user_id'=> $userId, 'source_id'=> $id,'type'=> $type])->select(['id','status'])->first();
         if($info && $info->status == 1 && $status == 1){
             return message("您已{$name}过", false);

+ 76 - 0
app/Services/DynamicService.php

@@ -176,6 +176,81 @@ class DynamicService extends BaseService
     }
 
     /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getCollectList($params)
+    {
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+        $userId = isset($params['user_id']) ? intval($params['user_id']) : 0;
+        $where = ['a.mark'=>1,'a.status'=> 1,'c.user_id'=> $userId,'c.mark'=> 1,'c.status'=> 1,'c.type'=> 2];
+        $dataList = $this->model::from('collect as c')
+            ->leftJoin('dynamic as a', function($join){
+                $join->on('a.id','=','c.source_id')->on('c.type','=', 1);
+            })
+            ->leftJoin('article as ar', 'ar.id', '=', 'a.source_id')
+            ->leftJoin('member as m', 'm.id', '=', 'a.user_id')
+            ->where($where)
+            ->where('a.id','>',0)
+            ->where('m.id','>',0)
+            ->select(['a.id', 'a.user_id', 'ar.title as title','m.nickname','m.avatar', 'a.source_id','ar.thumb', 'a.is_recommand', 'a.comment_close', 'a.albums', 'a.content', 'a.status', 'a.create_time', 'a.update_time'])
+            ->orderBy('a.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
+                $item['avatar'] = $item['avatar'] ? get_image_url($item['avatar']) : '';
+                $item['albums'] = $item['albums'] ? json_decode($item['albums'], true) : [];
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+                $item['create_time_text'] = $item['create_time']? format_time(strtotime($item['create_time'])) : '';
+                $item['content'] = $item['content']? htmlspecialchars_decode($item['content']) : '';
+                if($item['albums']){
+                    foreach ($item['albums'] as &$v){
+                        $v = $v? get_image_url($v) : '';
+                    }
+                    unset($v);
+                }
+
+                // 关注收藏数量
+                $item['collect'] = 0;
+                if($item['id']){
+                    $count = CollectModel::where(['source_id'=> $item['id'],'type'=>2,'mark'=> 1,'status'=> 1])->count('id');
+                    $item['collect'] = $count? $count : 0;
+                }
+
+                // 评论数量
+                $item['comment'] = 0;
+                if($item['id']){
+                    $count = DynamicCommentModel::where(['source_id'=> $item['id'],'mark'=> 1,'status'=> 1])->count('id');
+                    $item['comment'] = $count? $count : 0;
+                }
+
+                // 是否已收藏
+                $item['is_collect'] = 0;
+                if($userId){
+                    if(CollectModel::where(['user_id'=> $userId,'source_id'=> $item['id'],'type'=> 2,'mark'=> 1,'status'=> 1])->value('id')){
+                        $item['is_collect'] = 1;
+                    }
+                }
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
      * 获取详情
      * @param $id
      */
@@ -187,6 +262,7 @@ class DynamicService extends BaseService
             ->where('m.id','>',0)
             ->select(['a.id', 'a.user_id', 'ar.title as title','m.nickname','m.avatar', 'a.source_id','ar.thumb', 'a.is_recommand', 'a.comment_close', 'a.albums', 'a.content', 'a.status', 'a.create_time', 'a.update_time'])
             ->first();
+
         $info = $info? $info->toArray() : [];
         if($info){
             $info['thumb'] = $info['thumb']? get_image_url($info['thumb']) : '';

+ 38 - 0
app/Services/MemberService.php

@@ -723,4 +723,42 @@ class MemberService extends BaseService
         ];
     }
 
+    /**
+     * 感兴趣的人
+     * @param $userId
+     * @return array
+     */
+    public function recommand($userId){
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('member as m')
+            ->leftJoin('member_follow as mf','mf.follow_uid','=','m.id')
+            ->where(['m.mark'=>1,'m.status'=> 1])
+            ->whereNotIn(function($query) use ($userId){
+                $query->table('member_follow')->where(['user_id'=> $userId])->select(['follow_uid']);
+            })
+            ->select(['m.id', 'm.avatar','m.nickname','m.gender','m.status','m.create_time'])
+            ->orderBy('mf.create_time', 'asc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['avatar'] = $item['avatar']? get_image_url($item['avatar']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
 }

+ 1 - 0
routes/api.php

@@ -57,6 +57,7 @@ Route::post('/member/yigong', [\App\Http\Controllers\Api\v1\MemberController::cl
 Route::post('/member/yigongApply', [\App\Http\Controllers\Api\v1\MemberController::class, 'yigongApply']);
 Route::post('/member/activity', [\App\Http\Controllers\Api\v1\ActivityController::class, 'bookList']);
 Route::post('/member/withdraw', [\App\Http\Controllers\Api\v1\MemberController::class, 'withdraw']);
+Route::post('/member/recommand', [\App\Http\Controllers\Api\v1\MemberController::class, 'recommand']);
 Route::post('/member/logout', [\App\Http\Controllers\Api\v1\MemberController::class, 'logout']);
 
 // 资讯收藏