IRIS部门过滤: 后端users接口按department=IRIS过滤 + 前端双重兜底
This commit is contained in:
@ -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
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user