feat: Orders 加 10 地址/店铺字段 + labelPdfUrl(SDS/RIIN mapper+db)
This commit is contained in:
@@ -49,6 +49,10 @@ class Address(_SdsModel):
|
||||
mobile_phone: str | None = None
|
||||
postcode: str | None = None
|
||||
email: str | None = None
|
||||
country_name: str | None = Field(default=None, alias="countryName")
|
||||
address_detail1: str | None = Field(default=None, alias="addressDetail1")
|
||||
address_detail2: str | None = Field(default=None, alias="addressDetail2")
|
||||
address_detail3: str | None = Field(default=None, alias="addressDetail3")
|
||||
|
||||
|
||||
class IssuingBayArea(_SdsModel):
|
||||
|
||||
+12
-2
@@ -231,7 +231,9 @@ class SyncDB:
|
||||
'''INSERT INTO "Orders" (
|
||||
"orderNo","outOrderNo","courierSource","courierName","courierNo","merchantId",
|
||||
"countryRegion","factoryName","systemName","systemStatus","platformName","platformStatus",
|
||||
"createdAt","orderedAt","confirmedAt","completedAt","shipDeadline"
|
||||
"createdAt","orderedAt","confirmedAt","completedAt","shipDeadline",
|
||||
"consigneeName","destinationCountry","stateProvince","city",
|
||||
"addressLine1","addressLine2","addressLine3","postalCode","storeName","labelPdfUrl"
|
||||
) VALUES %s
|
||||
ON CONFLICT ("orderNo","createdAt") DO UPDATE SET
|
||||
"outOrderNo"=EXCLUDED."outOrderNo","courierSource"=EXCLUDED."courierSource",
|
||||
@@ -241,11 +243,19 @@ class SyncDB:
|
||||
"systemStatus"=EXCLUDED."systemStatus","platformName"=EXCLUDED."platformName",
|
||||
"platformStatus"=EXCLUDED."platformStatus","orderedAt"=EXCLUDED."orderedAt",
|
||||
"confirmedAt"=EXCLUDED."confirmedAt","completedAt"=EXCLUDED."completedAt",
|
||||
"shipDeadline"=EXCLUDED."shipDeadline"''',
|
||||
"shipDeadline"=EXCLUDED."shipDeadline",
|
||||
"consigneeName"=EXCLUDED."consigneeName",
|
||||
"destinationCountry"=EXCLUDED."destinationCountry",
|
||||
"stateProvince"=EXCLUDED."stateProvince","city"=EXCLUDED."city",
|
||||
"addressLine1"=EXCLUDED."addressLine1","addressLine2"=EXCLUDED."addressLine2",
|
||||
"addressLine3"=EXCLUDED."addressLine3","postalCode"=EXCLUDED."postalCode",
|
||||
"storeName"=EXCLUDED."storeName","labelPdfUrl"=EXCLUDED."labelPdfUrl"''',
|
||||
[(
|
||||
o.orderNo, o.outOrderNo, o.courierSource, o.courierName, o.courierNo, o.merchantId,
|
||||
o.countryRegion, o.factoryName, o.systemName, o.systemStatus, o.platformName, o.platformStatus,
|
||||
o.createdAt, o.orderedAt, o.confirmedAt, o.completedAt, o.shipDeadline,
|
||||
o.consigneeName, o.destinationCountry, o.stateProvince, o.city,
|
||||
o.addressLine1, o.addressLine2, o.addressLine3, o.postalCode, o.storeName, o.labelPdfUrl,
|
||||
) for o in orders],
|
||||
page_size=ORDER_CHUNK,
|
||||
)
|
||||
|
||||
+29
-2
@@ -128,6 +128,9 @@ class OrderUpsertInput:
|
||||
"merchantId", "countryRegion", "factoryName", "systemName", "systemStatus",
|
||||
"platformName", "platformStatus", "createdAt", "orderedAt", "confirmedAt",
|
||||
"completedAt", "shipDeadline",
|
||||
"consigneeName", "destinationCountry", "stateProvince", "city",
|
||||
"addressLine1", "addressLine2", "addressLine3", "postalCode", "storeName",
|
||||
"labelPdfUrl",
|
||||
)
|
||||
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
@@ -183,6 +186,16 @@ def map_riin_order(raw: Any) -> OrderUpsertInput:
|
||||
confirmedAt=confirmed_at,
|
||||
completedAt=completed_at,
|
||||
shipDeadline=ship_deadline,
|
||||
consigneeName=raw.consignee_name,
|
||||
destinationCountry=raw.receiver_country,
|
||||
stateProvince=raw.receiver_province,
|
||||
city=raw.receiver_city,
|
||||
addressLine1=raw.address,
|
||||
addressLine2=raw.receiver_district,
|
||||
addressLine3=raw.receiver_town,
|
||||
postalCode=raw.post_code,
|
||||
storeName=raw.platform_shop_name,
|
||||
labelPdfUrl=None,
|
||||
)
|
||||
|
||||
|
||||
@@ -234,12 +247,15 @@ def map_sds_order(raw: Any, channel_type_map: dict[int, str | None], pre_courier
|
||||
courier_source = channel_type_map[lid]
|
||||
|
||||
courier_no: str | None = None
|
||||
label_pdf_url: str | None = None
|
||||
if raw.parcel_list:
|
||||
first = raw.parcel_list[0]
|
||||
try:
|
||||
courier_no = first["logistics"]["carriage"]["no"]
|
||||
carriage = first["logistics"]["carriage"]
|
||||
courier_no = carriage.get("no")
|
||||
label_pdf_url = carriage.get("laberPdf") or carriage.get("labelPdf")
|
||||
except (TypeError, KeyError, IndexError):
|
||||
courier_no = None
|
||||
pass
|
||||
|
||||
factory_name: str | None = None
|
||||
for item in raw.items or []:
|
||||
@@ -251,6 +267,7 @@ def map_sds_order(raw: Any, channel_type_map: dict[int, str | None], pre_courier
|
||||
|
||||
confirmed_at = _parse(getattr(raw, "gmt_confirm_time", None), f"SDS order {raw.no} gmtConfirmTime")
|
||||
area_name = raw.issuing_bay_area.name if raw.issuing_bay_area else None
|
||||
addr = raw.address
|
||||
return OrderUpsertInput(
|
||||
orderNo=raw.no,
|
||||
outOrderNo=raw.out_order_no,
|
||||
@@ -269,6 +286,16 @@ def map_sds_order(raw: Any, channel_type_map: dict[int, str | None], pre_courier
|
||||
confirmedAt=confirmed_at,
|
||||
completedAt=completed_at,
|
||||
shipDeadline=ship_deadline,
|
||||
consigneeName=addr.consignee if addr else None,
|
||||
destinationCountry=addr.country if addr else None,
|
||||
stateProvince=addr.province if addr else None,
|
||||
city=addr.city if addr else None,
|
||||
addressLine1=addr.address_detail1 if addr else None,
|
||||
addressLine2=addr.address_detail2 if addr else None,
|
||||
addressLine3=addr.address_detail3 if addr else None,
|
||||
postalCode=addr.postcode if addr else None,
|
||||
storeName=raw.merchant_store.name if raw.merchant_store else None,
|
||||
labelPdfUrl=label_pdf_url,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user