44 lines
2.3 KiB
Plaintext
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())} |