package model import "time" type ModelTimeInfo struct { CreatedAt time.Time `orm:"auto_now_add;type(datetime)"` UpdatedAt time.Time `orm:"auto_now;type(datetime)"` } type GoodsOrder struct { ID int64 `orm:"column(id)"` VendorOrderID string `orm:"column(vendor_order_id);size(48)"` VendorID int `orm:"column(vendor_id)"` VendorStoreID string `orm:"column(vendor_store_id);size(48)"` StoreID int `orm:"column(store_id)"` // 外部系统里记录的 jxstoreid JxStoreID int `orm:"column(jx_store_id)"` // 根据VendorStoreID在本地系统里查询出来的 jxstoreid StoreName string `orm:"size(64)"` SubStoreID int `orm:"column(sub_store_id)"` SubStoreName string `orm:"size(64)"` ShopPrice int64 // 单位为分 SalePrice int64 // 单位为分 Weight int // 单位为克 ConsigneeName string `orm:"size(32)"` ConsigneeMobile string `orm:"size(32)"` ConsigneeAddress string `orm:"size(255)"` ConsigneeLng int // 坐标 * (10的六次方) ConsigneeLat int // 坐标 * (10的六次方) CoordinateType int SkuCount int // 商品类别数量,即有多少种商品(注意在某些情况下,相同SKU的商品由于售价不同,也会当成不同商品在这个值里) GoodsCount int // 商品个数 Status int // 参见相关常量定义 VendorStatus string `orm:"size(16)"` LockStatus int CancelApplyReason string `orm:"size(255)"` // ""表示没有申请,不为null表示用户正在取消申请 WaybillVendorID int `orm:"column(waybill_vendor_id)"` WaybillStatus int WaybillVendorStatus string `orm:"size(16)"` DuplicatedCount int // 重复新定单消息数,这个一般不是由于消息重发赞成的(消息重发由OrderStatus过滤),一般是业务逻辑赞成的 OriginalData string `orm:"type(text)"` OrderCreatedAt time.Time `orm:"type(datetime);index"` OrderFinishedAt time.Time `orm:"type(datetime)"` ModelTimeInfo } func (o *GoodsOrder) TableUnique() [][]string { return [][]string{ []string{"VendorOrderID", "VendorID"}, } } type OrderSku struct { ID int64 `orm:"column(id)"` VendorOrderID string `orm:"column(vendor_order_id);size(48)"` VendorID int `orm:"column(vendor_id)"` Count int VendorSkuID string `orm:"column(vendor_sku_id);size(48)"` SkuID int `orm:"column(sku_id)"` // 外部系统里记录的 jxskuid JxSkuID int `orm:"column(jx_sku_id)"` // 根据VendorSkuID在本地系统里查询出来的 jxskuid SkuName string `orm:"size(255)"` ShopPrice int64 SalePrice int64 Weight int // 单位为克 OrderCreatedAt time.Time `orm:"type(datetime);index"` } // 同样商品在一个定单中可能重复出现(比如搞活动时,相同商品价格不一样,第一个有优惠) // 所以这里不能用唯一索引 func (o *OrderSku) TableIndex() [][]string { return [][]string{ []string{"VendorOrderID", "SkuID", "VendorID"}, } } type Waybill struct { ID int64 `orm:"column(id)"` VendorOrderID string `orm:"column(vendor_order_id);size(48)"` OrderVendorID int `orm:"column(order_vendor_id)"` VendorWaybillID string `orm:"column(vendor_waybill_id);size(48)"` VendorWaybillID2 string `orm:"column(vendor_waybill_id2);size(48)"` WaybillVendorID int `orm:"column(waybill_vendor_id)"` CourierName string `orm:"size(32)"` CourierMobile string `orm:"size(32)"` Status int VendorStatus string `orm:"size(16)"` ActualFee int64 DuplicatedCount int // 重复新定单消息数,这个一般不是由于消息重发赞成的(消息重发由OrderStatus过滤),一般是业务逻辑赞成的 WaybillCreatedAt time.Time `orm:"type(datetime);index"` WaybillFinishedAt time.Time `orm:"type(datetime)"` ModelTimeInfo } func (w *Waybill) TableUnique() [][]string { return [][]string{ []string{"VendorWaybillID", "WaybillVendorID"}, } } func (w *Waybill) TableIndex() [][]string { return [][]string{ []string{"VendorOrderID"}, } } // 包含定单与运单的状态及事件vendor status type OrderStatus struct { ID int64 `orm:"column(id)"` VendorOrderID string `orm:"column(vendor_order_id);size(48)"` VendorID int `orm:"column(vendor_id)"` OrderType int // 0:定单,1:运单 Status int // 如果Status为OrderStatusEvent,表示VendorStatus只是一个通知事件,不是状态变化 VendorStatus string `orm:"size(16)"` StatusTime time.Time `orm:"type(datetime);index"` DuplicatedCount int // 收到的重复状态转换(或消息)数,一般是由于重发赞成的 ModelTimeInfo } func (v *OrderStatus) TableIndex() [][]string { return [][]string{ []string{"VendorOrderID", "VendorStatus", "Status"}, } }