diff --git a/backend/main.py b/backend/main.py index db3ddcd..877d234 100644 --- a/backend/main.py +++ b/backend/main.py @@ -614,6 +614,21 @@ def reject_translation(sid: int, user=Depends(require_role("admin"))): return {"ok": True} +@app.post("/api/business-grant/{user_id}") +def grant_business(user_id: int, user=Depends(require_role("admin"))): + conn = get_db() + conn.execute("UPDATE users SET business_verified = 1 WHERE id = ?", (user_id,)) + target = conn.execute("SELECT role, display_name, username FROM users WHERE id = ?", (user_id,)).fetchone() + if target: + conn.execute( + "INSERT INTO notifications (target_role, title, body, target_user_id) VALUES (?, ?, ?, ?)", + (target["role"], "🎉 商业认证已开通", "管理员已为你开通商业用户认证,现在可以使用商业核算等功能。", user_id) + ) + conn.commit() + conn.close() + return {"ok": True} + + @app.post("/api/business-revoke/{user_id}") def revoke_business(user_id: int, body: dict = None, user=Depends(require_role("admin"))): conn = get_db() diff --git a/frontend/src/views/UserManagement.vue b/frontend/src/views/UserManagement.vue index 9759a80..f3cefe9 100644 --- a/frontend/src/views/UserManagement.vue +++ b/frontend/src/views/UserManagement.vue @@ -102,6 +102,8 @@ + + @@ -240,6 +242,36 @@ async function removeUser(user) { } } +async function grantBusiness(user) { + const ok = await showConfirm(`直接为「${user.display_name || user.username}」开通商业认证?`) + if (!ok) return + const id = user._id || user.id + try { + const res = await api(`/api/business-grant/${id}`, { method: 'POST' }) + if (res.ok) { + user.business_verified = 1 + ui.showToast('已开通商业认证') + } + } catch { + ui.showToast('操作失败') + } +} + +async function revokeBusiness(user) { + const ok = await showConfirm(`撤销「${user.display_name || user.username}」的商业认证?`) + if (!ok) return + const id = user._id || user.id + try { + const res = await api(`/api/business-revoke/${id}`, { method: 'POST' }) + if (res.ok) { + user.business_verified = 0 + ui.showToast('已撤销商业认证') + } + } catch { + ui.showToast('操作失败') + } +} + async function approveTranslation(t) { const id = t._id || t.id try {