This commit is contained in:
aaron 2025-02-27 18:41:49 +08:00
parent 61c63678e4
commit 46fe81658f
2 changed files with 39 additions and 2 deletions

View File

@ -10,6 +10,13 @@ import base64
from Crypto.Cipher import AES
import typing
import struct
from app.core.wecomclient import wecom_client
from app.models.user import UserDB
from app.api.deps import get_current_user
from fastapi import Depends
from sqlalchemy.orm import Session
from app.core.response import error_response, success_response
from pydantic import BaseModel
router = APIRouter()
@ -134,4 +141,34 @@ async def wechat_corp_callback(
except Exception as e:
logging.exception("处理企业微信回调消息异常")
return Response(content="success", media_type="text/plain")
return Response(content="success", media_type="text/plain")
class RefreshRequest(BaseModel):
code: str
@router.post("/refresh")
async def refresh(
request: RefreshRequest,
db: Session = Depends(get_db),
current_user: UserDB = Depends(get_current_user)
):
if current_user and (current_user.wecom_userid or current_user.wecom_pending_id):
return error_response(code=400, message="用户已绑定企业微信")
user_info = await wecom_client.code2session(request.code)
print(f"获取到的企业微信用户信息: {user_info}")
if not user_info:
return error_response(code=400, message="获取企业微信用户信息失败")
if user_info.get("userid"):
current_user.wecom_userid = user_info.get("userid")
else:
current_user.wecom_pending_id = user_info.get("pending_id")
db.commit()
db.refresh(current_user)
return success_response(message="企业微信用户信息刷新成功")

View File

@ -39,7 +39,7 @@ class WecomClient:
logging.exception(f"获取企业微信访问令牌异常: {str(e)}")
return None
async def miniprogram_to_userid(self, code: str) -> Optional[Dict[str, Any]]:
async def code2session(self, code: str) -> Optional[Dict[str, Any]]:
"""
小程序code转换为企业微信userid