master
cody 2 months ago
parent 20e0730f95
commit b8f0f151bf

@ -0,0 +1,60 @@
<?php
namespace App\Console\Commands;
use App\Models\Course;
use App\Models\CourseSign;
use App\Models\EmailRecord;
use App\Models\EmailRecordUser;
use App\Models\User;
use App\Repositories\MeetRepository;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Mail;
class AutoSchoolmate extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'auto_schoolmate';
/**
* The console command description.
*
* @var string
*/
protected $description = '已审核学员自动进入校友库';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
// 获取今天上课的课程
$today = date('Y-m-d');
$courses = Course::where('start_date', $today)->where('auto_schoolmate', 1)->get();
foreach ($courses as $course) {
// 获取报名通过的学员
$courseSigns = CourseSign::where('course_id', $course->id)->where('status', 1)->get();
// 用户设置成校友
User::whereIn('id', $courseSigns->pluck('user_id'))->update(['is_schoolmate' => 1]);
}
return $this->info('更新完成');
}
}

@ -28,6 +28,8 @@ class Kernel extends ConsoleKernel
$schedule->command('push_courses')->dailyAt('23:00');
// 更新学员编号
$schedule->command('update_user_no')->dailyAt('00:05');
// 更新课程校友资格
$schedule->command('auto_schoolmate')->dailyAt('23:50');
}
/**

@ -171,6 +171,49 @@ class CourseContentController extends BaseController
return parent::save();
}
/**
* @OA\Post(
* path="/api/admin/course-contents/batch-save",
* tags={"排课"},
* summary="更新或新增",
* @OA\Parameter(name="id", in="query", @OA\Schema(type="integer"), required=true, description="课程ID,多个英文逗号分割"),
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="验证token"),
* @OA\Parameter(name="course_id", in="query", @OA\Schema(type="integer"), description="课程ID"),
* @OA\Parameter(name="start_time", in="query", @OA\Schema(type="string"), description="开始时间,例如11:00"),
* @OA\Parameter(name="end_time", in="query", @OA\Schema(type="string"), description="结束时间,例如11:00"),
* @OA\Parameter(name="date", in="query", @OA\Schema(type="string", format="date"), description="日期"),
* @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="longitude", in="query", @OA\Schema(type="string"), description="经度"),
* @OA\Parameter(name="latitude", in="query", @OA\Schema(type="string"), description="纬度"),
* @OA\Parameter(name="address_detail", in="query", @OA\Schema(type="string"), description="详细地址"),
* @OA\Parameter(name="file_ids", in="query", @OA\Schema(type="string"), description="文件id数组"),
* @OA\Response(
* response=200,
* description="操作成功"
* )
* )
*/
public function batchSave()
{
$all = \request()->all();
DB::beginTransaction();
try {
$ids = explode(',', $all['id']);
foreach ($ids as $id) {
$model = $this->model->find($id);
$model->fill($all);
$model->save();
}
DB::commit();
return $this->success("更新成功");
} catch (\Exception $exception) {
DB::rollBack();
return $this->fail([$exception->getCode(), $exception->getMessage()]);
}
}
/**
* @OA\Get(
* path="/api/admin/course-contents/destroy",

@ -402,6 +402,7 @@ class UserController extends BaseController
* @OA\Parameter(name="company_need_fund", in="query", @OA\Schema(type="integer"), description="公司是否需要融资0否1是"),
* @OA\Parameter(name="sign_from", in="query", @OA\Schema(type="string"), description="报名信息来源"),
* @OA\Parameter(name="remark", in="query", @OA\Schema(type="string"), description="备注"),
* @OA\Parameter(name="is_black", in="query", @OA\Schema(type="string"), description="是否黑名单0否1是"),
* @OA\Parameter(name="has_appointment_total", in="query", @OA\Schema(type="string"), description="预约剩余次数"),
* @OA\Response(
* response=200,

@ -236,6 +236,7 @@ class CourseController extends CommonController
* path="/api/mobile/course/my-course-content",
* tags={"小程序-课程"},
* summary="我的课表",
* @OA\Parameter(name="date", in="query", @OA\Schema(type="string"), required=false, description="日期"),
* @OA\Response(
* response=200,
* description="操作成功"
@ -244,18 +245,24 @@ class CourseController extends CommonController
*/
public function myCourseContent()
{
$list = CourseContent::with('course.typeDetail', 'teacher', 'courseContentEvaluation')->whereHas('course', function ($query) {
$query->where('course_status', '!=', 40)->where('course_content_status', 1);
$query->whereHas('courseSigns', function ($query) {
$query->where('user_id', $this->getUserId())->where('status', 1)->where(function ($q) {
$q->where('fee_status', 1)->orWhere(function ($q) {
$q->whereHas('course', function ($qry) {
$qry->where('is_fee', 0);
$date = request('date');
$list = CourseContent::with('course.typeDetail', 'teacher', 'courseContentEvaluation')
->where(function ($query) use ($date) {
if ($date) {
$query->where('date', $date);
}
})->whereHas('course', function ($query) {
$query->where('course_status', '!=', 40)->where('course_content_status', 1);
$query->whereHas('courseSigns', function ($query) {
$query->where('user_id', $this->getUserId())->where('status', 1)->where(function ($q) {
$q->where('fee_status', 1)->orWhere(function ($q) {
$q->whereHas('course', function ($qry) {
$qry->where('is_fee', 0);
});
});
});
});
});
})->orderBy('date')->get();
})->orderBy('date')->get();
return $this->success(compact('list'));
}
@ -492,6 +499,7 @@ class CourseController extends CommonController
* path="/api/mobile/course/content-check",
* tags={"小程序-课程"},
* summary="签到",
* @OA\Parameter(name="batch_sign", in="query", @OA\Schema(type="string"), required=false, description="是否同日期批量签到0否1是"),
* @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="string"), required=false, description="课表id"),
* @OA\Parameter(name="longitude", in="query", @OA\Schema(type="string"), required=false, description="longitude"),
* @OA\Parameter(name="latitude", in="query", @OA\Schema(type="string"), required=false, description="latitude"),
@ -525,7 +533,8 @@ class CourseController extends CommonController
return $this->fail([ResponseCode::ERROR_BUSINESS, '超出打卡范围']);
}
// 判断当天才能签到
if (date('Y-m-d') != $courseContent->date) {
$today = date('Y-m-d');
if ($today != $courseContent->date) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '不在签到时间']);
}
// 不能重复签到
@ -541,7 +550,32 @@ class CourseController extends CommonController
'longitude' => $all['longitude'],
'latitude' => $all['latitude'],
]);
return $this->success('打卡成功');
// 同日期课程批量签到
$batch_sign = request('batch_sign', 0);
if ($batch_sign) {
$courseContentList = CourseContent::where('date', $today)
->whereHas('course', function ($query) {
$query->where('course_status', '!=', 40)->where('course_content_status', 1);
$query->whereHas('courseSigns', function ($query) {
$query->where('user_id', $this->getUserId())->where('status', 1)->where(function ($q) {
$q->where('fee_status', 1)->orWhere(function ($q) {
$q->whereHas('course', function ($qry) {
$qry->where('is_fee', 0);
});
});
});
});
})->get();
foreach ($courseContentList as $courseContent) {
CourseContentCheck::create([
'course_content_id' => $courseContent->id,
'user_id' => $this->getUserId(),
'longitude' => $all['longitude'],
'latitude' => $all['latitude'],
]);
}
}
return $this->success('签到成功');
}
/**

@ -0,0 +1,32 @@
<?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('courses', function (Blueprint $table) {
// 已审核学员是否自动进入校友库
$table->boolean('auto_schoolmate')->default(false)->comment('已审核学员是否自动进入校友库0否1是');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('courses', function (Blueprint $table) {
//
});
}
};

@ -0,0 +1,33 @@
<?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('users', function (Blueprint $table) {
// 是否黑名单
$table->boolean('is_black')->default(0)->comment('是否黑名单');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
//
});
}
};

@ -54,6 +54,7 @@ Route::group(["namespace" => "Admin", "prefix" => "admin"], function () {
Route::get('course-contents/index', [\App\Http\Controllers\Admin\CourseContentController::class, "index"]);
Route::get('course-contents/show', [\App\Http\Controllers\Admin\CourseContentController::class, "show"]);
Route::post('course-contents/save', [\App\Http\Controllers\Admin\CourseContentController::class, "save"]);
Route::post('course-contents/batch-save', [\App\Http\Controllers\Admin\CourseContentController::class, "batchSave"]);
Route::get('course-contents/destroy', [\App\Http\Controllers\Admin\CourseContentController::class, "destroy"]);
Route::post('course-contents/excel-show', [\App\Http\Controllers\Admin\CourseContentController::class, "excelShow"]);
Route::post('course-contents/import', [\App\Http\Controllers\Admin\CourseContentController::class, "import"]);

Loading…
Cancel
Save