IRIS部门过滤: 后端users接口按department=IRIS过滤 + 前端双重兜底

This commit is contained in:
2026-08-06 10:07:47 +08:00
parent da8db95141
commit eccf79b8d1
2 changed files with 17 additions and 23 deletions

View File

@ -11,6 +11,7 @@ class UserOption(BaseModel):
id: str
username: str
full_name: str
department: str = ""
model_config = {"from_attributes": True}
@ -19,39 +20,32 @@ class UserOption(BaseModel):
def list_users(
keyword: str = Query("", description="按用户名/姓名模糊搜索"),
limit: int = Query(100, ge=1, le=500),
dept: str = Query("IRIS", description="部门过滤"),
):
"""获取 MOM 系统用户列表,供前端选人使用"""
"""获取 MOM 系统用户列表,默认只返回 IRIS 部门"""
db = MomSessionLocal()
try:
base_sql = """
SELECT id, username,
SPLIT_PART(username, '/', 1) AS full_name,
COALESCE(department, '') AS department
FROM sys_user
WHERE department = :dept
"""
params = {"dept": dept, "lim": limit}
if keyword.strip():
sql = text(
"""
SELECT id, username,
SPLIT_PART(username, '/', 1) AS full_name
FROM sys_user
WHERE username ILIKE :kw
ORDER BY username
LIMIT :lim
"""
)
rows = db.execute(sql, {"kw": f"%{keyword.strip()}%", "lim": limit}).fetchall()
sql = text(base_sql + " AND username ILIKE :kw ORDER BY username LIMIT :lim")
params["kw"] = f"%{keyword.strip()}%"
else:
sql = text(
"""
SELECT id, username,
SPLIT_PART(username, '/', 1) AS full_name
FROM sys_user
ORDER BY username
LIMIT :lim
"""
)
rows = db.execute(sql, {"lim": limit}).fetchall()
sql = text(base_sql + " ORDER BY username LIMIT :lim")
rows = db.execute(sql, params).fetchall()
return [
UserOption(
id=str(row.id),
username=row.username.split("/")[-1] if "/" in row.username else row.username,
full_name=row.full_name,
department=row.department or "",
)
for row in rows
]