86 lines
2.9 KiB
Python
86 lines
2.9 KiB
Python
from fastapi import HTTPException
|
|
from sqlalchemy.orm import Session
|
|
|
|
from Models.DepartmentModel import Department
|
|
from Models.PostModel import Post
|
|
from Models.UserModel import User, UserInfo
|
|
from Schemas import UserSchemas
|
|
import json
|
|
|
|
from Utils.SqlAlchemyUtils import get_db_i
|
|
|
|
|
|
def get_user_info(db: Session, email: str):
|
|
user = db.query(User).filter_by(email=email).first()
|
|
return user
|
|
|
|
|
|
def get_full_user_info(db: Session, email: str):
|
|
user = db.query(User).filter_by(email=email).first()
|
|
if not user:
|
|
return None
|
|
departments = []
|
|
posts = []
|
|
if user.department:
|
|
department_id_list = [int(department) for department in user.department.split(",")]
|
|
departments = [item.to_dict() for item in
|
|
db.query(Department).filter(Department.id.in_(department_id_list))]
|
|
if user.post:
|
|
post_id_list = [int(post) for post in user.post.split(",")]
|
|
posts = [item.to_dict() for item in db.query(Post).filter(Post.id.in_(post_id_list))]
|
|
user_data = user.to_dict()
|
|
user_data['department_list'] = departments
|
|
user_data['post_list'] = posts
|
|
|
|
return user_data
|
|
|
|
|
|
def create_user(db: Session, email: str):
|
|
user = User(email=email)
|
|
db.add(user)
|
|
db.commit()
|
|
db.refresh(user)
|
|
return user
|
|
|
|
|
|
def change_user_info(db: Session, email: str, user_info_change: UserSchemas.UserInfoChange):
|
|
db.query(User).filter_by(email=email).update(user_info_change.dict())
|
|
db.commit()
|
|
return db.query(User).filter_by(email=email).first()
|
|
|
|
|
|
# 根据email从用户信息表内配置用户数据,相当于用户接入后的数据库操作
|
|
def update_user_info_from_email(db: Session, email: str):
|
|
user_info = db.query(UserInfo).filter_by(email=email).first()
|
|
if user_info:
|
|
db.query(User).filter_by(email=email).update(
|
|
{'email': email, "name": user_info.name, "post": user_info.post,
|
|
"department": user_info.department, 'registered': True})
|
|
else:
|
|
db.query(User).filter_by(email=email).update(
|
|
{'email': email, 'registered': True})
|
|
db.commit()
|
|
|
|
|
|
def load_company_config_to_db():
|
|
db = get_db_i()
|
|
try:
|
|
data = json.load(open('Config/company.json', 'r', encoding="utf-8"))
|
|
db.query(Department).delete()
|
|
db.query(Post).delete()
|
|
db.commit()
|
|
for department_type in data['部门'].keys():
|
|
for department_name in data['部门'][department_type]:
|
|
department = Department(name=department_name, type=department_type)
|
|
db.add(department)
|
|
db.commit()
|
|
department_name_dic = {item.name: item.id for item in db.query(Department).all()}
|
|
for department_name, posts in data['职务'].items():
|
|
for post_name in posts:
|
|
db.add(Post(name=post_name, belong=department_name_dic[department_name]))
|
|
db.commit()
|
|
except Exception as e:
|
|
print(e)
|
|
finally:
|
|
db.close()
|