update
This commit is contained in:
parent
0ae1f4150e
commit
57d25c857e
|
|
@ -50,7 +50,7 @@ class HuobanyunClient:
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
async def query(self, payload: Dict[str, Any]) -> Dict[str, Any]:
|
async def query(self, payload: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
url = f"{self._base_url()}/query"
|
url = f"{self._base_url()}/openapi/v1/item/list"
|
||||||
return await self._request("POST", url, payload)
|
return await self._request("POST", url, payload)
|
||||||
|
|
||||||
async def writeback(self, payload: Dict[str, Any]) -> Dict[str, Any]:
|
async def writeback(self, payload: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
|
|
|
||||||
|
|
@ -150,24 +150,39 @@ class HuobanyunService:
|
||||||
return {"total": total, "items": mapped_items}
|
return {"total": total, "items": mapped_items}
|
||||||
|
|
||||||
async def query(self, req: FeishuExternalQueryRequest) -> FeishuExternalQueryResponse:
|
async def query(self, req: FeishuExternalQueryRequest) -> FeishuExternalQueryResponse:
|
||||||
payload = {
|
raw = req.raw or {}
|
||||||
"keyword": req.keyword or "",
|
table_id = (
|
||||||
"page": req.page,
|
raw.get("table_id")
|
||||||
"page_size": req.page_size,
|
or raw.get("tableId")
|
||||||
"filters": {f.key: f.value for f in req.filters},
|
or raw.get("table")
|
||||||
"raw": req.raw or {},
|
or "2100000015544940"
|
||||||
}
|
)
|
||||||
|
limit = min(max(req.page_size, 1), 100)
|
||||||
|
offset = max(req.page - 1, 0) * limit
|
||||||
|
payload: Dict[str, Any] = {"table_id": table_id, "limit": limit, "offset": offset}
|
||||||
|
if raw.get("filter"):
|
||||||
|
payload["filter"] = raw.get("filter")
|
||||||
|
elif req.keyword:
|
||||||
|
payload["filter"] = {"and": [{"field": "title", "query": {"eqm": [req.keyword]}}]}
|
||||||
|
if raw.get("order"):
|
||||||
|
payload["order"] = raw.get("order")
|
||||||
|
if raw.get("with_field_config") is not None:
|
||||||
|
payload["with_field_config"] = raw.get("with_field_config")
|
||||||
|
|
||||||
data = await self.client.query(payload)
|
data = await self.client.query(payload)
|
||||||
|
data_block = data.get("data", {}) if isinstance(data, dict) else {}
|
||||||
|
items = data_block.get("items", []) if isinstance(data_block, dict) else []
|
||||||
|
total = data_block.get("filtered", data_block.get("total", len(items)))
|
||||||
parsed = HuobanyunQueryResponse(
|
parsed = HuobanyunQueryResponse(
|
||||||
total=data.get("total", 0),
|
total=total,
|
||||||
items=[
|
items=[
|
||||||
{
|
{
|
||||||
"id": item.get("id", ""),
|
"id": item.get("item_id", ""),
|
||||||
"name": item.get("name", ""),
|
"name": item.get("title", ""),
|
||||||
"value": item.get("value", ""),
|
"value": item.get("title", ""),
|
||||||
"extra": item,
|
"extra": item,
|
||||||
}
|
}
|
||||||
for item in data.get("items", [])
|
for item in items
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
return FeishuExternalQueryResponse(
|
return FeishuExternalQueryResponse(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue