master
cody 4 months ago
parent b00639690b
commit 9be57fe672

@ -50,7 +50,7 @@ class CourseContentController extends BaseController
{
$all = request()->all();
$list = $this->model->with($all['show_relation'] ?? [])
->withCount('courseKeeps')
->withCount('courseKeeps', 'courseContentEvaluationForms', 'courseContentEvaluationAsks')
->withCount(['courseKeeps as user_sign_total' => function ($query) {
$query->where('status', 1);
}])->withCount(['courseKeeps as user_lack_sign_total' => function ($query) {
@ -135,6 +135,7 @@ class CourseContentController extends BaseController
* @OA\Parameter(name="teacher_id", in="query", @OA\Schema(type="integer"), description="老师ID"),
* @OA\Parameter(name="address", in="query", @OA\Schema(type="string"), description="地址"),
* @OA\Parameter(name="theme", in="query", @OA\Schema(type="string"), description="主题"),
* @OA\Parameter(name="course_content_evaluation_title", in="query", @OA\Schema(type="string"), description="问卷标题"),
* @OA\Response(
* response=200,
* description="操作成功"
@ -271,7 +272,7 @@ class CourseContentController extends BaseController
}
DB::beginTransaction();
try {
// CourseContent::where('course_id', $records[0]['course_id'])->delete();
// CourseContent::where('course_id', $records[0]['course_id'])->delete();
Course::where('id', $records[0]['course_id'])->update(['course_content_status' => 0]);
// 分段导入
foreach ($records as $item) {

@ -6,7 +6,7 @@ use App\Exports\BaseExport;
use App\Helpers\ResponseCode;
use App\Models\AppointmentType;
use App\Models\Book;
use App\Models\CourseContentEvaluationField;
use App\Models\CourseContentEvaluationAsk;
use App\Models\CustomForm;
use App\Models\CustomFormField;
use App\Models\SupplyDemand;
@ -15,7 +15,7 @@ use Illuminate\Support\Facades\Validator;
use Maatwebsite\Excel\Facades\Excel;
use Rap2hpoutre\FastExcel\FastExcel;
class CourseContentEvaluationFieldController extends BaseController
class CourseContentEvaluationAskController extends BaseController
{
/**
@ -23,14 +23,14 @@ class CourseContentEvaluationFieldController extends BaseController
*/
public function __construct()
{
parent::__construct(new CourseContentEvaluationField());
parent::__construct(new CourseContentEvaluationAsk());
}
/**
* @OA\Get(
* path="/api/admin/course-content-evaluation-field/index",
* tags={"评价字段管理"},
* path="/api/admin/course-content-evaluation-ask/index",
* tags={"评价问题管理"},
* summary="列表",
* description="",
* @OA\Parameter(name="is_export", in="query", @OA\Schema(type="string"), required=false, description="是否导出0否1是"),
@ -56,8 +56,8 @@ class CourseContentEvaluationFieldController extends BaseController
/**
* @OA\Get(
* path="/api/admin/course-content-evaluation-field/show",
* tags={"评价字段管理"},
* path="/api/admin/course-content-evaluation-ask/show",
* tags={"评价问题管理"},
* summary="详情",
* description="",
* @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=true, description="id"),
@ -87,8 +87,8 @@ class CourseContentEvaluationFieldController extends BaseController
/**
* @OA\Post(
* path="/api/admin/course-content-evaluation-field/save",
* tags={"评价字段管理"},
* path="/api/admin/course-content-evaluation-ask/save",
* tags={"评价问题管理"},
* summary="保存",
* description="",
* @OA\Parameter(name="id", in="query", @OA\Schema(type="integer", format="int64"), required=true, description="课程内容评价字段ID存在则更新不存在则新增"),
@ -113,8 +113,8 @@ class CourseContentEvaluationFieldController extends BaseController
/**
* @OA\Get(
* path="/api/admin/course-content-evaluation-field/destroy",
* tags={"评价字段管理"},
* path="/api/admin/course-content-evaluation-ask/destroy",
* tags={"评价问题管理"},
* summary="删除",
* description="",
* @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=true, description="id"),

@ -13,6 +13,7 @@ use App\Models\Course;
use App\Models\CourseAppointmentTotal;
use App\Models\CourseContent;
use App\Models\CourseContentCheck;
use App\Models\CourseContentEvaluationForm;
use App\Models\CourseSign;
use App\Models\Notice;
use App\Models\Order;
@ -257,7 +258,7 @@ class CourseController extends CommonController
/**
* @OA\Get(
* path="/api/mobile/course/my-course-content-detail",
* path="/api/mobile/course/course-content-detail",
* tags={"小程序-课程"},
* summary="课表的课堂详情",
* @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="string"), required=false, description="课表的课堂id"),
@ -267,7 +268,7 @@ class CourseController extends CommonController
* )
* )
*/
public function myCourseContentDetail()
public function courseContentDetail()
{
$all = \request()->all();
$messages = [
@ -279,12 +280,52 @@ class CourseController extends CommonController
if ($validator->fails()) {
return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]);
}
$detail = CourseContent::with(['course', 'teacher', 'courseKeeps', 'courseContentEvaluationFields' => function ($query) {
$detail = CourseContent::with(['course', 'teacher', 'courseKeeps', 'courseContentEvaluationAsks' => function ($query) {
$query->orderBy('sort');
}])->find($all['course_content_id']);
return $this->success($detail);
}
/**
* @OA\Get(
* path="/api/mobile/course/course-content-form",
* tags={"小程序-课程"},
* summary="提交评价",
* @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="string"), required=false, description="课表的课堂id"),
* @OA\Parameter(name="data", in="query", @OA\Schema(type="string"), required=false, description="表单数据数组"),
* @OA\Response(
* response=200,
* description="操作成功"
* )
* )
*/
public function courseContentForm()
{
$all = \request()->all();
$messages = [
'course_content_id.required' => '课表课堂id必填',
'data.required' => '表单数据必填'
];
$validator = Validator::make($all, [
'course_content_id' => 'required',
'data' => 'required'
], $messages);
if ($validator->fails()) {
return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]);
}
$courseContentEvaluationForm = CourseContentEvaluationForm::where('user_id', $this->getUserId())
->where('course_content_id', $all['course_content_id'])
->first();
if ($courseContentEvaluationForm) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '您已提交过评价']);
}
$model = CourseContentEvaluationForm::create([
'user_id' => $this->getUserId(),
'data' => $all['data']
]);
return $this->success($model);
}
/**
* @OA\Get(

@ -46,9 +46,14 @@ class CourseContent extends SoftDeletesModel
return $this->hasMany(CourseSign::class, 'course_id', 'course_id');
}
public function courseContentEvaluationFields()
public function courseContentEvaluationAsks()
{
return $this->hasMany(CourseContentEvaluationField::class, 'course_content_id', 'id');
return $this->hasMany(CourseContentEvaluationAsk::class, 'course_content_id', 'id');
}
public function courseContentEvaluationForms()
{
return $this->hasMany(CourseContentEvaluationForm::class, 'course_content_id', 'id');
}
}

@ -0,0 +1,8 @@
<?php
namespace App\Models;
class CourseContentEvaluationAsk extends SoftDeletesModel
{
}

@ -1,8 +0,0 @@
<?php
namespace App\Models;
class CourseContentEvaluationField extends SoftDeletesModel
{
}

@ -0,0 +1,9 @@
<?php
namespace App\Models;
class CourseContentEvaluationForm extends SoftDeletesModel
{
protected $casts = ['data' => 'json'];
}

@ -13,7 +13,7 @@ return new class extends Migration
*/
public function up()
{
Schema::create('course_content_evaluation_fields', function (Blueprint $table) {
Schema::create('course_content_evaluation_asks', function (Blueprint $table) {
$table->id();
$table->integer('course_content_id')->nullable()->comment('课程排课id');
// 字段名字

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('course_contents', function (Blueprint $table) {
$table->string('course_content_evaluation_title')->nullable()->comment('问卷标题');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('course_contents', function (Blueprint $table) {
//
});
}
};

@ -182,10 +182,10 @@ Route::group(["namespace" => "Admin", "prefix" => "admin"], function () {
Route::post('book/import', [\App\Http\Controllers\Admin\BookController::class, "import"]);
// 课程评价
Route::get('course-content-evaluation-field/index', [\App\Http\Controllers\Admin\CourseContentEvaluationFieldController::class, "index"]);
Route::get('course-content-evaluation-field/show', [\App\Http\Controllers\Admin\CourseContentEvaluationFieldController::class, "show"]);
Route::post('course-content-evaluation-field/save', [\App\Http\Controllers\Admin\CourseContentEvaluationFieldController::class, "save"]);
Route::get('course-content-evaluation-field/destroy', [\App\Http\Controllers\Admin\CourseContentEvaluationFieldController::class, "destroy"]);
Route::get('course-content-evaluation-ask/index', [\App\Http\Controllers\Admin\CourseContentEvaluationAskController::class, "index"]);
Route::get('course-content-evaluation-ask/show', [\App\Http\Controllers\Admin\CourseContentEvaluationAskController::class, "show"]);
Route::post('course-content-evaluation-ask/save', [\App\Http\Controllers\Admin\CourseContentEvaluationAskController::class, "save"]);
Route::get('course-content-evaluation-ask/destroy', [\App\Http\Controllers\Admin\CourseContentEvaluationAskController::class, "destroy"]);
});
@ -231,7 +231,8 @@ Route::group(["namespace" => "Mobile", "prefix" => "mobile"], function () {
Route::post('course/sign', [\App\Http\Controllers\Mobile\CourseController::class, "sign"]);
Route::get('course/my-course', [\App\Http\Controllers\Mobile\CourseController::class, "myCourse"]);
Route::get('course/my-course-content', [\App\Http\Controllers\Mobile\CourseController::class, "myCourseContent"]);
Route::get('course/my-course-content-detail', [\App\Http\Controllers\Mobile\CourseController::class, "myCourseContentDetail"]);
Route::get('course/course-content-detail', [\App\Http\Controllers\Mobile\CourseController::class, "courseContentDetail"]);
Route::get('course/course-content-form', [\App\Http\Controllers\Mobile\CourseController::class, "courseContentForm"]);
Route::get('course/get-sign', [\App\Http\Controllers\Mobile\CourseController::class, "getSign"]);
Route::post('course/update-sign', [\App\Http\Controllers\Mobile\CourseController::class, "updateSign"]);
// 获取缴费二维码

Loading…
Cancel
Save