Browse Source

Merge pull request #1062 from visuddhinanda/laravel

:bug: 紧急修复,无法重置密码
visuddhinanda 3 năm trước cách đây
mục cha
commit
0d53b6c074

+ 1 - 1
app/Http/Api/StudioApi.php

@@ -20,7 +20,7 @@ class StudioApi{
     }
     public static function getById($id){
         //TODO 改为studio table
-        if(empty($name)){
+        if(empty($id)){
             return false;
         }
         $userinfo = new \UserInfo();

+ 3 - 0
app/Http/Controllers/CourseController.php

@@ -210,6 +210,7 @@ class CourseController extends Controller
         }
         $course->title = $request->get('title');
         $course->subtitle = $request->get('subtitle');
+        $course->summary = $request->get('summary');
         if($request->has('cover')) {$course->cover = $request->get('cover');}
         $course->content = $request->get('content');
         if($request->has('teacher_id')) {$course->teacher = $request->get('teacher_id');}
@@ -218,6 +219,8 @@ class CourseController extends Controller
         if($request->has('publicity')) {$course->publicity = $request->get('publicity');}
         $course->start_at = $request->get('start_at');
         $course->end_at = $request->get('end_at');
+        $course->join = $request->get('join');
+        $course->request_exp = $request->get('request_exp');
         $course->save();
         return $this->ok($course);
     }

+ 38 - 0
app/Http/Controllers/CourseMemberController.php

@@ -31,6 +31,16 @@ class CourseMemberController extends Controller
                 //TODO 判断当前用户是否有指定的 course 的权限
                 $table = CourseMember::where('course_id', $request->get('id'));
 				break;
+            case 'user':
+                //获取某个用户的角色
+                $user = AuthApi::current($request);
+                if(!$user){
+                    return $this->error(__('auth.failed'));
+                }
+                //TODO 判断当前用户是否有指定的 course 的权限
+                $table = CourseMember::where('course_id', $request->get('course'))
+                                    ->where('user_id', $user['user_uid']);
+                break;
         }
         if(isset($_GET["search"])){
             $table = $table->where('title', 'like', $_GET["search"]."%");
@@ -104,7 +114,30 @@ class CourseMemberController extends Controller
         $newMember->user_id = $validated['user_id'];
         $newMember->course_id = $validated['course_id'];
         $newMember->role = $validated['role'];
+        /**
+         * 查找course 信息,根据加入方式设置状态
+         * open : accepted
+         * manual: progressing
+         */
+        $course  = Course::find($validated['course_id']);
+        if($course){
+            switch ($course->join) {
+                case 'open':
+                    $newMember->status = 'accepted';
+                    break;
+                case 'manual':
+                    $newMember->status = 'progressing';
+                    break;
+                default:
+                    # code...
+                    break;
+            }
+        }else{
+            return $this->error('invalid course');
+        }
+
         $newMember->save();
+
         return $this->ok(new CourseMemberResource($newMember));
 
     }
@@ -141,6 +174,9 @@ class CourseMemberController extends Controller
             }
             $courseMember->channel_id = $request->get('channel_id');
         }
+        if($request->has('status')) {
+            $courseMember->status = $request->get('status');
+        }
         $courseMember->save();
         return $this->ok(new CourseMemberResource($courseMember));
 
@@ -194,6 +230,8 @@ class CourseMemberController extends Controller
             $courseUser = CourseMember::where('course_id',$courseMember->course_id)
                 ->where('user_id',$user["user_uid"])
                 ->select('role')->first();
+            //open 课程 可以删除自己
+
            if(!$courseUser || $courseUser->role ==="student"){
                 //普通成员没有删除权限
                 return $this->error(__('auth.failed'));

+ 1 - 0
app/Http/Resources/CourseMemberResource.php

@@ -21,6 +21,7 @@ class CourseMemberResource extends JsonResource
             "course_id"=> $this->course_id,
             "role"=> $this->role,
             "user"=> UserApi::getById($this->user_id),
+            "status"=> $this->status,
             "created_at"=> $this->created_at,
             "updated_at"=> $this->updated_at,
         ];

+ 23 - 0
app/Http/Resources/CourseResource.php

@@ -8,6 +8,7 @@ use App\Http\Api\StudioApi;
 use App\Models\Collection;
 use App\Models\Channel;
 use App\Models\CourseMember;
+use App\Http\Api\AuthApi;
 
 class CourseResource extends JsonResource
 {
@@ -23,6 +24,7 @@ class CourseResource extends JsonResource
             "id"=>$this->id,
             "title"=> $this->title,
             "subtitle"=> $this->subtitle,
+            "summary"=> $this->summary,
             "teacher"=> UserApi::getById($this->teacher),
             "course_count"=>10,
             "member_count"=>CourseMember::where('course_id',$this->id)->count(),
@@ -33,6 +35,8 @@ class CourseResource extends JsonResource
             "content_type"=> $this->content_type,
             "cover"=> $this->cover,
             "channel_id"=>$this->channel_id,
+            "join"=> $this->join,
+            "request_exp"=> $this->request_exp,
             "created_at"=> $this->created_at,
             "updated_at"=> $this->updated_at,
         ];
@@ -50,6 +54,25 @@ class CourseResource extends JsonResource
             }
         }
 
+        if($request->get('view')==="study"){
+            $user = AuthApi::current($request);
+                if(!$user){
+                    return $this->error(__('auth.failed'));
+                }
+            $course_member = CourseMember::where('user_id',$user["user_uid"])
+                                  ->where('course_id',$this->id)
+                                  ->select('status')
+                                  ->first();
+            if($course_member){
+                $data['my_status'] = $course_member->status;
+            }
+        }else{
+            //计算待审核
+            $data['count_progressing'] = CourseMember::where('course_id',$this->id)
+                                                ->where('status',"progressing")
+                                                ->count();
+        }
+
         return $data;
     }
 }

+ 40 - 0
database/migrations/2023_02_02_135125_add_join_in_courses.php

@@ -0,0 +1,40 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddJoinInCourses extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('courses', function (Blueprint $table) {
+            //
+			$table->string('join',16)->default('invite')->index();
+			$table->string('request_exp',16)->default('none')->index();
+			$table->string('summary',256)->nullable();
+
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('courses', function (Blueprint $table) {
+            //
+            $table->dropColumn('join');
+            $table->dropColumn('request_exp');
+            $table->dropColumn('summary');
+
+        });
+    }
+}

+ 1 - 1
public/app/api/user.php

@@ -3,7 +3,7 @@ require_once "../db/user.php";
 require_once "../redis/function.php";
 require_once "../public/function.php";
 
-$model = new User(redis_connect());
+$model = new PCD_User(redis_connect());
 
 switch ($_REQUEST["_method"]) {
 	case 'index':

+ 1 - 1
public/app/db/user.php

@@ -27,7 +27,7 @@ CREATE TABLE users (
     updated_at    TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL //自动更新
 );
 */
-class User extends Table
+class PCD_User extends Table
 {
     function __construct($redis=false) {
 		parent::__construct(_FILE_DB_USERINFO_, "user", "", "",$redis);