package response import ( "psi/models" ) type ShippingOrderWithInfo struct { models.ShippingOrder CustomerName string `gorm:"column:customer_name"` } type ShippingOrderItemWithProduct struct { models.ShippingOrderItem SalesOrderItemID int64 `gorm:"column:sales_order_item_id"` ProductID int64 `gorm:"column:product_id"` ProductName string `gorm:"column:product_name"` ProductCode string `gorm:"column:product_code"` CategoryID int64 `gorm:"column:category_id"` CategoryName string `gorm:"column:category_name"` LocationID int64 `gorm:"column:location_id"` LocationName string `gorm:"column:location_name"` WarehouseName string `gorm:"column:warehouse_name"` WarehouseCode string `gorm:"column:warehouse_code"` WarehouseContactPerson string `json:"warehouse_contact_person"` WarehouseContactPhone string `json:"warehouse_contact_phone"` WarehouseProvince string `json:"warehouse_province"` WarehouseCity string `json:"warehouse_city"` WarehouseDistrict string `json:"warehouse_district"` WarehouseAddress string `json:"warehouse_address"` SalesOrderNo string `gorm:"column:sales_order_no"` OutboundOrderNo string `gorm:"column:outbound_order_no"` UnitPrice int64 `gorm:"column:unit_price"` SalesOrderCreatedAt int64 `gorm:"column:sales_order_created_at"` SalesPersonID string `gorm:"column:sales_person_id"` AssociationOrderID int64 `gorm:"column:association_order_id"` AssociationOrderNo string `gorm:"column:association_order_no"` SoItemCreatedAt int64 `gorm:"column:so_item_created_at"` ReceiverName string `gorm:"column:receiver_name"` ReceiverPhone string `gorm:"column:receiver_phone"` ReceiverAddress string `gorm:"column:receiver_address"` LogisticsCompany string `gorm:"column:logistics_company"` LogisticsNo string `gorm:"column:logistics_no"` } // ShippingOrderListResponse 发货单列表响应 type ShippingOrderListResponse struct { List []ShippingOrderItem `json:"list"` Total int64 `json:"total"` Page int `json:"page"` PageSize int `json:"pageSize"` } // ShippingOrderItem 发货单项 type ShippingOrderItem struct { ID int64 `json:"id"` ShippingNo string `json:"shipping_no"` CustomerID int64 `json:"customer_id"` CustomerName string `json:"customer_name"` Status int8 `json:"status"` StatusText string `json:"status_text"` ShippingTime *int64 `json:"shipping_time"` ExpectedArriveTime *int64 `json:"expected_arrive_time"` ActualArriveTime *int64 `json:"actual_arrive_time"` Operator string `json:"operator"` CreatedAt int64 `json:"created_at"` UpdatedAt *int64 `json:"updated_at"` Remark string `json:"remark"` ShopList []OutboundShopInfo `json:"shop_list"` AssociationOrderNo string `json:"association_order_no"` LogisticsNo string `json:"logistics_no"` } // ShippingOrderDetailResponse 发货单详情响应 type ShippingOrderDetailResponse struct { ID int64 `json:"id"` ShippingNo string `json:"shipping_no"` CustomerID int64 `json:"customer_id"` CustomerName string `json:"customer_name"` Status int8 `json:"status"` StatusText string `json:"status_text"` ShippingTime *int64 `json:"shipping_time"` ExpectedArriveTime *int64 `json:"expected_arrive_time"` ActualArriveTime *int64 `json:"actual_arrive_time"` Operator string `json:"operator"` CreatedAt int64 `json:"created_at"` UpdatedAt *int64 `json:"updated_at"` Remark string `json:"remark"` Items []ShippingOrderDetailItem `json:"items"` } // ShippingOrderDetailItem 发货单明细项 type ShippingOrderDetailItem struct { ID int64 `json:"id"` ShippingOrderID int64 `json:"shipping_order_id"` OutboundOrderItemID *int64 `json:"outbound_order_item_id"` SalesOrderItemID int64 `json:"sales_order_item_id"` SalesOrderNo string `json:"sales_order_no"` OutboundOrderNo string `json:"outbound_order_no"` ProductID int64 `json:"product_id"` ProductName string `json:"product_name"` ProductCode string `json:"product_code"` CategoryID int64 `json:"category_id"` CategoryName string `json:"category_name"` LocationID int64 `json:"location_id"` LocationName string `json:"location_name"` WarehouseName string `json:"warehouse_name"` WarehouseCode string `json:"warehouse_code"` WarehouseContactPerson string `json:"warehouse_contact_person"` WarehouseContactPhone string `json:"warehouse_contact_phone"` WarehouseProvince string `json:"warehouse_province"` WarehouseCity string `json:"warehouse_city"` WarehouseDistrict string `json:"warehouse_district"` WarehouseAddress string `json:"warehouse_address"` Quantity int64 `json:"quantity"` UnitPrice int64 `json:"unit_price"` SalesOrderCreatedAt int64 `json:"sales_order_created_at"` SalesPersonID string `json:"sales_person_id"` AssociationOrderID int64 `json:"association_order_id"` AssociationOrderNo string `json:"association_order_no"` SoItemCreatedAt int64 `json:"so_item_created_at"` ReceiverName string `json:"receiver_name"` ReceiverPhone string `json:"receiver_phone"` ReceiverAddress string `json:"receiver_address"` LogisticsCompany string `json:"logistics_company"` LogisticsNo string `json:"logistics_no"` } // ConvertShippingOrderToItem 将发货单模型转换为响应项 func ConvertShippingOrderToItem(order models.ShippingOrder, customerName string, shopList []OutboundShopInfo, associationOrderNo string, logisticsNo string) ShippingOrderItem { return ShippingOrderItem{ ID: order.ID, ShippingNo: order.ShippingNo, CustomerID: order.CustomerID, CustomerName: customerName, ShopList: shopList, Status: order.Status, StatusText: GetShippingOrderStatusText(order.Status), ShippingTime: order.ShippingTime, ExpectedArriveTime: order.ExpectedArriveTime, ActualArriveTime: order.ActualArriveTime, Operator: order.Operator, CreatedAt: order.CreatedAt, UpdatedAt: order.UpdatedAt, Remark: order.Remark, AssociationOrderNo: associationOrderNo, LogisticsNo: logisticsNo, } } // ConvertShippingOrderToDetail 将发货单模型转换为详情响应 func ConvertShippingOrderToDetail(order models.ShippingOrder, customerName string, items []ShippingOrderDetailItem) ShippingOrderDetailResponse { return ShippingOrderDetailResponse{ ID: order.ID, ShippingNo: order.ShippingNo, CustomerID: order.CustomerID, CustomerName: customerName, Status: order.Status, StatusText: GetShippingOrderStatusText(order.Status), ShippingTime: order.ShippingTime, ExpectedArriveTime: order.ExpectedArriveTime, ActualArriveTime: order.ActualArriveTime, Operator: order.Operator, CreatedAt: order.CreatedAt, UpdatedAt: order.UpdatedAt, Remark: order.Remark, Items: items, } } // ShippingOrderDetailListItem 发货单详情列表项(综合list和detail的所有字段) type ShippingOrderDetailListItem struct { ID int64 `json:"id"` ShippingNo string `json:"shipping_no"` CustomerID int64 `json:"customer_id"` CustomerName string `json:"customer_name"` Status int8 `json:"status"` StatusText string `json:"status_text"` ShippingTime *int64 `json:"shipping_time"` ExpectedArriveTime *int64 `json:"expected_arrive_time"` ActualArriveTime *int64 `json:"actual_arrive_time"` Operator string `json:"operator"` CreatedAt int64 `json:"created_at"` UpdatedAt *int64 `json:"updated_at"` Remark string `json:"remark"` ShopList []OutboundShopInfo `json:"shop_list"` Items []ShippingOrderDetailItem `json:"items"` } // ShippingOrderDetailListResponse 发货单详情列表响应 type ShippingOrderDetailListResponse struct { List []ShippingOrderDetailListItem `json:"list"` Total int64 `json:"total"` Page int `json:"page"` PageSize int `json:"pageSize"` } // ConvertShippingOrderToDetailListItem 将发货单模型转换为详情列表项 func ConvertShippingOrderToDetailListItem(order models.ShippingOrder, customerName string, shopList []OutboundShopInfo, items []ShippingOrderDetailItem) ShippingOrderDetailListItem { return ShippingOrderDetailListItem{ ID: order.ID, ShippingNo: order.ShippingNo, CustomerID: order.CustomerID, CustomerName: customerName, Status: order.Status, StatusText: GetShippingOrderStatusText(order.Status), ShippingTime: order.ShippingTime, ExpectedArriveTime: order.ExpectedArriveTime, ActualArriveTime: order.ActualArriveTime, Operator: order.Operator, CreatedAt: order.CreatedAt, UpdatedAt: order.UpdatedAt, Remark: order.Remark, ShopList: shopList, Items: items, } } // GetShippingOrderStatusText 获取发货单状态文本 func GetShippingOrderStatusText(status int8) string { statusMap := map[int8]string{ 1: "待发货", 2: "已发货", 3: "已签收", 4: "已取消", } if text, ok := statusMap[status]; ok { return text } return "未知" }