Exemplo n.º 1
0
def add_user(*, db: Session = Depends(deps.get_db),
             user: schemas.UserCreate) -> Any:
    """用户管理-新增"""
    user = user.dict()
    deptId = user.pop("deptId")
    postIds = user.pop("postIds")
    roleIds = user.pop("roleIds")
    # User
    add_user = models.User(**user)
    db.add(add_user)
    db.flush()
    # department
    user_department = {
        "user_id": add_user.id,
        "department_id": deptId,
    }
    db.add(models.User_Department(**user_department))
    db.flush()
    # role
    user_roles = [{"user_id": add_user.id, "role_id": i} for i in roleIds]
    db.bulk_insert_mappings(models.User_Role, user_roles)
    db.flush()
    # dict
    # post
    user_post = [{"user_id": add_user.id, "dict_id": i} for i in postIds]
    user_dict = user_post + []
    db.bulk_insert_mappings(models.User_Dict, user_dict)
    db.flush()
    return {
        "code": 20000,
        "message": "新增成功",
    }
Exemplo n.º 2
0
def update_user(*,
                db: Session = Depends(deps.get_db),
                user: schemas.UserUpdate) -> Any:
    """用户管理-修改"""
    user_id = user.id

    user = user.dict()
    deptId = user.pop("deptId")
    postIds = user.pop("postIds")
    roleIds = user.pop("roleIds")
    # User
    db.query(models.User).filter(models.User.id == user_id).update(user)
    db.flush()
    # department
    db.query(models.User_Department).filter(
        models.User_Department.user_id == user_id).delete()
    user_department = {"user_id": user_id, "department_id": deptId}
    db.add(models.User_Department(**user_department))
    db.flush()
    # role
    db.query(
        models.User_Role).filter(models.User_Role.user_id == user_id).delete()
    user_roles = [{"user_id": user_id, "role_id": i} for i in roleIds]
    db.bulk_insert_mappings(models.User_Role, user_roles)
    db.flush()
    # dict
    db.query(
        models.User_Dict).filter(models.User_Dict.user_id == user_id).delete()
    # post
    user_post = [{"user_id": user_id, "dict_id": i} for i in postIds]
    user_dict = user_post + []
    db.bulk_insert_mappings(models.User_Dict, user_dict)
    db.flush()
    return {"code": 20000, "message": "修改成功"}
def update_user(
    *,
    db: Session = Depends(deps.get_db),
    user: schemas.UserUpdate,
    current_user: models.User = Depends(deps.get_current_active_user)
) -> Any:
    user_id = user.id
    user_data = {
        "username": user.username,
        "nickname": user.nickname,
        "identity_card": user.identity_card,
        "phone": user.phone,
        "address": user.address,
        "sex": user.sex,
        "work_start": user.work_start,
        "avatar": user.avatar,
        "introduction": user.introduction,
        "is_active": user.is_active,
        "is_superuser": user.is_superuser,
        "status": user.status,
    }
    deptId = user.deptId
    postIds = user.postIds
    roleIds = user.roleIds
    #info
    db.query(models.User).filter(models.User.id == user_id).update(user_data)
    db.flush()
    #department
    db.query(models.User_Department).filter(
        models.User_Department.user_id == user_id).delete()
    user_department = {
        "user_id": user_id,
        "department_id": deptId,
    }
    db.add(models.User_Department(**user_department))
    db.flush()
    #dcit
    #post
    db.query(
        models.User_Dict).filter(models.User_Dict.user_id == user_id).delete()
    user_post = [{"user_id": user_id, "dict_id": i} for i in postIds]
    user_dict = user_post + []
    db.bulk_insert_mappings(models.User_Dict, user_dict)
    db.flush()
    #role
    db.query(
        models.User_Role).filter(models.User_Role.user_id == user_id).delete()
    user_roles = [{"user_id": user_id, "role_id": i} for i in roleIds]
    db.bulk_insert_mappings(models.User_Role, user_roles)
    db.flush()
    db.commit()
    return {
        "code": 20000,
        "data": "",
        "message": "修改成功",
    }
def add_user(
    *,
    db: Session = Depends(deps.get_db),
    user: schemas.UserCreate,
    current_user: models.User = Depends(deps.get_current_active_user)
) -> Any:
    user_data = {
        "username": user.username,
        "nickname": user.nickname,
        "identity_card": user.identity_card,
        "phone": user.phone,
        "address": user.address,
        "sex": user.sex,
        "hashed_password": get_password_hash("qwe123"),
        "introduction": user.introduction,
        "is_active": True,
        "is_superuser": False,
        "status": user.status,
    }
    add_user = models.User(**user_data)
    db.add(add_user)
    db.flush()

    deptId = user.deptId
    postIds = user.postIds
    roleIds = user.roleIds
    #department
    user_department = {
        "user_id": add_user.id,
        "department_id": deptId,
    }
    db.add(models.User_Department(**user_department))
    db.flush()
    # dict
    # post
    user_post = [{"user_id": add_user.id, "dict_id": i} for i in postIds]
    user_dict = user_post + []
    db.bulk_insert_mappings(models.User_Dict, user_dict)
    db.flush()
    #role
    user_roles = [{"user_id": add_user.id, "role_id": i} for i in roleIds]
    db.bulk_insert_mappings(models.User_Role, user_roles)
    db.flush()
    db.commit()
    return {
        "code": 20000,
        "data": "",
        "message": "新增成功",
    }
Exemplo n.º 5
0
def create_file(db: Session = Depends(deps.get_db),
                updateSupport: bool = False,
                file: UploadFile = File(...)):
    def check_dict_label(label, code):
        dict = db.query(models.Dict_Data).outerjoin(
            models.Dict_Type,
            models.Dict_Type.id == models.Dict_Data.type_id).filter(
                models.Dict_Data.label == label,
                models.Dict_Type.code == code).one()
        return dict

    try:
        io = BytesIO(file.file.read())
        wb = load_workbook(io, read_only=True)
        ws = wb.active  # wb.worksheets[0]
        for row in ws.iter_rows(min_row=2):
            # dict_data
            sex = check_dict_label(row[5].value.strip(""), "sex").label
            status = check_dict_label(row[6].value.strip(""),
                                      "user_status").label

            user = {
                "username": row[0].value.strip(""),
                "nickname": row[1].value.strip(""),
                "identity_card": row[3].value.strip(""),
                "phone": row[4].value.strip(""),
                "sex": sex,
                "status": status,
                "hashed_password": get_password_hash(settings.INIT_PASSWORD)
            }
            department = db.query(models.Department).filter(
                models.Department.name == row[2].value.strip("")).one()
            posts = db.query(models.Dict_Data).outerjoin(
                models.Dict_Type,
                models.Dict_Type.id == models.Dict_Data.type_id).filter(
                    models.Dict_Data.label.in_(
                        row[7].value.strip("").split(",")),
                    models.Dict_Type.code == "post").all()
            exist_user = db.query(
                models.User).filter(models.User.username == user["username"])

            if not exist_user.first():
                user = models.User(**user)
                db.add(user)
                db.flush()
                user_department = {
                    "user_id": user.id,
                    "department_id": department.id
                }
                db.add(models.User_Department(**user_department))
                user_dict = [{
                    "user_id": user.id,
                    "dict_id": post.id
                } for post in posts]
                db.bulk_insert_mappings(models.User_Dict, user_dict)
            elif updateSupport:
                exist_user_id = exist_user.one().id
                exist_user.update(user)
                db.flush()
                # department
                db.query(models.User_Department).filter(
                    models.User_Department.user_id == exist_user_id).delete()
                user_department = {
                    "user_id": exist_user_id,
                    "department_id": department.id
                }
                db.add(models.User_Department(**user_department))
                # post
                db.query(models.User_Dict).filter(
                    models.User_Dict.user_id == exist_user_id).delete()
                user_dict = [{
                    "user_id": exist_user_id,
                    "dict_id": post.id
                } for post in posts]
                db.bulk_insert_mappings(models.User_Dict, user_dict)
        return {"code": 20000, "message": "导入成功"}
    except Exception as exc:
        raise HTTPException(status_code=200,
                            detail=f"导入失败,请检查数据!   Error Reason: {exc}")
    finally:
        wb.close()