411 lines
11 KiB
Python
411 lines
11 KiB
Python
"""RIIN 分销平台 —— 数据模型(pydantic v2)。
|
|
|
|
忠实还原 @inkreach/riin-dis 的 TypeScript 类型,extra='allow' 兼容未知字段。
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from enum import IntEnum
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
from pydantic.alias_generators import to_camel
|
|
|
|
|
|
class PlatformType(IntEnum):
|
|
TIKTOK = 11
|
|
TEMU = 13
|
|
SHEIN = 17
|
|
WALMART = 19
|
|
|
|
|
|
class ShopType(IntEnum):
|
|
TIKTOK = 11
|
|
TEMU = 13
|
|
SHEIN = 17
|
|
WALMART = 19
|
|
|
|
|
|
class OrderStatusValue(IntEnum):
|
|
NOT_PUSHED = -4
|
|
PENDING_REVIEW = -5
|
|
ASSIGN_FAILED = -6
|
|
UNDER_REVIEW = -3
|
|
PENDING_PUSH = 1
|
|
UNDER_REVIEW_DISTRIBUTOR = 3
|
|
PUSHED = 4
|
|
IN_PRODUCTION = 5
|
|
SHIPPED = 12
|
|
COMPLETED = 13
|
|
CANCELLED = 14
|
|
CLOSED = 15
|
|
DAY_RANGE_3 = 101
|
|
DAY_RANGE_3_7 = 102
|
|
DAY_RANGE_7_15 = 103
|
|
DAY_RANGE_15_PLUS = 104
|
|
|
|
|
|
class ExpressSource(IntEnum):
|
|
FACTORY = 1
|
|
PLATFORM_LABEL = 2
|
|
SELF_LABEL = 3
|
|
|
|
|
|
class TimeType(IntEnum):
|
|
ORDER_CREATE = 1
|
|
PUSH_FACTORY = 5
|
|
MERCHANT_PUSH = 3
|
|
SHIP = 4
|
|
|
|
|
|
class _RiinModel(BaseModel):
|
|
model_config = ConfigDict(
|
|
extra="allow",
|
|
populate_by_name=True,
|
|
alias_generator=to_camel,
|
|
)
|
|
|
|
|
|
# ----- 认证 -----
|
|
|
|
|
|
class LoginResult(_RiinModel):
|
|
id: str | None = None
|
|
tenant_id: str | None = None
|
|
sub_id: str | None = None
|
|
tenant_name: str | None = None
|
|
username: str | None = None
|
|
nickname: str | None = None
|
|
user_type: str | None = None
|
|
token: str
|
|
token_flag: str | None = None
|
|
invite_code: str | None = None
|
|
main_account: bool | None = None
|
|
factory: bool | None = None
|
|
distribution: bool | None = None
|
|
sub_distribution: bool | None = None
|
|
|
|
|
|
# ----- 订单 -----
|
|
|
|
|
|
class ExpressItem(_RiinModel):
|
|
express_name: str | None = None
|
|
ship_logistics_type: str | None = None
|
|
|
|
|
|
class Order(_RiinModel):
|
|
id: str
|
|
tenant_id: str | None = None
|
|
sub_id: str | None = None
|
|
sub_name: str | None = None
|
|
source_platform_oid: str | None = None
|
|
platform_oid: str | None = None
|
|
platform_order_name: str | None = None
|
|
order_status: int | None = None
|
|
order_type: int | None = None
|
|
goods_total_qty: int | None = None
|
|
platform_order_status: str | None = None
|
|
platform_refund_status: str | None = None
|
|
platform_shop_code: str | None = None
|
|
platform_shop_id: str | None = None
|
|
platform_shop_name: str | None = None
|
|
platform_type: int | None = None
|
|
sub_platform_type: int | None = None
|
|
seller_flag: str | None = None
|
|
factory_remark: str | None = None
|
|
distributor_remark: str | None = None
|
|
seller_remark: str | None = None
|
|
buyer_remark: str | None = None
|
|
delivery_courier: str | None = None
|
|
express_code: str | None = None
|
|
express_fee: float | None = None
|
|
express_source: int | None = None
|
|
courier_number: str | None = None
|
|
waybill: str | None = None
|
|
consignee_name: str | None = None
|
|
phone: str | None = None
|
|
email: str | None = None
|
|
address: str | None = None
|
|
receiver_country: str | None = None
|
|
receiver_province: str | None = None
|
|
receiver_city: str | None = None
|
|
receiver_district: str | None = None
|
|
receiver_town: str | None = None
|
|
post_code: str | None = None
|
|
currency: str | None = None
|
|
currency_type: str | None = None
|
|
total_fee: float | None = None
|
|
payment: float | None = None
|
|
received_payment: float | None = None
|
|
total_price: float | None = None
|
|
total_sell_price: float | None = None
|
|
post_fee: float | None = None
|
|
order_create_time: str | None = None
|
|
pre_shipping_time: str | None = None
|
|
shipping_time: str | None = None
|
|
order_pay_time: str | None = None
|
|
order_time: str | None = None
|
|
finish_time: str | None = None
|
|
cancel_time: str | None = None
|
|
audit_time: str | None = None
|
|
push_time: str | None = None
|
|
distributor_push_time: str | None = None
|
|
distributor_push_target_name: str | None = None
|
|
except_last_shipping_time: str | None = None
|
|
push_msg: str | None = None
|
|
pushed_failed: str | None = None
|
|
assigned_fail_reason: str | None = None
|
|
urgent_order: int | None = None
|
|
is_third_flag: bool | None = None
|
|
is_custom_product: bool | None = None
|
|
express_list: list[ExpressItem] = []
|
|
|
|
|
|
class OrderPageData(_RiinModel):
|
|
records: list[Order] = []
|
|
total: int = 0
|
|
|
|
|
|
class OrderPageResponse(_RiinModel):
|
|
successful: bool | None = None
|
|
message: str | None = None
|
|
error_code: str | None = None
|
|
data: OrderPageData = OrderPageData()
|
|
|
|
|
|
class PrintingImage(_RiinModel):
|
|
id: str | None = None
|
|
type: int | None = None
|
|
url: str | None = None
|
|
name: str | None = None
|
|
code: str | None = None
|
|
|
|
|
|
class OrderGoodsImageObjs(_RiinModel):
|
|
sku_image: str | None = None
|
|
printing_image: str | None = None
|
|
printing_images: list[PrintingImage] = []
|
|
sku_images: list[str] | None = None
|
|
print_urls: list[str] = []
|
|
sku_urls: list[str] = []
|
|
|
|
|
|
class OrderGoods(_RiinModel):
|
|
id: str
|
|
order_id: str | None = None
|
|
platform_oid: str | None = None
|
|
platform_spu_id: str | None = None
|
|
platform_sku_id: str | None = None
|
|
title: str | None = None
|
|
specification: str | None = None
|
|
goods_status: str | None = None
|
|
refund_status: str | None = None
|
|
price: float | None = None
|
|
sell_price: float | None = None
|
|
num: int | None = None
|
|
total_price: float | None = None
|
|
total_sell_price: float | None = None
|
|
sku_image: str | None = None
|
|
mapping_sku_code: str | None = None
|
|
factory_mapping_sku_code: str | None = None
|
|
style_code: str | None = None
|
|
image_code: str | None = None
|
|
size_code: str | None = None
|
|
color_code: str | None = None
|
|
style_name: str | None = None
|
|
image_name: str | None = None
|
|
size_name: str | None = None
|
|
color_name: str | None = None
|
|
product_code: str | None = None
|
|
craft_type: int | None = None
|
|
print_position: str | None = None
|
|
image_objs: Any | None = None
|
|
|
|
|
|
class OrderGoodsResponse(_RiinModel):
|
|
successful: bool | None = None
|
|
message: str | None = None
|
|
error_code: str | None = None
|
|
data: list[OrderGoods] = []
|
|
|
|
|
|
class OrderListCount(_RiinModel):
|
|
assigned_suceessed: int = 0
|
|
factory_auditing: int = 0
|
|
in_producing: int = 0
|
|
shipped: int = 0
|
|
closed: int = 0
|
|
refunding: int = 0
|
|
refunded: int = 0
|
|
rejecting: int = 0
|
|
rejected_to_shop: int = 0
|
|
day_range_group1: int = 0
|
|
day_range_group2: int = 0
|
|
day_range_group3: int = 0
|
|
day_range_group4: int = 0
|
|
|
|
|
|
class OrderListCountResponse(_RiinModel):
|
|
successful: bool | None = None
|
|
message: str | None = None
|
|
error_code: str | None = None
|
|
data: OrderListCount = OrderListCount()
|
|
|
|
|
|
class OrderLog(_RiinModel):
|
|
id: str | None = None
|
|
order_id: str | None = None
|
|
platform_oid: str | None = None
|
|
operate_type: str | None = None
|
|
operate_msg: str | None = None
|
|
operator_name: str | None = None
|
|
operate_time: str | None = None
|
|
|
|
|
|
class OrderLogResponse(_RiinModel):
|
|
successful: bool | None = None
|
|
message: str | None = None
|
|
error_code: str | None = None
|
|
data: list[OrderLog] = []
|
|
|
|
|
|
# ----- 店铺 / 工厂 / 客户 -----
|
|
|
|
|
|
class CustomerShop(_RiinModel):
|
|
tenant_id: str | None = None
|
|
tenant_name: str | None = None
|
|
shop_id: str | None = None
|
|
shop_code: str | None = None
|
|
shop_name: str | None = None
|
|
shop_type: int | None = None
|
|
sub_id: str | None = None
|
|
|
|
|
|
class CustomerShopListResponse(_RiinModel):
|
|
successful: bool | None = None
|
|
message: str | None = None
|
|
error_code: str | None = None
|
|
data: list[CustomerShop] = []
|
|
|
|
|
|
class FactoryInfo(_RiinModel):
|
|
factory_id: str | None = None
|
|
phone: str | None = None
|
|
contact: str | None = None
|
|
address: str | None = None
|
|
name: str | None = None
|
|
logo_url: str | None = None
|
|
|
|
|
|
class FactoryInfoListResponse(_RiinModel):
|
|
successful: bool | None = None
|
|
message: str | None = None
|
|
error_code: str | None = None
|
|
data: list[FactoryInfo] = []
|
|
|
|
|
|
class Customer(_RiinModel):
|
|
id: str | None = None
|
|
tenant_id: str | None = None
|
|
customer_tenant_id: str | None = None
|
|
customer_name: str | None = None
|
|
username: str | None = None
|
|
contacts: str | None = None
|
|
mobile: str | None = None
|
|
settlement_currency: int | None = None
|
|
disable: int | None = None
|
|
|
|
|
|
class CustomerListResponse(_RiinModel):
|
|
successful: bool | None = None
|
|
message: str | None = None
|
|
error_code: str | None = None
|
|
data: list[Customer] = []
|
|
|
|
|
|
# ----- 辅助主数据 -----
|
|
|
|
|
|
class Article(_RiinModel):
|
|
id: str | None = None
|
|
code: str | None = None
|
|
name: str | None = None
|
|
|
|
|
|
class Size(_RiinModel):
|
|
id: str | None = None
|
|
code: str | None = None
|
|
name: str | None = None
|
|
|
|
|
|
class Color(_RiinModel):
|
|
id: str | None = None
|
|
code: str | None = None
|
|
name: str | None = None
|
|
|
|
|
|
class ThirdInterfaceCustomer(_RiinModel):
|
|
id: str | None = None
|
|
name: str | None = None
|
|
|
|
|
|
class ExpressInfo(_RiinModel):
|
|
id: str | None = None
|
|
name: str | None = None
|
|
code: str | None = None
|
|
|
|
|
|
class PageData(_RiinModel):
|
|
records: list[Any] = []
|
|
total: int = 0
|
|
|
|
|
|
# ----- 查询参数(请求 schema)-----
|
|
|
|
|
|
class OrderPageRequest(BaseModel):
|
|
"""RIIN 订单分页查询参数。timeType/startTime/endTime 等可选。"""
|
|
|
|
model_config = ConfigDict(extra="allow")
|
|
|
|
time_type: int | None = None
|
|
start_time: str | None = None
|
|
end_time: str | None = None
|
|
platform_oid_list: str | None = None
|
|
shop_code_list: list[str] | None = None
|
|
courier_number_list: str | None = None
|
|
sub_id_list: list[str] | None = None
|
|
goods_title: str | None = None
|
|
mapping_sku_code: str | None = None
|
|
platform_type: int | None = None
|
|
order_source: int | None = None
|
|
factory_ids: list[str] | None = None
|
|
express_source: int | None = None
|
|
delivery_courier: str | None = None
|
|
receiver_country: str | None = None
|
|
region: str | None = None
|
|
receiver_province: str | None = None
|
|
craft_type: int | None = None
|
|
style_code_list: list[str] | None = None
|
|
color_code_list: list[str] | None = None
|
|
size_code_list: list[str] | None = None
|
|
seller_remark: str | None = None
|
|
urgent_order: int | None = None
|
|
third_interface_customer_id: str | None = None
|
|
platform_status_list: list[str] | None = None
|
|
is_third_flag: bool | None = None
|
|
page_index: int | None = None
|
|
page_size: int | None = None
|
|
order_status: int | None = None
|
|
day_range_group: int | None = None
|
|
has_refund: bool | None = None
|
|
push_failed: bool | None = None
|
|
assigned_fail_reason: str | None = None
|
|
push_fail_reason: str | None = None
|
|
factory_remark_param: str | None = None
|
|
distributor_remark_param: str | None = None
|
|
limit: int | None = None
|
|
all: bool | None = None
|