Commit bbd41b8f authored by xianyang's avatar xianyang

优化角色,用户列表

parent 3f6617d7
from datetime import datetime from datetime import datetime
from fastapi import HTTPException, status from fastapi import HTTPException, status
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from sqlalchemy import func
from app.api.role import schemas from app.api.role import schemas
from libs.functions import wrapper_out from libs.functions import wrapper_out
from models import roles as models from models import roles as models
...@@ -20,10 +21,12 @@ def get_roles(db: Session, param): ...@@ -20,10 +21,12 @@ def get_roles(db: Session, param):
if name: if name:
query_res = db.query(models.Role).filter(models.Role.role_name.like(f'%{name}%')).order_by(models.Role.id.desc()).\ query_res = db.query(models.Role).filter(models.Role.role_name.like(f'%{name}%')).order_by(models.Role.id.desc()).\
offset((int(param.page) - 1) * param.size).limit(param.page * param.size).all() offset((int(param.page) - 1) * param.size).limit(param.page * param.size).all()
count = db.query(models.Role).filter(models.Role.role_name.like(f'%{name}%')).scalar()
else: else:
query_res = db.query(models.Role).order_by(models.Role.id.desc()).offset((int(param.page) - 1) * param.size).limit(param.page * param.size).all() query_res = db.query(models.Role).order_by(models.Role.id.desc()).offset((int(param.page) - 1) * param.size).limit(param.page * param.size).all()
count = db.query(func.count(models.Role.id)).scalar()
if not query_res: if not query_res:
return [] return [], 0
for i in query_res: for i in query_res:
serializer_info = i.to_dict(only=('id', 'role_name', 'authority', 'remark', 'create_time')) serializer_info = i.to_dict(only=('id', 'role_name', 'authority', 'remark', 'create_time'))
if i.authority: if i.authority:
...@@ -32,7 +35,7 @@ def get_roles(db: Session, param): ...@@ -32,7 +35,7 @@ def get_roles(db: Session, param):
else: else:
serializer_info['authority'] = [] serializer_info['authority'] = []
result_list.append(serializer_info) result_list.append(serializer_info)
return result_list return result_list, count
def create_role(db: Session, user: schemas.RoleCreate): def create_role(db: Session, user: schemas.RoleCreate):
......
...@@ -38,5 +38,5 @@ def delete_user(role_id: int, db: Session = Depends(get_db)): ...@@ -38,5 +38,5 @@ def delete_user(role_id: int, db: Session = Depends(get_db)):
@router.post("/list") @router.post("/list")
def role_list(data: schemas.RoleList, db: Session = Depends(get_db)): def role_list(data: schemas.RoleList, db: Session = Depends(get_db)):
"""用户列表""" """用户列表"""
result = crud.get_roles(db, data) result, total = crud.get_roles(db, data)
return HttpResultResponse(total=len(result), data=result) return HttpResultResponse(total=total, data=result)
import random import random
from datetime import datetime from datetime import datetime
from sqlalchemy import func
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app.api.role.crud import get_id_to_authority from app.api.role.crud import get_id_to_authority
from app.api.users import schemas from app.api.users import schemas
...@@ -21,10 +23,12 @@ def get_users(db: Session, param): ...@@ -21,10 +23,12 @@ def get_users(db: Session, param):
username = param.username if param.username else "" username = param.username if param.username else ""
if username: if username:
res = db.query(models.User).filter(models.User.username.like(f'%{username}%')).order_by(models.User.id.desc()).offset((int(param.page) - 1) * param.size).limit(param.page * param.size) res = db.query(models.User).filter(models.User.username.like(f'%{username}%')).order_by(models.User.id.desc()).offset((int(param.page) - 1) * param.size).limit(param.page * param.size)
count = db.query(func.count(models.User.id)).filter(models.User.username.like(f'%{username}%')).scalar()
else: else:
res = db.query(models.User).order_by(models.User.id.desc()).offset((int(param.page) - 1) * param.size).limit(param.page * param.size) res = db.query(models.User).order_by(models.User.id.desc()).offset((int(param.page) - 1) * param.size).limit(param.page * param.size)
count = db.query(func.count(models.User.id)).scalar()
if not res: if not res:
return [] return [], 0
result_list = [] result_list = []
for i in res: for i in res:
serializer_info = i.to_dict() serializer_info = i.to_dict()
...@@ -38,7 +42,7 @@ def get_users(db: Session, param): ...@@ -38,7 +42,7 @@ def get_users(db: Session, param):
else: else:
serializer_info['role_name'] = '' serializer_info['role_name'] = ''
result_list.append(serializer_info) result_list.append(serializer_info)
return result_list return result_list, count
def generate_random_str(): def generate_random_str():
......
...@@ -84,8 +84,8 @@ def read_user(data: schemas.PermissionCreate, db: Session = Depends(get_db)): ...@@ -84,8 +84,8 @@ def read_user(data: schemas.PermissionCreate, db: Session = Depends(get_db)):
@router.post("/list") @router.post("/list")
def user_list(data: schemas.UserList, db: Session = Depends(get_db)): def user_list(data: schemas.UserList, db: Session = Depends(get_db)):
"""用户列表""" """用户列表"""
result = crud.get_users(db, data) result, total = crud.get_users(db, data)
return HttpResultResponse(total=len(result), data=result) return HttpResultResponse(total=total, data=result)
@router.delete("/delete/{user_id}") @router.delete("/delete/{user_id}")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment