From 2a1da982d14aa25b22a08ef083704a517c59dc98 Mon Sep 17 00:00:00 2001 From: Hera Zhao Date: Sun, 12 Apr 2026 09:54:47 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=A0=E9=99=A4=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=89=8D=E8=87=AA=E5=8A=A8=E8=BD=AC=E7=A7=BB=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E9=85=8D=E6=96=B9=E5=88=B0=E7=AE=A1=E7=90=86=E5=91=98=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 配方名后附加用户名(如"头疗(小明)"),审计日志记录转移数量。 Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/main.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/backend/main.py b/backend/main.py index 1ed768d..09abbd3 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1107,10 +1107,21 @@ def delete_user(user_id: int, user=Depends(require_role("admin"))): if not target: conn.close() raise HTTPException(404, "User not found") + # Transfer personal diary recipes to admin before deletion + target_name = target["display_name"] or target["username"] + diaries = conn.execute("SELECT id, name FROM user_diary WHERE user_id = ?", (user_id,)).fetchall() + if diaries: + for d in diaries: + new_name = f"{d['name']}({target_name})" + conn.execute("UPDATE user_diary SET user_id = ?, name = ? WHERE id = ?", + (user["id"], new_name, d["id"])) snapshot = dict(target) conn.execute("DELETE FROM users WHERE id = ?", (user_id,)) + detail = dict(snapshot) + if diaries: + detail["transferred_diary_count"] = len(diaries) log_audit(conn, user["id"], "delete_user", "user", user_id, target["username"], - json.dumps(snapshot, ensure_ascii=False)) + json.dumps(detail, ensure_ascii=False)) conn.commit() conn.close() return {"ok": True}