diff --git a/app/Http/Controllers/Admin/VisitAuditController.php b/app/Http/Controllers/Admin/VisitAuditController.php index 8e8fde2..6051646 100644 --- a/app/Http/Controllers/Admin/VisitAuditController.php +++ b/app/Http/Controllers/Admin/VisitAuditController.php @@ -183,7 +183,7 @@ class VisitAuditController extends CommonController 'value' => $visit->company_name ], ]; - Visit::subMsg('IczaKkCmwf55tAAzCcxb_fbbf5L25SWrSKvaBrkIyk4', $user->openid, $templateData); + Visit::subMsg('IczaKkCmwf55tAAzCcxb_fbbf5L25SWrSKvaBrkIyk4', $user->openid, $templateData,$all['visit_id']); } // 审核记录 $auditAdmin = Admin::find($model->audit_admin_id); diff --git a/app/Http/Controllers/Admin/VisitController.php b/app/Http/Controllers/Admin/VisitController.php index 19df06c..bad3bc0 100644 --- a/app/Http/Controllers/Admin/VisitController.php +++ b/app/Http/Controllers/Admin/VisitController.php @@ -45,7 +45,7 @@ class VisitController extends CommonController public function index() { $all = request()->all(); - $list = Visit::with('visitTime', 'admin', 'visitArea', 'acceptAdmin.department', 'acceptAdminSignFile', 'acceptGoodsAdmin.department', 'audit.auditAdmin')->where(function ($query) use ($all) { + $list = Visit::with('gateLogs', 'visitTime', 'admin', 'visitArea', 'acceptAdmin.department', 'acceptAdminSignFile', 'acceptGoodsAdmin.department', 'audit.auditAdmin')->where(function ($query) use ($all) { if (isset($all['keyword'])) { $query->where('name', 'like', '%' . $all['keyword'] . '%'); } diff --git a/app/Http/Controllers/Mobile/UserController.php b/app/Http/Controllers/Mobile/UserController.php index 31722c9..b4fc719 100644 --- a/app/Http/Controllers/Mobile/UserController.php +++ b/app/Http/Controllers/Mobile/UserController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Mobile; use App\Helpers\ResponseCode; use App\Helpers\StarterResponseCode; +use App\Models\Config; use App\Models\User; use App\Models\Visit; use EasyWeChat\Factory; @@ -161,7 +162,7 @@ class UserController extends CommonController public function myVisit() { $all = request()->all(); - $list = Visit::with('logs.admin','logs.user', 'visitTime', 'admin', 'visitArea', 'acceptAdmin.department', 'acceptAdminSignFile', 'acceptGoodsAdmin.department')->where('user_id', $this->getUserId()) + $list = Visit::with('logs.admin', 'logs.user', 'visitTime', 'admin', 'visitArea', 'acceptAdmin.department', 'acceptAdminSignFile', 'acceptGoodsAdmin.department')->where('user_id', $this->getUserId()) ->where(function ($query) use ($all) { if (isset($all['type'])) { $query->where('type', $all['type']); @@ -197,8 +198,27 @@ class UserController extends CommonController if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - $detail = Visit::with('logs.admin','logs.user','visitTime', 'admin', 'visitArea', 'acceptAdmin.department', 'acceptAdminSignFile', 'acceptGoodsAdmin.department')->find($all['id']); + $detail = Visit::with('logs.admin', 'logs.user', 'visitTime', 'admin', 'visitArea', 'acceptAdmin.department', 'acceptAdminSignFile', 'acceptGoodsAdmin.department')->find($all['id']); return $this->success($detail); } + /** + * @OA\Get( + * path="/api/mobile/user/config", + * tags={"小程序-用户管理"}, + * summary="配置信息", + * description="", + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), + * @OA\Response( + * response="200", + * description="暂无" + * ) + * ) + */ + public function config() + { + $list = Config::get(); + return $this->success($list); + } + } diff --git a/app/Http/Controllers/Mobile/VisitController.php b/app/Http/Controllers/Mobile/VisitController.php index f1f7278..e533421 100644 --- a/app/Http/Controllers/Mobile/VisitController.php +++ b/app/Http/Controllers/Mobile/VisitController.php @@ -6,11 +6,13 @@ use App\Helpers\ResponseCode; use App\Models\Admin; use App\Models\Department; use App\Models\Study; +use App\Models\StudyLog; use App\Models\Visit; use App\Models\VisitArea; use App\Models\VisitAudit; use App\Models\VisitLog; use App\Models\VisitTime; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; @@ -130,7 +132,7 @@ class VisitController extends CommonController 'value' => $accpetDepartment->name ?? '' ], ]; - $res = Visit::subMsg('DmzNRREPFdZrMWconNDdbj_ebtVPRWufq27kRQ25eNg', $this->getUser()->openid, $templateData); + $res = Visit::subMsg('DmzNRREPFdZrMWconNDdbj_ebtVPRWufq27kRQ25eNg', $this->getUser()->openid, $templateData, $model->id); DB::commit(); return $this->success('更新成功'); } catch (\Exception $exception) { @@ -216,4 +218,59 @@ class VisitController extends CommonController return $this->success($list); } + /** + * @OA\Get( + * path="/api/mobile/visit/ask-log", + * tags={"小程序-学习"}, + * summary="获取学习记录", + * description="", + * @OA\Parameter(name="type", in="query", @OA\Schema(type="string"), required=true, description="类型"), + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), + * @OA\Response( + * response="200", + * description="暂无" + * ) + * ) + */ + public function askLog() + { + $type = request('type'); + $log = StudyLog::where('type', $type)->orderBy('id', 'desc')->first(); + if (empty($log)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '未学习']); + } + $diff = Carbon::parse($log->created_at)->diffInDays(Carbon::now()); + if ($diff > $log->expire_day) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '学习过期']); + } + return $this->success("学习有效中"); + } + + /** + * @OA\Post( + * path="/api/mobile/visit/ask-save", + * tags={"小程序-学习"}, + * summary="保存学习记录", + * description="", + * @OA\Parameter(name="content", in="query", @OA\Schema(type="string"), required=true, description="内容json"), + * @OA\Parameter(name="ask", in="query", @OA\Schema(type="string"), required=true, description="问题json"), + * @OA\Parameter(name="expire_day", in="query", @OA\Schema(type="string"), required=true, description="有效天数"), + * @OA\Parameter(name="type", in="query", @OA\Schema(type="string"), required=true, description="类型 init型"), + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), + * @OA\Response( + * response="200", + * description="暂无" + * ) + * ) + */ + public function askSave() + { + $all = request()->all(); + $model = new StudyLog(); + $all['user_id'] = $this->getUserId(); + $model->fill($all); + $res = $model->save(); + return $this->success($model); + } + } diff --git a/app/Models/GateLog.php b/app/Models/GateLog.php index d0fac54..a40393c 100644 --- a/app/Models/GateLog.php +++ b/app/Models/GateLog.php @@ -2,7 +2,7 @@ namespace App\Models; -class GateLog extends SoftDeletesModel +class GateLog extends CommonModel { protected $guarded = ['id']; diff --git a/app/Models/StudyLog.php b/app/Models/StudyLog.php new file mode 100644 index 0000000..243e4e7 --- /dev/null +++ b/app/Models/StudyLog.php @@ -0,0 +1,13 @@ +'json', + 'ask'=>'json', + ]; +} diff --git a/app/Models/Visit.php b/app/Models/Visit.php index 37996fe..ce992f0 100644 --- a/app/Models/Visit.php +++ b/app/Models/Visit.php @@ -78,8 +78,13 @@ class Visit extends SoftDeletesModel return $this->hasMany(VisitLog::class, 'visit_id', 'id'); } + public function gateLogs() + { + return $this->hasMany(GateLog::class, 'code', 'code'); + } + // 小程序订阅消息 - public static function subMsg($template_id, $openid, $data) + public static function subMsg($template_id, $openid, $data,$id) { $config = [ 'app_id' => \config('app.wechat_appid'), @@ -89,7 +94,7 @@ class Visit extends SoftDeletesModel $data = [ 'template_id' => $template_id, 'touser' => $openid, - 'page' => '', + 'page' => 'pages/visit/detail?id=' . $id, 'data' => $data ]; return $app->subscribe_message->send($data); diff --git a/database/migrations/2023_04_10_140024_alert_visits_table.php b/database/migrations/2023_04_10_140024_alert_visits_table.php deleted file mode 100644 index b59dade..0000000 --- a/database/migrations/2023_04_10_140024_alert_visits_table.php +++ /dev/null @@ -1,33 +0,0 @@ -json('person_no')->nullable()->comment('人牌'); - $table->json('car_no')->nullable()->comment('车牌'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('visits', function (Blueprint $table) { - // - }); - } -}; diff --git a/database/migrations/2023_04_12_142152_create_study_logs_table.php b/database/migrations/2023_04_12_142152_create_study_logs_table.php new file mode 100644 index 0000000..f973440 --- /dev/null +++ b/database/migrations/2023_04_12_142152_create_study_logs_table.php @@ -0,0 +1,39 @@ +increments('id'); + $table->integer('admin_id')->nullable()->comment('不用填'); + $table->integer('department_id')->nullable()->comment('不用填'); + $table->integer('user_id'); + $table->json('content')->nullable(); + $table->json('ask')->nullable(); + $table->integer('expire_day')->comment('有效天数')->nullable(); + $table->boolean('type')->comment('类型')->nullable(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('study_logs'); + } +} diff --git a/routes/api.php b/routes/api.php index 8a37524..08249f1 100644 --- a/routes/api.php +++ b/routes/api.php @@ -84,7 +84,8 @@ Route::group(["namespace" => "Admin", "prefix" => "admin", "middleware" => "sanc // 前台 Route::get('mobile/user/login', [\App\Http\Controllers\Mobile\UserController::class, 'login']); -Route::group(["namespace" => "Mobile", "prefix" => "mobile","middleware" => "sanctum.jwt:mobile"], function () { +Route::get('mobile/user/config', [\App\Http\Controllers\Mobile\UserController::class, 'config']); +Route::group(["namespace" => "Mobile", "prefix" => "mobile", "middleware" => "sanctum.jwt:mobile"], function () { Route::post('user/save', [\App\Http\Controllers\Mobile\UserController::class, 'save']); Route::get('user/mobile', [\App\Http\Controllers\Mobile\UserController::class, 'mobile']); Route::get('user/show', [\App\Http\Controllers\Mobile\UserController::class, 'show']); @@ -96,4 +97,7 @@ Route::group(["namespace" => "Mobile", "prefix" => "mobile","middleware" => "san Route::get('visit/visit-area', [\App\Http\Controllers\Mobile\VisitController::class, 'visitArea']); Route::get('visit/visit-time', [\App\Http\Controllers\Mobile\VisitController::class, 'visitTime']); + Route::get('visit/ask-log', [\App\Http\Controllers\Mobile\VisitController::class, 'askLog']); + Route::post('visit/ask-save', [\App\Http\Controllers\Mobile\VisitController::class, 'askSave']); + });