123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- <?php
- namespace App\Http\Controllers\Wetalk;
- use App\Models\Wetalk\Article;
- use App\Models\Wetalk\Like;
- use App\Models\Wetalk\Read;
- use App\Models\Wetalk\Share;
- use App\Models\Wetalk\Comment;
- use Carbon\Carbon;
- use EasyWeChat\Factory;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Redis;
- use Illuminate\Support\Facades\Storage;
- class ArticleController extends Controller
- {
- //首页展示数据
- public function getDataInfo(Request $request)
- {
- return $this->success(['count'=>0]);
- $data['count']=Read::count();
- return $this->success($data);
- }
- //获取列表
- public function list(Request $request): \Illuminate\Http\JsonResponse
- {
- $page_index=$request->input('page_index');
- $page_size=$request->input('page_size');
- $sort=$request->input('sort');
- $num=$page_size*($page_index-1);
- $count=Article::query()->where('shelves',1)->count();
- $list=Article::query()->where('shelves',1)
- ->select('title','stage','audio','perface','created_at','id','duration','size','shelves','read','like','share','timing_shelves','volume')
- ->orderBy('created_at',$sort)->skip($num)->take($page_size)->get();
- return $this->success_list($list,'',$count);
- }
- //获取单个信息详情
- public function detail(Request $request)
- {
- $id=$request->input('id');
- $user=Auth::user();
- $res=null;
- if(!empty($user)){
- $res = Like::where('user_id',$user->id)->where('article_id',$id)->exists();
- }
- $info['article']=Article::query()->where('id',$id)->first();
- if($res){
- $info['user']['is_like'] = 1;
- }else{
- $info['user']['is_like'] = 0;
- }
- if(!empty($user)){
- $where=function($query)use($user){
- $query->where('user_id',$user->id)->orWhere(function($q)use($user){
- $q->where('user_id','<>',$user->id)->where('is_audit',1);
- });
- };
- }else{
- $where=function($query){
- $query->where('is_audit',1);
- };
- }
- $info['comment']=Comment::where('article_id',$id)->where($where)->with(['user:id,nickname,headimgurl'])->get();
- return $this->success($info);
- }
- //点赞
- public function like(Request $request): \Illuminate\Http\JsonResponse
- {
- $user_id=Auth::user()->id;
- $article_id=$request->input('article_id');
- // $res=Like::create([
- // 'user_id'=>$user_id,
- // 'article_id'=>$article_id
- // ]);
- // $res=Redis::sismember('like:article', $article_id.':'.$user_id);
- // if($res){
- // Redis::srem('like:article', $article_id.':'.$user_id);
- // Redis::decr('article_'.$article_id.'_count');
- // Redis::hdel('article_user_like', $article_id.'_'.$user_id);
- // }else{
- // Redis::sadd('like:article', $article_id.':'.$user_id);
- // Redis::incr('article_'.$article_id.'_count');
- // Redis::hset('article_user_like', $article_id.'_'.$user_id, Carbon::now());
- // }
- $res=Like::query()->where('user_id',$user_id)->where('article_id',$article_id)->first();
- try{
- DB::transaction(function()use($res,$user_id,$article_id) {
- if ($res) {
- Article::query()->where('id', $article_id)->decrement('like');
- Like::query()->where('user_id', $user_id)->where('article_id', $article_id)->delete();
- } else {
- Article::query()->where('id', $article_id)->increment('like');
- Like::query()->create([
- 'user_id' => $user_id,
- 'article_id' => $article_id,
- ]);
- }
- },5);
- return $this->success([]);
- }catch(\Exception $e){
- return $this->error();
- }
- // Redis::set('name','wetalk');
- // return Redis::get('name');
- }
- //浏览
- public function read(Request $request): \Illuminate\Http\JsonResponse
- {
- $user_id = Auth::user()->id;
- $article_id = $request->input('article_id');
- try{
- DB::transaction(function()use($user_id,$article_id){
- Read::create([
- 'user_id' => $user_id,
- 'article_id' => $article_id
- ]);
- Article::where('id',$article_id)->increment('read');
- },5);
- return $this->success([]);
- }catch(\Exception $e){
- return $this->error();
- }
- }
- //分享
- public function share(Request $request): \Illuminate\Http\JsonResponse
- {
- $user_id=Auth::user()->id;
- $article_id=$request->input('article_id');
- try{
- DB::transaction(function()use($user_id,$article_id){
- Share::create([
- 'user_id'=>$user_id,
- 'article_id'=>$article_id
- ]);
- Article::where('id',$article_id)->increment('share');
- },5);
- return $this->success([]);
- }catch(\Exception $e){
- return $this->error();
- }
- }
- //提交评论
- public function addComment(Request $request)
- {
- $user_id=Auth::user()->id;
- $content=$request->input('content');
- if($request->input('article_id')=='wetalk'){
- $article_id=0;
- }else{
- $article_id=$request->input('article_id');
- }
- $res=Comment::create([
- 'user_id'=>$user_id,
- 'article_id'=>$article_id,
- 'content'=>$content,
- 'is_audit'=>0
- ]);
- if($res){
- return $this->success([]);
- }else{
- return $this->error();
- }
- }
- //获取微聊所有评论
- public function getAllWetalkComment(Request $request)
- {
- $page_index=$request->input('page_index');
- $page_size=$request->input('page_size');
- $num=$page_size*($page_index-1);
- $where=function($query){
- $query->where('user_id',Auth::user()->id)->orWhere(function($q){
- $q->where('user_id','<>',Auth::user()->id)->where('is_audit',1);
- });
- };
- $count=Comment::where('article_id',0)->where($where)->count();
- $list=Comment::where('article_id',0)->where($where)->with(['user:id,nickname,headimgurl'])->skip($num)->take($page_size)->get();
- return $this->success_list($list,'',$count);
- }
- //获取微聊所有点赞
- public function getArticleLike(Request $request)
- {
- $page_index=$request->input('page_index');
- $page_size=$request->input('page_size');
- $sort=$request->input('sort');
- $num=$page_size*($page_index-1);
- $user_id=$request->input('user_id')??Auth::user()->id;
- $count=Like::where('user_id',$user_id)->count();
- $list=Like::where('user_id',$user_id)->has('article')->with(['user:id,nickname,headimgurl','article'=>function($query){
- $query->where('id','>',0);
- }])->orderBy('created_at',$sort)->skip($num)->take($page_size)->get();
- return $this->success_list($list,'',$count);
- }
- //获取微聊首页三数据
- public function getWetalkData(Request $request)
- {
- $data['like']=Like::where('user_id',Auth::user()->id)->count();
- $where=function($query){
- $query->where('user_id',Auth::user()->id)->orWhere(function($q){
- $q->where('user_id','<>',Auth::user()->id)->where('is_audit',1);
- });
- };
- $data['comment']=Comment::where('article_id',0)->where($where)->count();
- $data['share']=Share::where('article_id',0)->count();
- return $this->success($data);
- }
- //获取微信授权
- public function getSignPackage()
- {
- $config = config('wechat.official_account.daweiboshi');
- $app = Factory::officialAccount($config);
- $url='http://api.app.cliu.cc/api/gzh';
- $app->jssdk->setUrl($url);
- $data=$app->jssdk->buildConfig(array('onMenuShareAppMessage','onMenuShareTimeline',
- 'openLocation','getLocation','chooseImage',
- 'uploadImage', 'downloadImage','scanQRCode',
- 'updateAppMessageShareData', 'updateTimelineShareData'), true);
- return $this->success($data);
- }
- }
|