Parcourir la source

fix: sms login flush 改成 try/except

alphah il y a 2 semaines
Parent
commit
dc9ddf3d80
1 fichiers modifiés avec 9 ajouts et 8 suppressions
  1. 9 8
      backend/app/api/v1/module_system/auth/service.py

+ 9 - 8
backend/app/api/v1/module_system/auth/service.py

@@ -217,14 +217,15 @@ class LoginService:
 
         # 更新最后登录时间
         from datetime import datetime
-        stmt = select(UserModel).where(UserModel.id == user.id)
-        result = await db.execute(stmt)
-        user = result.scalar_one_or_none()
-        if user:
-            user.last_login = datetime.now()
-            await db.flush()
-        if not user:
-            raise CustomException(msg="用户不存在")
+        from sqlalchemy import update as sa_update
+        try:
+            await db.execute(
+                sa_update(UserModel).where(UserModel.id == user.id).values(last_login=datetime.now())
+            )
+            await db.commit()
+        except Exception as e:
+            log.warning(f"短信登录-更新最后登录时间失败: {e}")
+            await db.rollback()
 
         # 创建token
         token = await cls.create_token_service(