From 4acc5a706a54ee3a30ed74fdb9d1bb32d24b54e1 Mon Sep 17 00:00:00 2001 From: Administrator Date: Mon, 20 Mar 2023 16:23:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A0=B9=E6=8D=AE=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E5=88=97=E8=A1=A8=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Crud/DailyCrud.py | 2 ++ Crud/UserCrud.py | 14 +++++++++++++- Router/UserRouter.py | 7 +++++++ Schemas/UserSchemas.py | 8 ++++++++ Utils/VerifyCodeUtils.py | 6 +++--- 6 files changed, 34 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index b7a7b92..15757ef 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /jurigged/ +/venv/ diff --git a/Crud/DailyCrud.py b/Crud/DailyCrud.py index 5224564..fb39464 100644 --- a/Crud/DailyCrud.py +++ b/Crud/DailyCrud.py @@ -51,8 +51,10 @@ def daily_query(db: Session, params: DailyQuery) -> [int]: if value: if value[0] is not None: query = query.filter(getattr(db_model, key) >= datetime.fromtimestamp(value[0] / 1000)) + print(datetime.fromtimestamp(value[0] / 1000)) if value[1] is not None: query = query.filter(getattr(db_model, key) <= datetime.fromtimestamp(value[1] / 1000)) + print(datetime.fromtimestamp(value[0] / 1000)) else: query = query.filter(getattr(db_model, key) == value) query = query.order_by(Daily.daily_time.desc()) diff --git a/Crud/UserCrud.py b/Crud/UserCrud.py index 76293a4..0b2ff6f 100644 --- a/Crud/UserCrud.py +++ b/Crud/UserCrud.py @@ -1,6 +1,6 @@ from fastapi import HTTPException from sqlalchemy.orm import Session - +from sqlalchemy import func from Models.DepartmentModel import Department from Models.PostModel import Post from Models.UserModel import User, UserInfo @@ -88,3 +88,15 @@ def load_company_config_to_db(): print(e) finally: db.close() + + +def get_user_by_departments(db: Session, departments: []): + set_emails = set() + users = [] + for department in departments: + res = db.query(User).filter(func.find_in_set(department, User.department)) + for item in res: + if item.email not in set_emails: + set_emails.add(item.email) + users.append(item.to_dict()) + diff --git a/Router/UserRouter.py b/Router/UserRouter.py index 06441cd..9a3a42f 100644 --- a/Router/UserRouter.py +++ b/Router/UserRouter.py @@ -151,6 +151,13 @@ def refresh_token(token_data: TokenData = Depends(token_data_depend), db: Sessio return {'token': token} +@router.post("/get_user_by_department", tags=["用户接口"], summary=["根据部门列表获取用户信息"],response_model=UserSchemas.GetUserByDepartmentRes) +def get_user_by_department(body: UserSchemas.GetUserByDepartmentReq, token_data: TokenData = Depends(token_data_depend), + db: Session = Depends(get_db)): + users = UserCrud.get_user_by_departments(db, body.departments) + return UserSchemas.GetUserByDepartmentRes(users=[UserSchemas.UserInfo(**user) for user in users]) + + department_crud = auto_create_crud(Department, 'department', "部门", auto_create_keys=['id'], tags=["部门职务操作"]) post_crud = auto_create_crud(Post, 'post', "职务", auto_create_keys=['id'], tags=["部门职务操作"]) department_crud.mount(router) diff --git a/Schemas/UserSchemas.py b/Schemas/UserSchemas.py index 3729665..42baa1a 100644 --- a/Schemas/UserSchemas.py +++ b/Schemas/UserSchemas.py @@ -88,6 +88,14 @@ class GetPhoneVerifyCodeReq(BaseModel): phone: str +class GetUserByDepartmentReq(BaseModel): + departments: List[int] + + +class GetUserByDepartmentRes(BaseModel): + users: List[UserInfo] + + @unique class DepartmentTypeEnum(Enum): enum01 = "董监高" diff --git a/Utils/VerifyCodeUtils.py b/Utils/VerifyCodeUtils.py index 50b4121..e864fd4 100644 --- a/Utils/VerifyCodeUtils.py +++ b/Utils/VerifyCodeUtils.py @@ -54,11 +54,11 @@ class PhoneVerifyCode: @classmethod def make_code(cls, phone, expire_time_s=60 * 5, verify_type: PhoneVerifyType = PhoneVerifyType.login): client = redis_pool.get_redis_client() - email_id = cls.get_phone_id(phone, verify_type) + phone_id = cls.get_phone_id(phone, verify_type) code = get_random_num_code(4) - client.set(email_id, code) + client.set(phone_id, code) if expire_time_s: - client.expire(email_id, expire_time_s) + client.expire(phone_id, expire_time_s) return code @classmethod