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