daShangDao_psiServer/models/response/shipping.go

263 lines
12 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"`
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,
}
}
// ShippingOrderFlatItem 发货单平铺记录(每条记录对应一个商品明细)
type ShippingOrderFlatItem struct {
ItemID int64 `json:"item_id"` // shipping_order_item.id用于操作按钮
ShippingOrderID int64 `json:"shipping_order_id"` // 发货单ID
ShippingNo string `json:"shipping_no"` // 发货单号
ShopType int8 `json:"shop_type"` // 平台类型
ShopTypeText string `json:"shop_type_text"` // 平台类型文本
LogisticsCompany string `json:"logistics_company"` // 快递公司(来自 sales_order_item
Status int8 `json:"status"` // 发货单状态
StatusText string `json:"status_text"` // 发货单状态文本
ProductName string `json:"product_name"` // 书名
ProductCode string `json:"product_code"` // ISBN
ReceiverAddress string `json:"receiver_address"` // 收件人地址
SalesOrderNo string `json:"sales_order_no"` // 销售单号
OutboundOrderNo string `json:"outbound_order_no"` // 出库单号
AssociationOrderNo string `json:"association_order_no"` // 第三方订单编号
LogisticsNo string `json:"logistics_no"` // 快递单号
SalesOrderCreatedAt int64 `json:"sales_order_created_at"` // 销售时间
UnitPrice int64 `json:"unit_price"` // 售价(分)
Quantity int64 `json:"quantity"` // 出库数量
SalesOrderItemID int64 `json:"sales_order_item_id"` // sales_order_item.id打印流程需要
ProductID int64 `json:"product_id"` // 商品ID左侧详情展示需要
}
// ShippingOrderFlatListResponse 发货单平铺列表响应
type ShippingOrderFlatListResponse struct {
List []ShippingOrderFlatItem `json:"list"`
Total int64 `json:"total"`
Page int `json:"page"`
PageSize int `json:"pageSize"`
}
// GetShippingOrderStatusText 获取发货单状态文本
func GetShippingOrderStatusText(status int8) string {
statusMap := map[int8]string{
1: "待发货",
2: "已发货",
3: "已签收",
4: "已取消",
}
if text, ok := statusMap[status]; ok {
return text
}
return "未知"
}