2022-10-20 16:29:54 +08:00
|
|
|
from sqlalchemy import or_
|
|
|
|
from werkzeug.security import generate_password_hash
|
|
|
|
|
|
|
|
from sqlalchemy.orm import Session
|
2022-11-01 01:56:57 +08:00
|
|
|
|
2022-11-01 14:02:58 +08:00
|
|
|
from Utils.EncryptProcess import EncyptUtil
|
2022-11-01 01:56:57 +08:00
|
|
|
from Utils.UniqueCoder.TimeSerialNumUtils import create_time_serial_num
|
2022-10-20 16:29:54 +08:00
|
|
|
from . import models, schemas
|
|
|
|
|
|
|
|
|
2022-11-01 01:56:57 +08:00
|
|
|
def get_user_by_name(db: Session, name: str):
|
2022-11-01 14:02:58 +08:00
|
|
|
return db.query(models.User).with_entities(
|
|
|
|
models.User.id,
|
|
|
|
models.User.name,
|
|
|
|
models.User.email,
|
|
|
|
models.User.role,
|
|
|
|
models.User.depart,
|
|
|
|
models.User.is_active
|
|
|
|
).filter(models.User.name == name).first()
|
|
|
|
|
|
|
|
|
|
|
|
def get_user_by_id(db: Session, uid: str):
|
|
|
|
return db.query(models.User).with_entities(
|
|
|
|
models.User.id,
|
|
|
|
models.User.name,
|
|
|
|
models.User.email,
|
|
|
|
models.User.role,
|
|
|
|
models.User.depart,
|
|
|
|
models.User.is_active
|
|
|
|
).filter(models.User.id == uid).first()
|
2022-10-20 16:29:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
def get_user_by_email(db: Session, email: str):
|
|
|
|
return db.query(models.User).filter(models.User.email == email).first()
|
|
|
|
|
|
|
|
|
|
|
|
def get_users(db: Session, body: schemas.UserSearch, skip, limit):
|
|
|
|
return db.query(models.User).filter(
|
|
|
|
or_(models.User.id == body.id, body.id is None),
|
2022-10-24 14:26:29 +08:00
|
|
|
or_(models.User.email.like("%" + "" if body.email is None else body.email + "%"), body.email is None),
|
2022-10-20 16:29:54 +08:00
|
|
|
or_(models.User.name.like("%" + "" if body.name is None else body.name + "%"), body.name is None),
|
|
|
|
or_(models.User.role == body.role, body.role is None),
|
|
|
|
or_(models.User.depart == body.depart, body.depart is None),
|
|
|
|
or_(models.User.is_active == body.is_active, body.is_active is None),
|
|
|
|
).offset(skip).limit(limit).all()
|
|
|
|
|
|
|
|
|
|
|
|
def create_user(db: Session, body: schemas.UserCreate):
|
2022-11-01 14:02:58 +08:00
|
|
|
body.passwd = generate_password_hash(EncyptUtil.decrypt_data(encrypt_msg=body.passwd))
|
2022-10-20 16:29:54 +08:00
|
|
|
item = models.User(**body.dict())
|
2022-11-01 01:56:57 +08:00
|
|
|
item.id = create_time_serial_num(prefix="UID", suffix="")
|
2022-10-20 16:29:54 +08:00
|
|
|
db.add(item)
|
|
|
|
db.commit()
|
|
|
|
db.refresh(item)
|
|
|
|
return item
|
|
|
|
|
|
|
|
|
2022-11-01 14:02:58 +08:00
|
|
|
def delete_user(db: Session, uid: str):
|
|
|
|
db.query(models.User).filter_by(id=uid).delete()
|
2022-10-20 16:29:54 +08:00
|
|
|
db.commit()
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
2022-11-01 14:02:58 +08:00
|
|
|
def edit_user(db: Session, uid: str, body: schemas.UserEdit):
|
2022-10-20 16:29:54 +08:00
|
|
|
db.query(models.User).filter_by(id=uid).update(body.dict())
|
|
|
|
db.commit()
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
2022-11-01 14:02:58 +08:00
|
|
|
def reset_user_pwd(db: Session, uid: str, passwd: schemas.PasswdRegex):
|
2022-10-20 16:29:54 +08:00
|
|
|
passwd = generate_password_hash(passwd)
|
|
|
|
db.query(models.User).filter_by(id=uid).update({"passwd": passwd})
|
|
|
|
db.commit()
|
|
|
|
return True
|