96 lines
2.5 KiB
Python
96 lines
2.5 KiB
Python
import utils.jwtauth
|
|
from flask import request, jsonify, Blueprint, make_response
|
|
from models import db, Doctor, DoctorHospital, Hospital
|
|
|
|
user_bp = Blueprint('user', __name__)
|
|
|
|
@user_bp.route('/api/user/info', methods=['GET'])
|
|
@utils.jwtauth.jwt_required
|
|
def get_user_info():
|
|
user_id = request.user_id
|
|
doctor = Doctor.query.filter_by(id=user_id).first()
|
|
return make_response(jsonify({
|
|
'code': 200,
|
|
'message': '获取用户信息成功',
|
|
'data': doctor.to_dict()
|
|
}))
|
|
|
|
# 获取医生的医院列表。用于医生登录后选择自己的一个医院
|
|
@user_bp.route('/api/user/hospitals', methods=['GET'])
|
|
@utils.jwtauth.jwt_required
|
|
def get_user_hospitals():
|
|
user_id = request.user_id
|
|
|
|
# 查询医生关联的所有未删除的医院
|
|
hospitals = Hospital.query.join(
|
|
DoctorHospital, Hospital.id == DoctorHospital.hosp_id
|
|
).filter(
|
|
DoctorHospital.doc_id == user_id,
|
|
Hospital.deleted == False
|
|
).all()
|
|
|
|
# 转换为字典列表
|
|
hospital_list = [hospital.to_dict() for hospital in hospitals]
|
|
|
|
return make_response(jsonify({
|
|
'code': 200,
|
|
'message': '获取医生医院列表成功',
|
|
'data': hospital_list
|
|
}))
|
|
|
|
# 修改医生个人信息
|
|
@user_bp.route('/api/user/update', methods=['PUT'])
|
|
@utils.jwtauth.jwt_required
|
|
def update_user_info():
|
|
user_id = request.user_id
|
|
data = request.json
|
|
|
|
if not data:
|
|
return jsonify({
|
|
'code': 400,
|
|
'message': '请求体不能为空'
|
|
}), 400
|
|
|
|
doctor = Doctor.query.filter_by(id=user_id).first()
|
|
if not doctor:
|
|
return jsonify({
|
|
'code': 404,
|
|
'message': '用户不存在'
|
|
}), 404
|
|
|
|
# 只允许修改姓名和性别
|
|
if 'name' in data:
|
|
doctor.name = data['name']
|
|
|
|
if 'gender' in data:
|
|
if data['gender'] not in ['男', '女', '未知']:
|
|
return jsonify({
|
|
'code': 400,
|
|
'message': '性别必须是: 男, 女, 未知'
|
|
}), 400
|
|
doctor.gender = data['gender']
|
|
|
|
try:
|
|
db.session.commit()
|
|
return make_response(jsonify({
|
|
'code': 200,
|
|
'message': '更新用户信息成功',
|
|
'data': doctor.to_dict()
|
|
}))
|
|
except Exception as e:
|
|
db.session.rollback()
|
|
return jsonify({
|
|
'code': 500,
|
|
'message': f'更新用户信息失败: {str(e)}'
|
|
}), 500
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|