master
cody 11 months ago
parent a0c3bc18f5
commit 87350b8a5a

@ -0,0 +1,72 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSecurityGuardsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('security_guards', function (Blueprint $table) {
$table->comment('安保人员管理');
$table->increments('id');
$table->integer('admin_id')->nullable()->comment('创建人ID');
$table->integer('department_id')->nullable()->comment('部门ID');
// 基本信息
$table->string('name')->comment('姓名');
$table->string('employee_no')->unique()->comment('工号');
$table->string('mobile')->comment('手机号');
$table->string('idcard')->comment('身份证号');
$table->enum('gender', ['male', 'female'])->comment('性别');
$table->date('birth_date')->nullable()->comment('出生日期');
$table->string('address')->nullable()->comment('住址');
// 工作信息
$table->enum('position', ['guard', 'supervisor', 'captain', 'manager'])->default('guard')->comment('职位:安保员、班长、队长、经理');
$table->enum('shift', ['day', 'night', '24h'])->default('day')->comment('班次白班、夜班、24小时');
$table->date('hire_date')->comment('入职日期');
$table->date('contract_start')->nullable()->comment('合同开始日期');
$table->date('contract_end')->nullable()->comment('合同结束日期');
$table->enum('status', ['active', 'inactive', 'suspended', 'terminated'])->default('active')->comment('状态:在职、离职、停职、解雇');
// 资质信息
$table->json('certifications')->nullable()->comment('资质证书:数组包含证书名称、编号、有效期');
$table->json('training_records')->nullable()->comment('培训记录:数组包含培训内容、时间、成绩');
$table->string('emergency_contact')->nullable()->comment('紧急联系人');
$table->string('emergency_phone')->nullable()->comment('紧急联系电话');
// 工作区域
$table->json('work_areas')->nullable()->comment('负责工作区域数组包含区域ID');
$table->json('equipment_assigned')->nullable()->comment('分配设备数组包含设备ID');
// 其他信息
$table->text('remark')->nullable()->comment('备注');
$table->json('photos')->nullable()->comment('照片数组包含照片文件ID');
$table->timestamps();
$table->softDeletes();
// 索引
$table->index(['employee_no']);
$table->index(['status']);
$table->index(['position']);
$table->index(['shift']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('security_guards');
}
}

@ -0,0 +1,98 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSecurityEquipmentTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('security_equipment', function (Blueprint $table) {
$table->comment('安保设备管理');
$table->increments('id');
$table->integer('admin_id')->nullable()->comment('创建人ID');
$table->integer('department_id')->nullable()->comment('部门ID');
// 基本信息
$table->string('name')->comment('设备名称');
$table->string('model')->comment('设备型号');
$table->string('serial_no')->unique()->comment('序列号');
$table->string('asset_no')->unique()->comment('资产编号');
$table->enum('type', ['camera', 'alarm', 'access_control', 'communication', 'monitoring', 'other'])->comment('设备类型:摄像头、报警器、门禁、通讯设备、监控设备、其他');
$table->enum('category', ['surveillance', 'access_control', 'alarm_system', 'communication', 'emergency', 'other'])->comment('设备分类:监控、门禁、报警系统、通讯、应急、其他');
// 位置信息
$table->string('location')->comment('安装位置');
$table->string('building')->nullable()->comment('建筑物');
$table->string('floor')->nullable()->comment('楼层');
$table->string('room')->nullable()->comment('房间号');
$table->decimal('latitude', 10, 8)->nullable()->comment('纬度');
$table->decimal('longitude', 11, 8)->nullable()->comment('经度');
// 设备状态
$table->enum('status', ['active', 'inactive', 'maintenance', 'fault', 'retired'])->default('active')->comment('状态:正常、停用、维护中、故障、报废');
$table->enum('online_status', ['online', 'offline', 'unknown'])->default('unknown')->comment('在线状态:在线、离线、未知');
// 采购信息
$table->string('manufacturer')->nullable()->comment('制造商');
$table->string('supplier')->nullable()->comment('供应商');
$table->date('purchase_date')->nullable()->comment('采购日期');
$table->decimal('purchase_price', 10, 2)->nullable()->comment('采购价格');
$table->date('warranty_start')->nullable()->comment('保修开始日期');
$table->date('warranty_end')->nullable()->comment('保修结束日期');
// 安装信息
$table->date('install_date')->nullable()->comment('安装日期');
$table->string('installer')->nullable()->comment('安装人员');
$table->text('install_notes')->nullable()->comment('安装备注');
// 维护信息
$table->date('last_maintenance')->nullable()->comment('最后维护日期');
$table->date('next_maintenance')->nullable()->comment('下次维护日期');
$table->integer('maintenance_interval')->nullable()->comment('维护间隔(天)');
$table->text('maintenance_notes')->nullable()->comment('维护备注');
// 配置信息
$table->json('config')->nullable()->comment('设备配置JSON格式存储设备参数');
$table->string('ip_address')->nullable()->comment('IP地址');
$table->string('mac_address')->nullable()->comment('MAC地址');
$table->string('firmware_version')->nullable()->comment('固件版本');
// 责任人
$table->integer('responsible_guard_id')->nullable()->comment('负责安保人员ID');
$table->integer('responsible_admin_id')->nullable()->comment('负责管理员ID');
// 其他信息
$table->text('description')->nullable()->comment('设备描述');
$table->text('remark')->nullable()->comment('备注');
$table->json('photos')->nullable()->comment('设备照片数组包含照片文件ID');
$table->json('documents')->nullable()->comment('相关文档数组包含文档文件ID');
$table->timestamps();
$table->softDeletes();
// 索引
$table->index(['serial_no']);
$table->index(['asset_no']);
$table->index(['type']);
$table->index(['status']);
$table->index(['location']);
$table->index(['responsible_guard_id']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('security_equipment');
}
}

@ -20,77 +20,79 @@ Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
Route::any('test', [\App\Http\Controllers\Admin\OtherController::class, "test"]);
// 访客预约管理路由
Route::prefix('admin/visits')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\VisitController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\VisitController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\VisitController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\VisitController::class, 'destroy']);
});
Route::group(['middleware' => ['sanctum.jwt:admin']], function () {
// 访客预约管理路由
Route::prefix('admin/visits')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\VisitController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\VisitController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\VisitController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\VisitController::class, 'destroy']);
});
// 学习内容管理路由
Route::prefix('admin/studies')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\StudyController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\StudyController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\StudyController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\StudyController::class, 'destroy']);
});
Route::prefix('admin/studies')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\StudyController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\StudyController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\StudyController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\StudyController::class, 'destroy']);
});
// 学习题目管理路由
Route::prefix('admin/study-asks')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\StudyAskController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\StudyAskController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\StudyAskController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\StudyAskController::class, 'destroy']);
});
Route::prefix('admin/study-asks')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\StudyAskController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\StudyAskController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\StudyAskController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\StudyAskController::class, 'destroy']);
});
// 拜访时间管理路由
Route::prefix('admin/visit-times')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\VisitTimeController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\VisitTimeController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\VisitTimeController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\VisitTimeController::class, 'destroy']);
});
Route::prefix('admin/visit-times')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\VisitTimeController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\VisitTimeController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\VisitTimeController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\VisitTimeController::class, 'destroy']);
});
// 系统配置管理路由
Route::prefix('admin/configs')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\ConfigController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\ConfigController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\ConfigController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\ConfigController::class, 'destroy']);
});
Route::prefix('admin/configs')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\ConfigController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\ConfigController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\ConfigController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\ConfigController::class, 'destroy']);
});
// 黑名单管理路由
Route::prefix('admin/blacklists')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\BlacklistController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\BlacklistController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\BlacklistController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\BlacklistController::class, 'destroy']);
});
Route::prefix('admin/blacklists')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\BlacklistController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\BlacklistController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\BlacklistController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\BlacklistController::class, 'destroy']);
});
// 拜访区域管理路由
Route::prefix('admin/visit-areas')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\VisitAreaController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\VisitAreaController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\VisitAreaController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\VisitAreaController::class, 'destroy']);
});
Route::prefix('admin/visit-areas')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\VisitAreaController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\VisitAreaController::class, 'show']);
Route::post('save', [\App\Http\Controllers\Admin\VisitAreaController::class, 'save']);
Route::get('destroy', [\App\Http\Controllers\Admin\VisitAreaController::class, 'destroy']);
});
// 拜访日志管理路由
Route::prefix('admin/visit-logs')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\VisitLogController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\VisitLogController::class, 'show']);
});
Route::prefix('admin/visit-logs')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\VisitLogController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\VisitLogController::class, 'show']);
});
// 门岗记录管理路由
Route::prefix('admin/gate-logs')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\GateLogController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\GateLogController::class, 'show']);
});
Route::prefix('admin/gate-logs')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\GateLogController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\GateLogController::class, 'show']);
});
// 拜访审核管理路由
Route::prefix('admin/visit-audits')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\VisitAuditController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\VisitAuditController::class, 'show']);
Route::prefix('admin/visit-audits')->group(function () {
Route::get('index', [\App\Http\Controllers\Admin\VisitAuditController::class, 'index']);
Route::get('show', [\App\Http\Controllers\Admin\VisitAuditController::class, 'show']);
});
});

Loading…
Cancel
Save