From a460c0b888136aff0391ca6cccf8a0707312abe0 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Sun, 26 Apr 2026 20:24:53 +0800 Subject: [PATCH] bugfix --- wwwroot/phone_login.dspy | 125 +++++++++++++++++++++------------------ 1 file changed, 67 insertions(+), 58 deletions(-) diff --git a/wwwroot/phone_login.dspy b/wwwroot/phone_login.dspy index a5050cd..0f61ca1 100644 --- a/wwwroot/phone_login.dspy +++ b/wwwroot/phone_login.dspy @@ -38,65 +38,74 @@ ns = { "user_status": "0" } udata = DictObject(**ns) -async with get_sor_context(request._run_ns, 'rbac') as sor: - recs = await sor.R('users', {'mobile': params_kw.cellphone}) - if recs: - if len(recs) == 1: - r = recs[0] - # Update last_login atomically (standard SQL, no DB-specific functions) - now_str = timestampstr() - await sor.sqlExe(""" - UPDATE users - SET last_login = ${now}$, login_fail_count = 0, - last_login_fail = NULL - WHERE id = ${id}$ - """, {'id': r.id, 'now': now_str}) - await remember_user(r.id, username=r.username, userorgid=r.orgid) - return { - "status": "ok", - "data":{ - "user": r - } - } - if params_kw.selected_id: - for r in recs: - if r.id == params_kw.selected_id: - now_str = timestampstr() - await sor.sqlExe(""" - UPDATE users - SET last_login = ${now}$, login_fail_count = 0, - last_login_fail = NULL - WHERE id = ${id}$ - """, {'id': r.id, 'now': now_str}) - await remember_user(r.id, username=r.username, userorgid=r.orgid) - return { - "status": "ok", - "data":{ - "user": r - } +try: + async with get_sor_context(request._run_ns, 'rbac') as sor: + recs = await sor.R('users', {'mobile': params_kw.cellphone}) + if recs: + if len(recs) == 1: + r = recs[0] + # Update last_login atomically (standard SQL, no DB-specific functions) + now_str = timestampstr() + await sor.sqlExe(""" + UPDATE users + SET last_login = ${now}$, login_fail_count = 0, + last_login_fail = NULL + WHERE id = ${id}$ + """, {'id': r.id, 'now': now_str}) + await remember_user(r.id, username=r.username, userorgid=r.orgid) + return { + "status": "ok", + "data":{ + "user": r + } + } + if params_kw.selected_id: + for r in recs: + if r.id == params_kw.selected_id: + now_str = timestampstr() + await sor.sqlExe(""" + UPDATE users + SET last_login = ${now}$, login_fail_count = 0, + last_login_fail = NULL + WHERE id = ${id}$ + """, {'id': r.id, 'now': now_str}) + await remember_user(r.id, username=r.username, userorgid=r.orgid) + return { + "status": "ok", + "data":{ + "user": r + } + } + else: + return { + "status": "choose", + "data": { + "users": recs } - else: - return { - "status": "choose", - "data": { - "users": recs } - } - d = await register_user(sor, udata) - if d['status'] == 'error': - return d - try: - ownerid = await get_owner_orgid(sor, orgid) - await openCustomerAccounts(sor, ownerid, orgid) - except Exception as e: - exception(f'{e}') - - r = d['data']['user'] - await remember_user(r.id, username=r.username, userorgid=r.orgid) - return { - "status": "ok", - "data":{ - "user": r + d = await register_user(sor, udata) + if d['status'] == 'error': + return d + try: + ownerid = await get_owner_orgid(sor, orgid) + await openCustomerAccounts(sor, ownerid, orgid) + except Exception as e: + exception(f'{e}') + + r = d['data']['user'] + await remember_user(r.id, username=r.username, userorgid=r.orgid) + return { + "status": "ok", + "data":{ + "user": r + } } - } +except Exception as e: + exception(f'Error happend{e}') + return { + "status": "error", + "data":{ + "message": f"{e}" + } + }