فهرست منبع

wesmiler 报恩寺项目提交

wesmiler 3 سال پیش
والد
کامیت
683f23d9bf

+ 3 - 1
.gitignore

@@ -15,4 +15,6 @@
 /storage/framework/cache/
 /app/Models/AwardModel.php
 /app/Models/LotteryModel.php
-/addons/admin/*.zip
+/addons/admin/*.zip
+/public/uploads/img/*.png
+/public/uploads/img/*.jpg

+ 1 - 1
app/Http/Controllers/Api/v1/ArticleController.php

@@ -54,7 +54,7 @@ class ArticleController extends BaseController
         }
 
         $this->service->updateVisit($this->userId);
-        $info = $this->service->getDetail($id);
+        $info = $this->service->getDetail($id, $this->userId);
         return message(1005, true, $info);
     }
 

+ 1 - 0
app/Http/Controllers/Api/v1/CollectController.php

@@ -34,6 +34,7 @@ class CollectController extends BaseController
      */
     public function index(){
         $params = request()->all();
+        $params['user_id'] = $this->userId;
         return $this->service->getDataList($params);
     }
 

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

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api\v1;
 
 use App\Http\Controllers\Api\BaseController;
 use App\Http\Validator\DynamicValidator;
+use App\Services\DynamicCommentService;
 use App\Services\DynamicService;
 use Illuminate\Http\Request;
 
@@ -27,6 +28,7 @@ class DynamicController extends BaseController
         parent::__construct();
 
         $this->service = new DynamicService();
+        $this->commentService = new DynamicCommentService();
     }
 
     /**
@@ -39,6 +41,39 @@ class DynamicController extends BaseController
     }
 
     /**
+     * 动态评论
+     * @return mixed
+     */
+    public function commentList(){
+        $params = request()->all();
+        return $this->commentService->getDataList($params);
+    }
+
+    /**
+     * 发布动态评论
+     * @param Request $request
+     * @param DynamicValidator $validate
+     * @return array
+     */
+    public function comment(Request $request, DynamicValidator $validate){
+        $params = $validate->check($request->all(),'publish');
+        if(!is_array($params)){
+            return message($params, false);
+        }
+        return $this->commentService->comment($this->userId);
+    }
+
+    /**
+     * 我的动态
+     * @return array
+     */
+    public function myList(){
+        $params = request()->all();
+        $params['user_id'] = $this->userId;
+        return $this->service->getDataList($params);
+    }
+
+    /**
      * 详情
      * @return array|mixed
      */
@@ -48,7 +83,7 @@ class DynamicController extends BaseController
             return message(1006, false);
         }
 
-        $info = $this->service->getDetail($id);
+        $info = $this->service->getDetail($id, $this->userId);
         return message(1005, true, $info);
     }
 

+ 2 - 1
app/Http/Validator/DynamicValidator.php

@@ -21,13 +21,14 @@ class DynamicValidator extends BaseValidator
     // 当前模型所有验证字段
     public static $fields = [
         'id' => 'ID',
-        'content' => '动态内容',
+        'content' => '内容',
     ];
 
     // 当前模型所有验证场景
     public static $scenes = [
         'info'=> ['id'],
         'publish'=> ['content'],
+        'comment'=> ['id','content'],
     ];
 
     /**

+ 11 - 6
app/Services/CollectService.php

@@ -67,6 +67,11 @@ class CollectService extends BaseService
                     $query->where('a.type', $type);
                 }
 
+                $userId = isset($params['user_id']) ? intval($params['user_id']) : 0;
+                if ($userId > 0) {
+                    $query->where('a.user_id', $userId);
+                }
+
             })
             ->select(['a.id', 'a.user_id','a.source_id', 'c.title as title', 'c.thumb', 'c.description', 'c.view_num', 'a.status', 'a.create_time'])
             ->orderBy('a.create_time', 'desc')
@@ -109,14 +114,14 @@ class CollectService extends BaseService
         if(!in_array($status, [1,2])){
             return message('参数错误', false);
         }
-
+        $name = $type==1? '收藏':'关注';
         $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('您已收藏过', false);
+            return message("您已{$name}过", false);
         }else if($info && $info->status == 2 && $status == 2){
-            return message('您已取消收藏', false);
+            return message("您已取消{$name}", false);
         }else if(!$info && $status == 2){
-            return message('您未收藏过', false);
+            return message("您未{$name}过", false);
         }
 
         // 处理
@@ -124,7 +129,7 @@ class CollectService extends BaseService
             $info->status = $status;
             $info->create_time = time();
             if($info->save()){
-                return message($status == 1? '收藏成功':'取消收藏成功', true);
+                return message($status == 1? "{$name}成功":"取消{$name}成功", true);
             }
         }else{
             $data = [
@@ -135,7 +140,7 @@ class CollectService extends BaseService
                 'status'=> 1,
             ];
             if($this->model::insertGetId($data)){
-                return message('收藏成功', true);
+                return message("{$name}成功", true);
             }
         }
 

+ 53 - 1
app/Services/DynamicCommentService.php

@@ -12,6 +12,7 @@
 namespace App\Services;
 
 use App\Models\DynamicCommentModel;
+use App\Models\DynamicModel;
 use App\Models\MemberModel;
 
 /**
@@ -73,7 +74,7 @@ class DynamicCommentService extends BaseService
         $dataList = $this->model::from('dynamic_comment as a')
             ->leftJoin('member as m', 'm.id', '=', 'a.user_id')
             ->where(['a.mark'=>1,'a.status'=> 1,'m.mark'=> 1,'m.status'=> 1])
-            ->where('m.user_id','>',0)
+            ->where('m.id','>',0)
             ->select(['a.id', 'a.user_id', 'm.nickname','m.avatar', 'a.source_id', 'a.content', 'a.status', 'a.create_time', 'a.update_time'])
             ->orderBy('a.create_time', 'desc')
             ->paginate($pageSize);
@@ -83,6 +84,7 @@ class DynamicCommentService extends BaseService
             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') : '';
+                $item['create_time_text'] = $item['create_time'] ? format_time(strtotime($item['create_time'])) : '';
             }
             unset($item);
         }
@@ -111,4 +113,54 @@ class DynamicCommentService extends BaseService
         return parent::edit($data); // TODO: Change the autogenerated stub
     }
 
+    /**
+     * 发布评论
+     * @param $userId
+     * @return array
+     */
+    public function comment($userId){
+        $params = request()->all();
+        $id = isset($params['id'])? $params['id'] : 0;
+        $cacheKey = "caches:comments:dynamic_{$userId}";
+        if(RedisService::get($cacheKey)){
+            return message('您刚刚评论过,请30秒后再试', false);
+        }
+
+        // 验证信息
+        $info = DynamicModel::where(['id'=> $id, 'mark'=>1, 'status'=>1])
+            ->select(['id','comment_close','status'])
+            ->first();
+        if(!$info){
+            return message('评论的动态不存在,请刷新重试', false);
+        }
+
+        if($info->comment_close == 2){
+            return message('该动态未开放评论功能', false);
+        }
+
+        // 验证账户
+        $memberInfo = MemberModel::where(['id'=> $userId,'mark'=> 1,'status'=> 1])
+            ->select(['id','openid','nickname'])
+            ->first();
+        if(!$memberInfo){
+            return message('账户不可操作或已冻结,请联系客服', false);
+        }
+
+        $data = [
+            'user_id'=> $userId,
+            'source_id'=> $id,
+            'reply_id'=> isset($params['reply_id'])? intval($params['reply_id']) : 0,
+            'content'=> isset($params['content'])? trim($params['content']) : '',
+            'create_time'=> time(),
+            'update_time'=> time(),
+            'status'=> 1,
+        ];
+
+        if($this->model::insertGetId($data)){
+            RedisService::set($cacheKey, $data, 30);
+            return message('评论成功', true);
+        }
+
+        return message('评论失败', false);
+    }
 }

+ 18 - 4
app/Services/DynamicService.php

@@ -111,11 +111,15 @@ class DynamicService extends BaseService
     {
         $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,'m.mark'=> 1,'m.status'=> 1];
+        if($userId){
+            $where['a.user_id'] = $userId;
+        }
         $dataList = $this->model::from('dynamic as a')
             ->leftJoin('article as ar', 'ar.id', '=', 'a.source_id')
             ->leftJoin('member as m', 'm.id', '=', 'a.user_id')
-            ->where(['a.mark'=>1,'a.status'=> 1,'m.mark'=> 1,'m.status'=> 1])
+            ->where($where)
             ->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')
@@ -128,6 +132,7 @@ class DynamicService extends BaseService
                 $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){
@@ -136,7 +141,7 @@ class DynamicService extends BaseService
                     unset($v);
                 }
 
-                // 关注数量
+                // 关注收藏数量
                 $item['collect'] = 0;
                 if($item['id']){
                     $count = CollectModel::where(['source_id'=> $item['id'],'type'=>2,'mark'=> 1,'status'=> 1])->count('id');
@@ -149,6 +154,14 @@ class DynamicService extends BaseService
                     $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);
         }
@@ -179,6 +192,7 @@ class DynamicService extends BaseService
             $info['thumb'] = $info['thumb']? get_image_url($info['thumb']) : '';
             $info['avatar'] = $info['avatar']? get_image_url($info['avatar']) : '';
             $info['create_time'] = $info['create_time']? datetime( $info['create_time'],'Y-m-d H:i:s') : '';
+            $info['create_time_text'] = $info['create_time']? format_time(strtotime($info['create_time'])) : '';
             $info['content'] = $info['content']? htmlspecialchars_decode($info['content']) : '';
             $info['albums'] = $info['albums']? json_decode($info['albums']) : [];
             if($info['albums']){
@@ -199,7 +213,7 @@ class DynamicService extends BaseService
             // 是否已收藏
             $info['is_collect'] = 0;
             if($userId){
-                if(CollectModel::where(['user_id'=> $userId,'source_id'=> $id,'type'=> 1,'mark'=> 1,'status'=> 1])->value('id')){
+                if(CollectModel::where(['user_id'=> $userId,'source_id'=> $id,'type'=> 2,'mark'=> 1,'status'=> 1])->value('id')){
                     $info['is_collect'] = 1;
                 }
             }

+ 3 - 3
routes/api.php

@@ -122,9 +122,9 @@ Route::post('/trades/info', [\App\Http\Controllers\Api\v1\TradeController::class
 
 // 动态
 Route::post('/dynamic/list', [\App\Http\Controllers\Api\v1\DynamicController::class, 'index']);
+Route::post('/dynamic/myList', [\App\Http\Controllers\Api\v1\DynamicController::class, 'myList']);
+Route::post('/dynamic/comment', [\App\Http\Controllers\Api\v1\DynamicController::class, 'comment']);
+Route::post('/dynamic/commentList', [\App\Http\Controllers\Api\v1\DynamicController::class, 'commentList']);
 Route::post('/dynamic/info', [\App\Http\Controllers\Api\v1\DynamicController::class, 'info']);
 Route::post('/dynamic/publish', [\App\Http\Controllers\Api\v1\DynamicController::class, 'publish']);
 
-
-// 收藏
-Route::post('/collect/add', [\App\Http\Controllers\Api\v1\CollectController::class, 'collect']);