Browse Source

模式管理接口优化

master
wanghongjun 4 weeks ago
parent
commit
e587ab8b32
  1. 22
      app/Console/Commands/AutomaticallyStartActivity.php
  2. 19
      app/Http/Controllers/Admin/EventCalendarController.php
  3. 3
      app/Models/EventCalendar.php
  4. 51
      app/Services/EventCalendarService.php
  5. 1
      database/migrations/2026_01_27_084640_create_admin_table.php
  6. 1
      database/migrations/2026_04_23_143449_create_event_calendar_table.php

22
app/Console/Commands/AutomaticallyStartActivity.php

@ -92,20 +92,24 @@ class AutomaticallyStartActivity extends Command
): void {
$model = EventCalendar::query()->findOrFail($id);
$oldValue = $model->toArray();
// 默认超级管理员修改
$user_id = DB::table('admin_users')->where('username', 'Admin')
->value('id');
$model->update([
'status' => $status,
'updated_at' => date("Y-m-d H:i:s", time())
'status' => $status,
'admin_user_id' => $user_id,
'updated_at' => date("Y-m-d H:i:s", time())
]);
// 记录日志
$this->logService->logUpdated($model, $oldValue, 'event_calendar.update');
$this->logService->logUpdated(
$model,
$oldValue,
'event_calendar.update'
);
// 记录警报信息, 切换任务
if ($is_notice) {
$data = [
'pattern_id' => $oldValue['pattern_id']
];
$user_id = DB::table('admin_users')->where('username', 'Admin')
->value('id');
AdminNoticeService::createData(2, 5, $data, $user_id);
$pattern_id = $oldValue['pattern_id'];
AdminNoticeService::addChangeModeNotice($pattern_id, $user_id);
}
}
}

19
app/Http/Controllers/Admin/EventCalendarController.php

@ -81,16 +81,25 @@ class EventCalendarController extends BaseController
$statusArr = EventCalendarService::getStatus();
$items = $query->latest()->forPage($page, $perPage)->select()
->get()->each(function ($item) use ($statusArr) {
$item['pattern_name'] = ParkingPattern::getName(
$item['pattern_id']
);
$pattern = ParkingPattern::query()->find($item['pattern_id']);
$item['pattern_name'] = '';
$item['show_release'] = 0;
$item['show_change'] = 0;
if ($pattern) {
$item['pattern_name'] = $pattern['name'];
if ($item['status'] == 1) {
$item['show_release'] = $pattern['release'];
$item['show_change'] = $pattern['change'];
}
}
$item['admin_username'] = AdminUsers::getUsername(
$item['admin_user_id']
);
$item['status_index'] = $item['status'];
$item['status'] = $statusArr[$item['status']] ?? '';
$item['remake'] = '';
unset($item['pattern_id'], $item['admin_user_id']);
unset($item['pattern_id'], $item['admin_user_id'], $item['is_manual']);
return $item;
});
return $this->responseService->success([
@ -308,7 +317,7 @@ class EventCalendarController extends BaseController
{
try {
$this->validateId($id, EventCalendar::class);
$this->service->endModel($id);
$this->service->endModel($id, $this->adminUserId);
return $this->responseService->success(
null,
__('exception.event_calendar.end_succeeded')

3
app/Models/EventCalendar.php

@ -18,7 +18,8 @@ class EventCalendar extends Model
'start_time',
'end_time',
'admin_user_id',
'status'
'status',
'is_manual'
];
protected $hidden

51
app/Services/EventCalendarService.php

@ -158,7 +158,7 @@ class EventCalendarService extends BaseService
DB::beginTransaction();
$model = EventCalendar::query()->findOrFail($id);
if ($model['status'] > 0) {
if ($model['status'] == 1) {
throw new Exception(__('service.event_calendar.error_status'));
}
@ -174,7 +174,7 @@ class EventCalendarService extends BaseService
}
}
public function endModel(int $id): bool
public function endModel(int $id, $user_id): bool
{
try {
DB::beginTransaction();
@ -185,6 +185,7 @@ class EventCalendarService extends BaseService
}
$update = [
'status' => 2,
'admin_user_id' => $user_id,
'updated_at' => get_datetime()
];
$model->update($update);
@ -209,18 +210,47 @@ class EventCalendarService extends BaseService
$pattern_id = $data['pattern_id'];
$end_time = $data['end_time'];
// 将其他模式未结束,在运行中的全部结束
$nowWhere = [
['status', '=', 1],
['pattern_id', '<>', $pattern_id]
];
$nowQuery = EventCalendar::query()->where($nowWhere)->first();
if ($nowQuery) {
$model = EventCalendar::query()->findOrFail($nowQuery['id']);
$nowSave = [
'status' => 2,
'updated_at' => get_datetime(),
'admin_user_id' => $user_id
];
$oldValues = $model->toArray();
// 小于还未到结束时间,自动跳转计划中
if ($oldValues['end_time']) {
if (time() < strtotime($oldValues['end_time'])) {
$nowSave['status'] = 0;
}
}
$model->update($nowSave);
$this->logService->logUpdated(
$model,
$oldValues,
'event_calendar.update'
);
}
$where = [
'pattern_id' => $pattern_id,
'status' => 1
['pattern_id', '=', $pattern_id],
['status', 'in', [0,1]]
];
$query = EventCalendar::query()->where($where)->first();
$end_time = get_datetime('datetime', strtotime($end_time));
$save = [
'pattern_id' => $pattern_id,
'start_time' => get_datetime(),
'end_time' => get_datetime('datetime', strtotime($end_time)),
'status' => 1,
'admin_user_id' => $user_id
'pattern_id' => $pattern_id,
'end_time' => $end_time,
'status' => 1,
'admin_user_id' => $user_id,
'is_manual' => 1
];
if ($query) {
@ -234,6 +264,7 @@ class EventCalendarService extends BaseService
'event_calendar.update'
);
} else {
$save['start_time'] = get_datetime();
$save['created_at'] = get_datetime();
$model = EventCalendar::query()->create($save);
$this->logService->logCreated($model, 'event_calendar.create');
@ -255,7 +286,7 @@ class EventCalendarService extends BaseService
$pattern_id = EventCalendar::query()->where('status', 1)->first(['pattern_id']);
$columns = ['id as pattern_id', 'name as model_name'];
if ($pattern_id) {
$data = ParkingPattern::query()->findOrFail($pattern_id, $columns)->toArray();
$data = ParkingPattern::query()->find($pattern_id, $columns)->toArray();
} else {
$data = ParkingPattern::query()->where('is_default', 1)->first($columns);
}

1
database/migrations/2026_01_27_084640_create_admin_table.php

@ -58,6 +58,7 @@ return new class extends Migration
$table->string('title', 50)->comment('菜单标题');
$table->string('icon', 50)->comment('菜单图标');
$table->string('uri')->nullable()->comment('链接地址');
$table->string('page_uri')->nullable()->comment('页面链接地址');
$table->string('show')->default(1)->comment('是否显示 0否 1是');
$table->tinyInteger('status')->default(1)->comment('状态 0禁用 1启用');
$table->timestamps();

1
database/migrations/2026_04_23_143449_create_event_calendar_table.php

@ -18,6 +18,7 @@ return new class extends Migration
$table->timestamp('end_time')->comment('结束时间');
$table->integer('admin_user_id')->comment('操作员');
$table->tinyInteger('status')->default(0)->comment('状态 0计划中 1运行中 2已结束 3已停用');
$table->tinyInteger('is_manual')->default(0)->comment('是否手动操作');
$table->timestamps();
$table->softDeletes();
$table->innoDb();

Loading…
Cancel
Save