|
@@ -2,9 +2,8 @@
|
|
|
|
|
|
use App\Http\Controllers\Api\Api;
|
|
use App\Http\Controllers\Api\Api;
|
|
use App\Models\Article as Model;
|
|
use App\Models\Article as Model;
|
|
-use App\Models\ArticleComment as ArticleCommentModel;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+use App\Models\ArticleEvent as ArticleEvent;
|
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 分享设置
|
|
* 分享设置
|
|
@@ -21,49 +20,28 @@ class Comment extends Api{
|
|
'5' => '取消推荐',
|
|
'5' => '取消推荐',
|
|
'6' => '取消点赞'
|
|
'6' => '取消点赞'
|
|
];
|
|
];
|
|
- public function list(Model $Model, ArticleCommentModel $ArticleCommentModel){
|
|
|
|
-
|
|
|
|
- // 接受参数
|
|
|
|
- $code = request('article_code','');
|
|
|
|
-
|
|
|
|
- $status = request('status');
|
|
|
|
- $startTime = request('start_time','');
|
|
|
|
- $endTime = request('end_time','');
|
|
|
|
- // 编码转ID
|
|
|
|
- $id = $code ? $Model->codeToId($code) : 0;
|
|
|
|
|
|
+ public function get_list(Model $Model){
|
|
// 查询条件
|
|
// 查询条件
|
|
- $map = [];
|
|
|
|
- // 编码ID
|
|
|
|
- if( $id ) $map[] = ['id','=',$id];
|
|
|
|
- if( $startTime ) $map[] = ['start_time','>=',strtotime($startTime)];
|
|
|
|
- if( $endTime ) $map[] = ['end_time','<=',strtotime($endTime)];
|
|
|
|
- if( !is_null($status) ) $map[] = ['status','=',$status];
|
|
|
|
|
|
+ $map = [['status','=','0']];
|
|
// 查询文章数据
|
|
// 查询文章数据
|
|
- $list = $Model->query()->where($map);
|
|
|
|
- $list = $list->orderByDesc('id')->paginate(request('limit',config('page_num',10)))->appends(request()->all());
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ $Paginator = $Model->query()->where($map)->orderByDesc('id')->paginate(request('limit',config('page_num',10)));
|
|
// 循环处理数据
|
|
// 循环处理数据
|
|
- foreach ($list as $key => $value) {
|
|
|
|
- // id转编号
|
|
|
|
- $value['article_id'] = $value['id'];
|
|
|
|
|
|
+ foreach ($Paginator as $key => $value) {
|
|
// 重组
|
|
// 重组
|
|
- $value['poster'] = $value['poster']? path_compat($value['poster']):'';
|
|
|
|
-
|
|
|
|
- $value['read_count'] = $ArticleCommentModel->query()
|
|
|
|
- ->where(['article_id'=>$value['id'],'event_type'=>1])
|
|
|
|
- ->count();
|
|
|
|
-
|
|
|
|
- $value['like_count'] = $ArticleCommentModel->query()
|
|
|
|
- ->where(['article_id'=>$value['id'],'event_type'=>2])
|
|
|
|
- ->count();
|
|
|
|
-
|
|
|
|
- $value['update_time'] = date('Y-m-d H:i:s',$value['update_time']);
|
|
|
|
- $list[$key] = $value;
|
|
|
|
|
|
+ $value['poster'] = path_compat($value['poster']);
|
|
|
|
+ // 获取数据
|
|
|
|
+ $value['insert_time'] = date('Y-m-d',$value['insert_time']);
|
|
|
|
+ // 重组
|
|
|
|
+ $Paginator[$key] = $value;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ // 获取数据
|
|
|
|
+ $data['total'] = $Paginator->total();
|
|
|
|
+ $data['current_page'] = $Paginator->currentPage();
|
|
|
|
+ $data['per_page'] = $Paginator->perPage();
|
|
|
|
+ $data['last_page'] = $Paginator->lastPage();
|
|
|
|
+ $data['data'] = $Paginator->items();
|
|
// 分配数据
|
|
// 分配数据
|
|
- return json_send(['code'=>'success','msg'=>'列表数据','data'=>$list]);
|
|
|
|
|
|
+ return json_send(['code'=>'success','msg'=>'列表数据','data'=>$data]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -73,144 +51,63 @@ class Comment extends Api{
|
|
* 数据详情
|
|
* 数据详情
|
|
*
|
|
*
|
|
* */
|
|
* */
|
|
- public function detail(Model $Model, ArticleCommentModel $ArticleCommentModel){
|
|
|
|
-
|
|
|
|
|
|
+ public function get_detail(Model $Model, ArticleEvent $ArticleEvent){
|
|
|
|
+ // 检查登录
|
|
|
|
+ $uid = $this->checkLogin();
|
|
// 接受参数
|
|
// 接受参数
|
|
- $tid = request('article_id',0);
|
|
|
|
-
|
|
|
|
- $uid = $this->checkLogin(); // custom_uid
|
|
|
|
-
|
|
|
|
- // 查询条件
|
|
|
|
- $map = [];
|
|
|
|
- // 编码ID
|
|
|
|
- if( $tid ) $map[] = ['id','=',$tid];
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- $data = $Model->query()->where($map)->find($tid,['id','title','poster','content']);
|
|
|
|
- $data['like_count'] = $ArticleCommentModel->query()
|
|
|
|
- ->where(['article_id'=>$tid,'event_type'=>2])
|
|
|
|
- ->count();
|
|
|
|
-
|
|
|
|
- $data['read_count'] = $ArticleCommentModel->query()
|
|
|
|
- ->where(['article_id'=>$tid,'event_type'=>1])
|
|
|
|
- ->count();
|
|
|
|
-
|
|
|
|
- $data['share_count'] = $ArticleCommentModel->query()
|
|
|
|
- ->where(['article_id'=>$tid,'event_type'=>3])
|
|
|
|
- ->count();
|
|
|
|
-
|
|
|
|
- $data['recommend_count'] = $ArticleCommentModel->query()
|
|
|
|
- ->where(['article_id'=>$tid,'event_type'=>4])
|
|
|
|
- ->count();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //用户是否点赞和推荐
|
|
|
|
- if ($uid){
|
|
|
|
- $user_envent = $ArticleCommentModel->query()->where(['uid'=>$uid,'article_id'=>$tid])
|
|
|
|
- ->get();
|
|
|
|
- foreach ($user_envent as $value){
|
|
|
|
-
|
|
|
|
- if ($value['event_type'] == 2){
|
|
|
|
- $data['like_type'] = 2;
|
|
|
|
- }else{
|
|
|
|
- $data['like_type'] = 6;
|
|
|
|
- }
|
|
|
|
- if ($value['event_type'] == 4){
|
|
|
|
- $data['recommend_type'] = 4;
|
|
|
|
- }else{
|
|
|
|
- $data['recommend_type'] = 5;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //写入浏览记录
|
|
|
|
- $read = [
|
|
|
|
- 'article_id' => $tid,
|
|
|
|
- 'event_type' => 1,
|
|
|
|
- 'uid' => $uid,
|
|
|
|
- 'insert_time' => time()
|
|
|
|
- ];
|
|
|
|
- //查询用户是否浏览过
|
|
|
|
- $read_type = $ArticleCommentModel->query()->where(['uid'=>$uid,'article_id'=>$tid])->value('event_type');
|
|
|
|
-
|
|
|
|
- if (!$read_type){
|
|
|
|
- $comment_id = $ArticleCommentModel->add($read);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- }else{
|
|
|
|
-
|
|
|
|
- $read['event_type'] = 0;//禁止分享、推荐和点赞
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 加载模板
|
|
|
|
-
|
|
|
|
- if ($data){
|
|
|
|
- return json_send(['code'=>'success','msg'=>'数据','data'=>$data]);
|
|
|
|
- }
|
|
|
|
- return json_send(['code'=>'success','msg'=>'暂无','data'=>[]]);
|
|
|
|
|
|
+ $id = request('id',0);
|
|
|
|
+ // 获取旧数据
|
|
|
|
+ $articleData = $Model->query()->where([['status','=',0]])->find($id,['id','title','poster','content','read_count','hand_count','like_count','share_count','insert_time']);
|
|
|
|
+ // 用户是否点赞
|
|
|
|
+ if( !$articleData ) return json_send(['code'=>'error','msg'=>'文章不存在或者已下架']);
|
|
|
|
+ // 转数组
|
|
|
|
+ $articleData = $articleData->toArray();
|
|
|
|
+ // 如果用户不存在
|
|
|
|
+ $oldData = $uid ? $ArticleEvent->query()->where([['custom_uid','=',$uid],['article_id','=',$id],['type_id','=',1]])->value('id') : 0;
|
|
|
|
+ // 阅读数 + 1
|
|
|
|
+ $Model->query()->where([['id','=',$id]])->increment('read_count');
|
|
|
|
+ // 如果事件不存在,新增此次事件
|
|
|
|
+ if( !$oldData && $uid ) $ArticleEvent->add(['custom_uid'=>$uid,'article_id'=>$id,'type_id'=>1,'status'=>0]);
|
|
|
|
+ // 用户是否点赞和推荐
|
|
|
|
+ $articleData['is_hand'] = $uid ? (int) $ArticleEvent->query()->where([['custom_uid','=',$uid],['article_id','=',$id],['type_id','=',2],['status','=',0]])->value('id') : 0;
|
|
|
|
+ $articleData['is_like'] = $uid ? (int) $ArticleEvent->query()->where([['custom_uid','=',$uid],['article_id','=',$id],['type_id','=',4],['status','=',0]])->value('id') : 0;
|
|
|
|
+ // 返回结果
|
|
|
|
+ return json_send(['code'=>'success','msg'=>'暂无','data'=>$articleData]);
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 数据详情
|
|
* 数据详情
|
|
*
|
|
*
|
|
* */
|
|
* */
|
|
- public function update_event(Model $Model, ArticleCommentModel $ArticleCommentModel){
|
|
|
|
- // '1' => '阅读',
|
|
|
|
- // '2' => '点赞',
|
|
|
|
- // '3' => '分享',
|
|
|
|
- // '4' => '推荐',
|
|
|
|
- // '5' => '取消推荐',
|
|
|
|
- // '6' => '取消点赞'
|
|
|
|
- $event = request('event_type',0);
|
|
|
|
- $tid = request('article_id',0);
|
|
|
|
- $uid = $this->checkLogin(); // custom_uid
|
|
|
|
-
|
|
|
|
- // 查询条件
|
|
|
|
- $map = [];
|
|
|
|
- $map[] = ['uid','=',$uid];
|
|
|
|
- $map[] = ['article_id','=',$tid];
|
|
|
|
- $map[] = ['event_type','=',$event];
|
|
|
|
- $user_envent = $ArticleCommentModel->query()->where($map)->get();
|
|
|
|
- switch ($event){
|
|
|
|
- case 2:
|
|
|
|
-
|
|
|
|
- if ($user_envent){
|
|
|
|
- $Res = $ArticleCommentModel::query()
|
|
|
|
- ->where(['uid'=>$uid,'article_id'=>$tid])
|
|
|
|
- ->update(['event_type'=>'6']);
|
|
|
|
- return json_send(['code'=>'error','msg'=>'取消点赞','data'=>[]]);
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case 4:
|
|
|
|
- if ($user_envent){
|
|
|
|
- $Res = $ArticleCommentModel::query()
|
|
|
|
- ->where(['uid'=>$uid,'article_id'=>$tid])
|
|
|
|
- ->update(['event_type'=>'4']);
|
|
|
|
- return json_send(['code'=>'error','msg'=>'取消推荐','data'=>[]]);
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case 6:
|
|
|
|
- $map[] = ['uid','=',$uid];
|
|
|
|
- $map[] = ['article_id','=',$tid];
|
|
|
|
- $map[] = ['event_type','=',$event];
|
|
|
|
|
|
+ public function update_event(Model $Model, ArticleEvent $ArticleEvent){
|
|
|
|
+ // 检查登录
|
|
|
|
+ $uid = $this->checkLogin();
|
|
|
|
+ // 接收参数
|
|
|
|
+ $typeId = request('type_id',0);
|
|
|
|
+ $articleId = request('article_id',0);
|
|
|
|
+ // 如果用户不存在
|
|
|
|
+ $oldData = $uid ? $ArticleEvent->query()->where([['custom_uid','=',$uid],['article_id','=',$articleId],['type_id','=',$typeId]])->first(['id','status']) : [];
|
|
|
|
+ // 判断事件。
|
|
|
|
+ $oldData = $oldData ? $oldData->toArray() : [];
|
|
|
|
+ // 更新状态
|
|
|
|
+ if( $oldData ){
|
|
|
|
+ $ArticleEvent->edit($oldData['id'],['status'=>$oldData['status']?0:1]);
|
|
|
|
+ }else{
|
|
|
|
+ // 如果事件不存在,新增此次事件
|
|
|
|
+ if( $uid ) $ArticleEvent->add(['custom_uid'=>$uid,'article_id'=>$articleId,'type_id'=>$typeId,'status'=>0]);
|
|
}
|
|
}
|
|
-
|
|
|
|
- $user_envent = $ArticleCommentModel->query()->where($map)->get();
|
|
|
|
- if( $tid ) $map[] = ['id','=',$tid];
|
|
|
|
- // $orderRes = $Model::query()->where('article_id','=',$tid)->update(['status'=>'1']);
|
|
|
|
- //用户是否点赞和推荐
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- return json_send(['code'=>'success','msg'=>'成功',
|
|
|
|
- 'data'=>[
|
|
|
|
- 'event_type'=>$event,'article_id'=>$tid,'uid'=>$uid]
|
|
|
|
- ]);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ // 判断数据类型,点赞
|
|
|
|
+ if( $typeId == 2 ) {
|
|
|
|
+ // 如果旧数据是未点赞或者取消点赞,继续点赞
|
|
|
|
+ ( !$oldData || !empty($oldData['status']) ) ? $Model->query()->where([['id','=',$articleId]])->increment('hand_count') : $Model->query()->where([['id','=',$articleId],['hand_count','>=',1]])->decrement('hand_count');
|
|
|
|
+ }
|
|
|
|
+ // 判断数据类型,分享
|
|
|
|
+ if( $typeId == 3 ) $Model->query()->where([['id','=',$articleId]])->increment('share_count');
|
|
|
|
+ // 判断数据类型,喜欢
|
|
|
|
+ if( $typeId == 4 ) (!$oldData || !empty($oldData['status'])) ? $Model->query()->where([['id','=',$articleId]])->increment('like_count') : $Model->query()->where([['id','=',$articleId],['like_count','>=',1]])->decrement('like_count') ;
|
|
|
|
+ // 返回结果
|
|
|
|
+ return json_send(['code'=>'success','msg'=>'操作成功','data'=>'']);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|