Files

44 lines
2.3 KiB
Plaintext

from PDAPI import *
__metadata__ = {
"methods": ["GET"],
"blueprint": "GERP",
"permission": 1.0,
"attributes": [],
"limit": "1 per second",
"args": [
{"Name": "DepartmentUUID", "Type": "UUID"},
]
}
def HandleRequest():
User: GERPUser
DepartmentUUID = flask.request.args.get("DepartmentUUID")
if DepartmentUUID != "0"*32:
if not (Department := GERPDepartment.query.filter(GERPDepartment.DepartmentUUID == Get16toBytes(DepartmentUUID)).first()):
return {"code": 1, "msg": "部门 不存在"}
MembersSMTM = Department.dept_GERPSMTM.all() if DepartmentUUID != "0"*32 else GERPSMTM.query.all()
data = {}
for UserSMTM in MembersSMTM:
UserSMTM: GERPSMTM
DepartmentSMTMs = UserSMTM.User.dept_GERPSMTM.options(
sqlalchemy.orm.joinedload(GERPSMTM.Department)
).all()
DepartmentUUIDs = [GetBytesTo16(i.DepartmentUUID) for i in DepartmentSMTMs]
DepartmentNames = [Smtm.Department.DepartmentName for Smtm in DepartmentSMTMs if Smtm.Department]
if GetBytesTo16(UserSMTM.User.UserUUID) in data: continue
data[GetBytesTo16(UserSMTM.User.UserUUID)] = {
"UserUUID": GetBytesTo16(UserSMTM.User.UserUUID),
"UserJobNumber": GetBytesTo16(UserSMTM.User.UserJobNumber) if UserSMTM.User.UserJobNumber else "未启用工号",
"UserName": UserSMTM.User.UserName,
"UserPermission": UserSMTM.User.UserPermission,
"UserGender": Gender2Str(UserSMTM.User.UserGender),
"UserEmail": UserSMTM.User.UserEmail,
"UserTele": UserSMTM.User.GetTele(),
"UserLastLoginDate": UserSMTM.User.UserLastLoginDate.strftime("%Y年%m月%d日 %H时%M分%S秒 UTC+8") if UserSMTM.User.UserLastLoginDate else "从未登录",
"UserCreateTime": UserSMTM.User.UserCreateTime.strftime("%Y年%m月%d日 %H时%M分%S秒 UTC+8"),
"DepartmentUUIDs": ";".join(list(map(lambda x: GetBytesTo16(x), DepartmentUUIDs))) if DepartmentUUIDs else "",
"Departments": ";".join(DepartmentNames) if DepartmentNames else "",
"PersonInChargeStatus": UserSMTM.PersonInChargeStatus if DepartmentUUID != "0"*32 else 0
}
return {"code": 0, "count": 1000, "data": list(data.values())}