feat: 删除用户前自动转移个人配方到管理员账号
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 11s
Test / e2e-test (push) Successful in 51s
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 11s
Test / e2e-test (push) Successful in 51s
配方名后附加用户名(如"头疗(小明)"),审计日志记录转移数量。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user