daShangDao_psiServer/models/response/shipping.go
2026-06-15 13:47:39 +08:00

227 lines
10 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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"`
}
// 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) 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,
}
}
// 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 "未知"
}