|
|
@@ -3,7 +3,10 @@
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
use App\Models\Course;
|
|
|
+use App\Models\CourseMember;
|
|
|
use Illuminate\Http\Request;
|
|
|
+use App\Http\Api\AuthApi;
|
|
|
+use App\Http\Api\StudioApi;
|
|
|
|
|
|
class CourseController extends Controller
|
|
|
{
|
|
|
@@ -12,9 +15,67 @@ class CourseController extends Controller
|
|
|
*
|
|
|
* @return \Illuminate\Http\Response
|
|
|
*/
|
|
|
- public function index()
|
|
|
+ public function index(Request $request)
|
|
|
{
|
|
|
//
|
|
|
+ $result=false;
|
|
|
+ $indexCol = ['id','title','subtitle','cover','content','content_type','teacher','start_at','end_at','updated_at','created_at'];
|
|
|
+ switch ($request->get('view')) {
|
|
|
+ case 'create':
|
|
|
+ # 获取 studio 建立的所有 course
|
|
|
+ $user = AuthApi::current($request);
|
|
|
+ if(!$user){
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ //判断当前用户是否有指定的studio的权限
|
|
|
+ if($user['user_uid'] !== StudioApi::getIdByName($request->get('name'))){
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+
|
|
|
+ $table = Course::where('studio_id', $user["user_uid"]);
|
|
|
+ break;
|
|
|
+ case 'study':
|
|
|
+ //我学习的课程
|
|
|
+ $course = CourseMember::where('user_id',$user["user_uid"])
|
|
|
+ ->where('role','member')
|
|
|
+ ->select('course_id')
|
|
|
+ ->get();
|
|
|
+ $courseId = [];
|
|
|
+ foreach ($course as $key => $value) {
|
|
|
+ # code...
|
|
|
+ $courseId[] = $value->course_id;
|
|
|
+ }
|
|
|
+ $table = Course::whereIn('id', $courseId);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ $table = $table->select($indexCol);
|
|
|
+ if(isset($_GET["search"])){
|
|
|
+ $table = $table->where('title', 'like', $_GET["search"]."%");
|
|
|
+ }
|
|
|
+ $count = $table->count();
|
|
|
+ if(isset($_GET["order"]) && isset($_GET["dir"])){
|
|
|
+ $table = $table->orderBy($_GET["order"],$_GET["dir"]);
|
|
|
+ }else{
|
|
|
+ if($request->get('view') === 'studio_list'){
|
|
|
+ $table = $table->orderBy('count','desc');
|
|
|
+ }else{
|
|
|
+ $table = $table->orderBy('updated_at','desc');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(isset($_GET["limit"])){
|
|
|
+ $offset = 0;
|
|
|
+ if(isset($_GET["offset"])){
|
|
|
+ $offset = $_GET["offset"];
|
|
|
+ }
|
|
|
+ $table = $table->skip($offset)->take($_GET["limit"]);
|
|
|
+ }
|
|
|
+ $result = $table->get();
|
|
|
+ if($result){
|
|
|
+ return $this->ok(["rows"=>$result,"count"=>$count]);
|
|
|
+ }else{
|
|
|
+ return $this->error("没有查询到数据");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -26,6 +87,24 @@ class CourseController extends Controller
|
|
|
public function store(Request $request)
|
|
|
{
|
|
|
//
|
|
|
+ $user = AuthApi::current($request);
|
|
|
+ if(!$user){
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ //判断当前用户是否有指定的studio的权限
|
|
|
+ if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ //查询是否重复
|
|
|
+ if(Course::where('title',$request->get('title'))->where('studio_id',$user['user_uid'])->exists()){
|
|
|
+ return $this->error(__('validation.exists',['name']));
|
|
|
+ }
|
|
|
+
|
|
|
+ $course = new Course;
|
|
|
+ $course->title = $request->get('title');
|
|
|
+ $course->studio_id = $user['user_uid'];
|
|
|
+ $course->save();
|
|
|
+ return $this->ok($course);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -37,6 +116,8 @@ class CourseController extends Controller
|
|
|
public function show(Course $course)
|
|
|
{
|
|
|
//
|
|
|
+ return $this->ok($course);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -49,6 +130,27 @@ class CourseController extends Controller
|
|
|
public function update(Request $request, Course $course)
|
|
|
{
|
|
|
//
|
|
|
+ $user = AuthApi::current($request);
|
|
|
+ if(!$user){
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ //判断当前用户是否有指定的studio的权限
|
|
|
+ if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ //查询标题是否重复
|
|
|
+ if(Course::where('title',$request->get('title'))->where('studio_id',$user['user_uid'])->exists()){
|
|
|
+ return $this->error(__('validation.exists',['name']));
|
|
|
+ }
|
|
|
+ $course->title = $request->get('title');
|
|
|
+ $course->subtitle = $request->get('subtitle');
|
|
|
+ $course->cover = $request->get('cover');
|
|
|
+ $course->content = $request->get('content');
|
|
|
+ $course->teacher = $request->get('teacher');
|
|
|
+ $course->start_at = $request->get('start_at');
|
|
|
+ $course->end_at = $request->get('end_at');
|
|
|
+ $course->save();
|
|
|
+ return $this->ok($course);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -60,5 +162,21 @@ class CourseController extends Controller
|
|
|
public function destroy(Course $course)
|
|
|
{
|
|
|
//
|
|
|
+ $user = AuthApi::current($request);
|
|
|
+ if(!$user){
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ //判断当前用户是否有指定的studio的权限
|
|
|
+ if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ $delete = 0;
|
|
|
+ DB::transaction(function() use($delete){
|
|
|
+ //删除group member
|
|
|
+ $memberDelete = CourseMember::where('course_id',$course->id)->delete();
|
|
|
+ $delete = $course->delete();
|
|
|
+ });
|
|
|
+
|
|
|
+ $this->ok($delete);
|
|
|
}
|
|
|
}
|