123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <?php
- namespace App\Http\Controllers\Course;
- use App\Models\Course\Course;
- use App\Models\DwbsUser;
- use App\Models\Course\Read;
- use App\Models\Course\Share;
- use App\Models\Course\Comment;
- use App\Models\Course\Collection;
- use Carbon\Carbon;
- use EasyWeChat\Factory;
- use Illuminate\Http\Request;
- use FFMpeg\FFMpeg;
- 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 CourseController extends Controller
- {
- //首页展示数据
- public function getDataInfo(Request $request)
- {
- $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');
- $c_id=$request->input('c_id');
- $num=$page_size*($page_index-1);
- $level=Auth::user()->level;
- $permission=Course::$levelCourse[$level];
- $data=Course::setField()->where('state',1)
- ->whereIn('permission',$permission);
- if($c_id){
- $data->where('c_id',$c_id);
- }
- $count=$data->count();
- $list=$data->orderByDesc('is_top')->orderByDesc('top_at')->orderBy('id','desc')
- ->skip($num)->take($page_size)->get();
- return $this->success_list($list,'',$count);
- }
- //最近上传
- public function current(Request $request): \Illuminate\Http\JsonResponse
- {
- $page_index=$request->input('page_index');
- $page_size=$request->input('page_size');
- $num=$page_size*($page_index-1);
- $level=Auth::user()->level;
- $permission=Course::$levelCourse[$level];
- $count=Course::setField()->where('state',1)->whereIn('permission',$permission)
- ->where('created_at','>',Carbon::now()->subWeeks(1))->count();
- $list=Course::query()->where('state',1)->whereIn('permission',$permission)
- ->where('created_at','>',Carbon::now()->subWeeks(1))
- ->orderByDesc('is_top')->orderByDesc('top_at')->orderBy('id','desc')
- ->skip($num)->take($page_size)->get();
- return $this->success_list($list,'',$count);
- }
- //获取课程详情
- public function detail(Request $request)
- {
- $id=$request->input('id');
- $user=Auth::guard('api')->user();
- $permission=Course::$levelCourse[$user->level];//获取用户对应课程权限
- $res=null;
- if($user){
- $res = Collection::where('user_id',$user->id)->where('course_id',$id)->exists();
- }
- $course=Course::query()->where('id',$id)->first();
- if(!in_array($course->permission,$permission)){ //判断用户是否有权限访问
- return $this->error('450001','','你没有权限访问该课程');
- }
- if(empty($course)){
- return $this->error('450001','','课程不存在');
- }
- if($course->state==0){
- return $this->error('450001','','课程已下线');
- }
- $info['Course']=$course;
- if($res){
- $info['user']['is_collection'] = 1;
- }else{
- $info['user']['is_collection'] = 0;
- }
- //阅读记录
- Read::create([
- 'user_id'=>$user->id,
- 'course_id'=>$id,
- ]);
- Course::where('id',$id)->increment('read');
- return $this->success($info);
- }
- //课程评论
- public function getCourseComment(Request $request)
- {
- $user_id=Auth::user()->id;
- $page_index=$request->input('page_index');
- $page_size=$request->input('page_size');
- $id=$request->input('id');
- $num=$page_size*($page_index-1);
- $data=Comment::where('course_id',$id)
- ->where(function($query)use($user_id){
- $query->where('state',1)->orWhere('user_id',$user_id);
- });
- $count=$data->count();
- $list = $data->with(['user:id,nickname,headimgurl'])
- ->skip($num)->take($page_size)
- ->get();
- return $this->success_list($list,'',$count);
- }
- //浏览
- public function read(Request $request): \Illuminate\Http\JsonResponse
- {
- $user_id = Auth::guard('api')->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
- ]);
- Course::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::guard('api')->user()->id;
- $course_id=$request->input('course_id');
- try{
- DB::transaction(function()use($user_id,$course_id){
- Share::create([
- 'user_id'=>$user_id,
- 'course_id'=>$course_id
- ]);
- Course::where('id',$course_id)->increment('share');
- },5);
- return $this->success([]);
- }catch(\Exception $e){
- return $this->error();
- }
- }
- //提交评论
- public function addComment(Request $request)
- {
- $user_id=Auth::guard('api')->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);
- $count=Comment::where('article_id',0)->count();
- $list=Comment::where('article_id',0)->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=Auth::guard('api')->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('article_id',0)->count();
- $data['comment']=Comment::where('article_id',0)->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='https://weiliao.woaidakele.cn/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);
- }
- }
|