58 lines
2.2 KiB
Plaintext
58 lines
2.2 KiB
Plaintext
from PDAPI import *
|
|
|
|
CATEGORY_MAP = {"bug": "缺陷", "feature": "功能", "question": "疑问", "account": "账号", "other": "其他"}
|
|
PRIORITY_MAP = {0: "低", 1: "中", 2: "高", 3: "紧急"}
|
|
STATUS_MAP = {0: "待处理", 1: "处理中", 2: "已解决", 3: "已关闭", -1: "已拒绝"}
|
|
|
|
__metadata__ = {
|
|
"methods": ["GET"],
|
|
"blueprint": "GERP",
|
|
"permission": 1.0,
|
|
"attributes": [],
|
|
"limit": "30 per minute",
|
|
"args": [
|
|
{"Name": "page", "Type": "int", "Default": 1, "Required": False},
|
|
{"Name": "pageSize", "Type": "int", "Default": 20, "Required": False},
|
|
{"Name": "status", "Type": "int", "Default": None, "Required": False},
|
|
]
|
|
}
|
|
|
|
def HandleRequest(_CleanedData):
|
|
current_user = UGM.GetELTUser()
|
|
if not current_user:
|
|
return {"code": 401, "msg": "未登录"}, 401
|
|
|
|
page = _CleanedData["args"].get("page", 1)
|
|
page_size = _CleanedData["args"].get("pageSize", 20)
|
|
status_filter = _CleanedData["args"].get("status")
|
|
|
|
query = GERPWorkOrder.query.filter(GERPWorkOrder.CreatorUUID == current_user.UserUUID)
|
|
|
|
if status_filter is not None:
|
|
try:
|
|
query = query.filter(GERPWorkOrder.Status == int(status_filter))
|
|
except:
|
|
pass
|
|
|
|
query = query.order_by(GERPWorkOrder.CreateTime.desc())
|
|
|
|
total = query.count()
|
|
items = query.offset((page - 1) * page_size).limit(page_size).all()
|
|
|
|
orders = []
|
|
for item in items:
|
|
orders.append({
|
|
"orderUUID": UUIDObj(item.OrderUUID).UpperStr,
|
|
"title": item.Title,
|
|
"category": item.Category,
|
|
"categoryDisplay": CATEGORY_MAP.get(item.Category, item.Category),
|
|
"priority": item.Priority,
|
|
"priorityDisplay": PRIORITY_MAP.get(item.Priority, "低"),
|
|
"status": item.Status,
|
|
"statusDisplay": STATUS_MAP.get(item.Status, "未知"),
|
|
"createTime": item.CreateTime.strftime("%Y-%m-%d %H:%M:%S") if item.CreateTime else None,
|
|
"updateTime": item.UpdateTime.strftime("%Y-%m-%d %H:%M:%S") if item.UpdateTime else None,
|
|
})
|
|
|
|
return {"code": 0, "data": {"orders": orders, "total": total, "page": page, "pageSize": page_size}}, 200
|