0) { self::setError("您在 {$costDate} 已录入过【{$mediaSource}】账户消耗(记录#{$dupId}),请直接编辑该记录"); return false; } PersonalAccountCost::create([ 'cost_date' => $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) { if (self::isUniqueConstraintViolation($e)) { self::setError('该日期下该渠道的账户消耗已存在(唯一索引冲突),请刷新列表后直接编辑'); } else { 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; } $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; } $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(); } }