daily/Crud/UserCrud.py

91 lines
3.0 KiB
Python
Raw Normal View History

2023-03-06 14:48:41 +08:00
from fastapi import HTTPException
2023-02-28 13:52:51 +08:00
from sqlalchemy.orm import Session
2023-03-01 16:04:43 +08:00
from Models.DepartmentModel import Department
from Models.PostModel import Post
2023-03-02 09:27:05 +08:00
from Models.UserModel import User, UserInfo
2023-02-28 13:52:51 +08:00
from Schemas import UserSchemas
2023-03-01 16:04:43 +08:00
import json
from Utils.SqlAlchemyUtils import get_db_i
2023-02-28 13:52:51 +08:00
2023-03-07 12:03:06 +08:00
def get_user_info(db: Session, email: str):
user = db.query(User).filter_by(email=email).first()
2023-02-28 13:52:51 +08:00
return user
2023-03-17 16:29:13 +08:00
def get_user_info_by_phone(db: Session, phone: str):
user = db.query(User).filter_by(phone=phone).first()
return user
2023-03-07 12:03:06 +08:00
def get_full_user_info(db: Session, email: str):
user = db.query(User).filter_by(email=email).first()
2023-03-06 14:48:41 +08:00
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
2023-03-07 12:03:06 +08:00
def create_user(db: Session, email: str):
user = User(email=email)
2023-03-02 15:19:14 +08:00
db.add(user)
db.commit()
2023-02-28 13:52:51 +08:00
db.refresh(user)
return user
2023-03-07 12:03:06 +08:00
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())
2023-02-28 13:52:51 +08:00
db.commit()
2023-03-07 12:03:06 +08:00
return db.query(User).filter_by(email=email).first()
2023-03-01 16:04:43 +08:00
2023-03-02 09:27:05 +08:00
# 根据email从用户信息表内配置用户数据,相当于用户接入后的数据库操作
2023-03-07 12:03:06 +08:00
def update_user_info_from_email(db: Session, email: str):
2023-03-02 09:27:05 +08:00
user_info = db.query(UserInfo).filter_by(email=email).first()
if user_info:
2023-03-07 12:03:06 +08:00
db.query(User).filter_by(email=email).update(
2023-03-02 09:27:05 +08:00
{'email': email, "name": user_info.name, "post": user_info.post,
"department": user_info.department, 'registered': True})
else:
2023-03-07 12:03:06 +08:00
db.query(User).filter_by(email=email).update(
2023-03-02 09:27:05 +08:00
{'email': email, 'registered': True})
db.commit()
2023-03-01 16:04:43 +08:00
def load_company_config_to_db():
db = get_db_i()
try:
2023-03-02 09:27:05 +08:00
data = json.load(open('Config/company.json', 'r', encoding="utf-8"))
2023-03-01 16:04:43 +08:00
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()