pzx-web-api/app/api/v1/user.py

64 lines
2.0 KiB
Python
Raw Normal View History

2023-08-15 17:49:05 +08:00
from apiflask import APIBlueprint
from flask import session
from app import rpc
from app.api.v1.exception.api import ImageNotFound
2023-08-15 17:49:05 +08:00
from app.api.v1.exception.user import UserInfoNotFound, UserInfoError
from app.api.v1.schema.user import UserInfoIn, UserInfoOut
from app.util.auth import login_required
user = APIBlueprint('user', __name__)
@user.post('/info')
@user.doc(summary='设置用户信息', description='设置用户信息')
@user.input(UserInfoIn, location='json')
@login_required
2023-08-16 16:07:36 +08:00
def set_user_info(json_data):
2023-08-15 17:49:05 +08:00
try:
rpc.admin.set_user_info(session['user_id'],
2023-08-16 16:07:36 +08:00
json_data.get('nickname', None))
2023-08-15 17:49:05 +08:00
except Exception as e:
raise UserInfoError(extra_data={'error_docs': str(e)})
try:
rpc.body_record.set_body_info(session['user_id'],
height=json_data.get('height', None))
2023-08-15 17:49:05 +08:00
except Exception as e:
raise UserInfoError(extra_data={'error_docs': str(e)})
return {'msg': 'setting user info success'}
@user.get('/info')
@user.doc(summary='查询用户信息', description='查询用户信息')
@user.output(UserInfoOut)
@login_required
2023-08-16 16:07:36 +08:00
def get_user_info():
2023-08-15 17:49:05 +08:00
result = {}
try:
user_dict = rpc.admin.get_user_info(session['user_id'])
except Exception as e:
raise UserInfoNotFound(extra_data={'error_docs': str(e)})
try:
presign_url = rpc.storage.get_presign_url(user_dict['avatar_id'],
'bodyrecord',
bucket='bodyrecord')
user_dict['avatar_url'] = presign_url
except Exception as e:
raise ImageNotFound(extra_data={'error_docs': str(e)})
2023-08-15 17:49:05 +08:00
try:
body_info_dict = rpc.body_record.get_body_info(session['user_id'])
except Exception as e:
raise UserInfoNotFound(extra_data={'error_docs': str(e)})
result.update(user_dict)
if body_info_dict:
result['height'] = body_info_dict.get('height', None)
else:
result['height'] = None
2023-08-15 17:49:05 +08:00
return result