This commit is contained in:
zlwu committed 2026-05-20 15:10:55 +08:00
1 parent 27ac28b8f5
commit 276299ff27
16 files changed
+3999 -3707

No files matched your search

+20 -4
View File
@@ -5,6 +5,7 @@ from typing import Any, List, Optional
from fastapi import APIRouter, Depends, Query, UploadFile, File, Form
from pydantic import BaseModel, ConfigDict, Field
from sqlalchemy import or_
from sqlalchemy.orm import Session
from app.core.config import settings
@@ -25,7 +26,7 @@ from app.crud import menu as menu_svc
from app.crud import role as role_svc
from app.crud import user as user_svc
from app.crud.collection_protocol import _lookup_attachment_by_url
from app.models.models import BizAttachment, SysRole, SysUser
from app.models.models import BizAttachment, SysDept, SysRole, SysUser
from app.services.web_auth_roles import _map_role_name_to_web
router = APIRouter(prefix="/web/admin", tags=["运营端管理"])
@@ -272,8 +273,16 @@ async def list_users(
SysUser.del_flag == 0,
SysUser.tenant_no == tenant_no,
)
if keyword:
query = query.filter(SysUser.nick_name.like(f"%{keyword}%"))
kw = (keyword or "").strip()
if kw:
like = f"%{kw}%"
query = query.filter(
or_(
SysUser.user_no.like(like),
SysUser.nick_name.like(like),
SysUser.phone_no.like(like),
)
)
if deptId:
query = query.filter(SysUser.dept_id == deptId)
if status:
@@ -281,7 +290,14 @@ async def list_users(
query = apply_data_scope(query, SysUser, user, db, tenant_no)
total = query.count()
items = query.order_by(SysUser.create_time.desc()).offset((page - 1) * pageSize).limit(pageSize).all()
result_list = [user_svc._row_to_dict(r) for r in items]
dept_ids = list({r.dept_id for r in items if r.dept_id})
dept_map: dict[str, str] = {}
if dept_ids:
for d in db.query(SysDept).filter(SysDept.id.in_(dept_ids), SysDept.del_flag == 0).all():
dept_map[d.id] = d.dept_name or ""
result_list = [
user_svc._row_to_dict(r, dept_name=dept_map.get(r.dept_id or "", "")) for r in items
]
tp = user_svc.total_pages(total, pageSize)
return success_response({"list": result_list, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})