Files
SMANAGE/_api_backup/TempLateAPI/GERP/API/FormAPI/UserSearch.api
T
2026-06-16 11:55:14 +08:00

54 lines
1.4 KiB
Plaintext

from PDAPI import *
import TempLateAPI.GERP.API.FormAPI.FormData as FormData
from Utils.Models import GERPUser
def fuzzy_search_users(keyword, limit=5):
if not keyword or len(keyword.strip()) < 1:
return []
pattern = f"%{keyword.strip()}%"
users = GERPUser.query.filter(
db.or_(
GERPUser.UserName.like(pattern),
GERPUser.UserEmail.like(pattern)
)
).limit(limit).all()
results = []
for user in users:
matched_by = "name"
if keyword.strip().lower() in (user.UserEmail or "").lower():
matched_by = "email"
results.append({
"UserUUID": FormData.GetTable("User").KeyToUUIDConversion("UserUUID", user.UserUUID, str),
"UserName": user.UserName,
"UserEmail": user.UserEmail or "",
"UserTele": user.UserTele or "",
"MatchedBy": matched_by,
})
return results
__metadata__ = {
"route": "{DEFAULT_ROUTE}",
"methods": ["GET"],
"blueprint": "GERP",
"permission": 1.0,
"attributes": [],
"limit": "10 per second"
}
def HandleRequest(_CleanedData):
keyword = flask.request.args.get("keyword", "").strip()
limit = min(max(int(flask.request.args.get("limit", 5)), 1), 20)
results = fuzzy_search_users(keyword, limit)
return {
"code": 0,
"data": results,
"total": len(results)
}, 200