Browse Source

楼层管理优化

master
wanghongjun 2 weeks ago
parent
commit
1fa43ba7ee
  1. 4
      app/Http/Controllers/Admin/ParkingManagementController.php
  2. 10
      app/Models/AdminFloor.php
  3. 47
      app/Services/AdminFloorService.php
  4. 15
      app/Services/ParkingManagementService.php
  5. 17
      app/common.php
  6. 2
      database/migrations/2026_02_10_173627_create_admin_floor_table.php

4
app/Http/Controllers/Admin/ParkingManagementController.php

@ -48,12 +48,12 @@ class ParkingManagementController extends BaseController
1
);
$item['name'] = $tr_name ?: $item['name'];
$open_time_res = $this->service->optionTime(
$open_time_res = option_time(
$item['open_time']
);
$item['open_time'] = $open_time_res['time'];
$item['open_time_str'] = $open_time_res['str'];
$close_time_res = $this->service->optionTime(
$close_time_res = option_time(
$item['close_time']
);
$item['close_time'] = $close_time_res['time'];

10
app/Models/AdminFloor.php

@ -17,16 +17,22 @@ class AdminFloor extends Model
= [
'name',
'image_url',
'building_floor'
'building_floor',
'open_time',
'close_time'
];
protected $hidden
= [
'updated_at',
'created_at',
'deleted_at'
];
public function getCreatedAtAttribute($value): string
{
return $value ? date("Y-m-d H:i:s", strtotime($value)) : $value;
}
public static function getName($id)
{
return self::query()->where('id', $id)->value('name') ?? '';

47
app/Services/AdminFloorService.php

@ -12,6 +12,20 @@ class AdminFloorService
{
private static array $buildingFloor = [1 => 'MSCP', 2 => 'GSCP'];
private static array $statusArr = ['disabled', 'enable'];
/**
* @return array|string[]
*/
public static function getStatus(): array
{
$statusArr = self::$statusArr;
foreach ($statusArr as $key => $value) {
$statusArr[$key] = __('admin.' . $value);
}
return $statusArr;
}
/**
* @var OperationLogService
*/
@ -36,7 +50,6 @@ class AdminFloorService
{
try {
DB::beginTransaction();
$region_data = $data['region_data'] ?? [];
if (AdminFloor::query()->where('name', $data['name'])->exists()) {
throw new Exception(__('service.admin_floor.name_exists'));
@ -45,15 +58,21 @@ class AdminFloorService
$model = AdminFloor::query()->create([
'name' => $data['name'],
'image_url' => $data['image_url'],
'open_time' => $data['open_time'],
'close_time' => $data['close_time'],
'building_floor' => $data['building_floor'] ?? 1,
'created_at' => get_datetime()
]);
$this->logService->logCreated($model, 'admin_floor.create');
if ($region_data) {
$this->addAdminFloorRegion($model->id, $region_data);
}
AdminTranslationService::saveTranslation(
$data['name'],
$data['en_name'] ?? '',
$data['tw_name'] ?? '',
$model->id,
4
);
DB::commit();
return $model;
@ -97,7 +116,6 @@ class AdminFloorService
{
try {
DB::beginTransaction();
$region_data = $data['region_data'] ?? [];
// 验证
$existsWhere = [
@ -115,20 +133,21 @@ class AdminFloorService
$model->update([
'name' => $data['name'],
'image_url' => $data['image_url'],
'open_time' => $data['open_time'],
'close_time' => $data['close_time'],
'building_floor' => $data['building_floor'] ?? 1,
'updated_at' => get_datetime()
]);
$this->logService->logUpdated($model, $oldValues, 'admin_floor.update');
// 删除再创建关联
$nameArr = array_column($region_data, 'name');
if (AdminFloorRegion::existsRoleMenu($id, $nameArr)) {
$this->delAdminFloorRegion($id);
if ($region_data) {
$this->addAdminFloorRegion($id, $region_data);
}
}
AdminTranslationService::saveTranslation(
$data['name'],
$data['en_name'] ?? '',
$data['tw_name'] ?? '',
$id,
4
);
DB::commit();
return $model;
@ -166,8 +185,6 @@ class AdminFloorService
$model->delete();
$this->delAdminFloorRegion($id);
DB::commit();
return true;
} catch (Exception $e) {

15
app/Services/ParkingManagementService.php

@ -133,19 +133,4 @@ class ParkingManagementService extends BaseService
}
return $count;
}
public function optionTime($time): array
{
$str = 'AM';
$end_str = 'PM';
$arr = explode(':', $time);
if ($arr[0] > 12) {
$time = ($arr[0] - 12) . ':' . $arr[1];
$str = $end_str;
}
return [
'time' => $time,
'str' => $str
];
}
}

17
app/common.php

@ -182,3 +182,20 @@ if (!function_exists('get_year_month_days')) {
return $dayArr;
}
}
if (!function_exists('option_time')) {
function option_time($time): array
{
$str = 'AM';
$end_str = 'PM';
$arr = explode(':', $time);
if ($arr[0] > 12) {
$time = ($arr[0] - 12) . ':' . $arr[1];
$str = $end_str;
}
return [
'time' => $time,
'str' => $str
];
}
}

2
database/migrations/2026_02_10_173627_create_admin_floor_table.php

@ -17,6 +17,8 @@ return new class extends Migration
$table->string('image_url')->comment('图片路径');
$table->integer('building_floor')->default(1)->comment('所属楼');
$table->tinyInteger('status')->default(1)->comment('状态');
$table->char('open_time', 5)->comment('开门时间');
$table->char('close_time', 5)->comment('关门时间');
$table->timestamps();
$table->softDeletes();
$table->innoDb();

Loading…
Cancel
Save