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 {