$costDate, 'media_source' => $mediaSource, 'amount' => round((float) ($params['amount'] ?? 0), 2), 'remark' => (string) ($params['remark'] ?? ''), 'creator_id' => $adminId, 'creator_name' => $adminName, 'updater_id' => $adminId, 'updater_name' => $adminName, 'dept_id' => self::resolvePrimaryDeptId($adminId), ]); return true; } catch (\Throwable $e) { self::setError($e->getMessage()); return false; } } public static function edit(array $params, int $adminId, string $adminName, array $adminInfo): bool { try { $model = PersonalAccountCost::find($params['id']); if (!$model) { self::setError('记录不存在'); return false; } if (!self::assertRecordVisible($adminId, $adminInfo, (int) $model->creator_id)) { self::setError('无权操作该记录'); return false; } if (!self::canMutateRecord($adminId, $adminInfo, (int) $model->creator_id)) { self::setError('仅可编辑本人录入的账户消耗'); return false; } $model->amount = round((float) ($params['amount'] ?? 0), 2); $model->remark = (string) ($params['remark'] ?? ''); $model->updater_id = $adminId; $model->updater_name = $adminName; $model->save(); return true; } catch (\Throwable $e) { self::setError($e->getMessage()); return false; } } public static function delete(int $id, int $adminId, array $adminInfo): bool { try { $model = PersonalAccountCost::find($id); if (!$model) { self::setError('记录不存在'); return false; } if (!self::assertRecordVisible($adminId, $adminInfo, (int) $model->creator_id)) { self::setError('无权操作该记录'); return false; } if (!self::canMutateRecord($adminId, $adminInfo, (int) $model->creator_id)) { self::setError('仅可删除本人录入的账户消耗'); return false; } $model->delete(); return true; } catch (\Throwable $e) { self::setError($e->getMessage()); return false; } } public static function detail(int $id, int $adminId, array $adminInfo): array { $model = PersonalAccountCost::find($id); if (!$model) { return []; } if (!self::assertRecordVisible($adminId, $adminInfo, (int) $model->creator_id)) { return []; } return $model->toArray(); } }