- continue refactoring...

This commit is contained in:
gazebo
2018-08-17 16:42:16 +08:00
parent d40186e930
commit c5db19045d
33 changed files with 656 additions and 178 deletions

View File

@@ -1,20 +0,0 @@
package model
type Jxstorefeature struct {
Id int `orm:"column(storeid);pk"`
Autopickup int8 `orm:"column(autopickup);null"`
JdDeliveryType int8 `orm:"column(jd_delivery_type);default(0)"` // 京东店的配送方式
ElmDeliveryType int8 `orm:"column(elm_delivery_type);default(0)"` // 饿了么店的配送方式
JdCompetition int8 `orm:"default(1)"` // 京东门店是否支持3方配送
ElmCompetition int8 `orm:"default(0)"` // 饿了么门店是否支持3方配送
SupportMtps int8 `orm:"default(1)"` // 是否支持美团配送
SupportDada int8 `orm:"default(0)"` // 是否支持达达
SupportFengNiao int8 `orm:"default(0)"` // 是否支持蜂鸟
// Transmtzs int8 `orm:"column(transmtzs);null"` // 不用了
// Deliverycompetition int8 `orm:"column(deliverycompetition);null"` // 不用了
}
func (t *Jxstorefeature) TableName() string {
return "jxstorefeature"
}

View File

@@ -2,49 +2,23 @@ package model
import "time"
func Order2Status(order *GoodsOrder) (retVal *OrderStatus) {
retVal = &OrderStatus{
VendorOrderID: order.VendorOrderID,
VendorID: order.VendorID,
OrderType: OrderTypeOrder,
RefVendorOrderID: order.VendorOrderID,
RefVendorID: order.VendorID,
Status: order.Status,
VendorStatus: order.VendorStatus,
StatusTime: order.StatusTime,
LockStatus: order.LockStatus,
}
return retVal
type ModelO struct {
ID uint `gorm:"primary_key"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt *time.Time `sql:"index"`
LastOperator string `gorm:"type:varchar(32)"` // 最后操作员
}
func Waybill2Status(bill *Waybill) (retVal *OrderStatus) {
retVal = &OrderStatus{
VendorOrderID: bill.VendorWaybillID,
VendorID: bill.WaybillVendorID,
OrderType: OrderTypeWaybill,
RefVendorOrderID: bill.VendorOrderID,
RefVendorID: bill.OrderVendorID,
Status: bill.Status,
VendorStatus: bill.VendorStatus,
StatusTime: bill.StatusTime,
Remark: bill.Remark,
}
return retVal
type ModelIDCU struct {
ID uint `gorm:"primary_key"`
CreatedAt time.Time
UpdatedAt time.Time
}
// 判断订单是否是临时的不是真实收到了new order消息后的订单
func IsOrderSolid(order *GoodsOrder) bool {
return !(order.ConsigneeName == "" && order.ID == 0)
}
func (o *GoodsOrder) GetStatusTime() time.Time {
return o.StatusTime
}
func (o *Waybill) GetStatusTime() time.Time {
return o.StatusTime
}
func (o *OrderStatus) GetStatusTime() time.Time {
return o.StatusTime
type ModelIDCUO struct {
ID uint `gorm:"primary_key"`
CreatedAt time.Time
UpdatedAt time.Time
LastOperator string `gorm:"type:varchar(32)"` // 最后操作员
}

View File

@@ -144,3 +144,50 @@ func (v *OrderStatus) TableIndex() [][]string {
[]string{"VendorOrderID", "Status", "VendorStatus"},
}
}
func Order2Status(order *GoodsOrder) (retVal *OrderStatus) {
retVal = &OrderStatus{
VendorOrderID: order.VendorOrderID,
VendorID: order.VendorID,
OrderType: OrderTypeOrder,
RefVendorOrderID: order.VendorOrderID,
RefVendorID: order.VendorID,
Status: order.Status,
VendorStatus: order.VendorStatus,
StatusTime: order.StatusTime,
LockStatus: order.LockStatus,
}
return retVal
}
func Waybill2Status(bill *Waybill) (retVal *OrderStatus) {
retVal = &OrderStatus{
VendorOrderID: bill.VendorWaybillID,
VendorID: bill.WaybillVendorID,
OrderType: OrderTypeWaybill,
RefVendorOrderID: bill.VendorOrderID,
RefVendorID: bill.OrderVendorID,
Status: bill.Status,
VendorStatus: bill.VendorStatus,
StatusTime: bill.StatusTime,
Remark: bill.Remark,
}
return retVal
}
// 判断订单是否是临时的不是真实收到了new order消息后的订单
func IsOrderSolid(order *GoodsOrder) bool {
return !(order.ConsigneeName == "" && order.ID == 0)
}
func (o *GoodsOrder) GetStatusTime() time.Time {
return o.StatusTime
}
func (o *Waybill) GetStatusTime() time.Time {
return o.StatusTime
}
func (o *OrderStatus) GetStatusTime() time.Time {
return o.StatusTime
}

24
business/model/place.go Normal file
View File

@@ -0,0 +1,24 @@
package model
import "time"
// https://github.com/videni/pcr
const (
CityLevelProvince = 1
CityLevelCity = 2
CityLevelDistrict = 3
)
type Place struct {
ID uint
Code int `gorm:"unique_index"` // 国家标准代码
Name string `gorm:"type:varchar(16);index"` // 如果是直辖市,省的概念不加“市”来区别
ParentCode int // 上级代码
PostCode string `gorm:"type:varchar(8);index"`
Level int8 // 城市级别,参见相关常量定义
TelCode string `gorm:"type:varchar(8);index"`
JdCode int `gorm:"index"` // 对应的京东代码
Enabled int8 // 是否启用
MtpsPrice int // 分为单位
UpdatedAt time.Time
}

114
business/model/product.go Normal file
View File

@@ -0,0 +1,114 @@
package model
const (
SkuCategoryNormal = 0
SkuCategorySpecial = 1
)
const (
SpecUnitG = 0
SpecUnitKG = 1
SpecUnitL = 2
SpecUnitML = 3
)
var (
SpecUnitNames = []string{
"g",
"kg",
"L",
"ml",
}
)
var (
UnitNames = []string{
"份",
"袋",
"瓶",
"只",
"组",
"个",
"盒",
"把",
"半只",
"包",
"条",
"根",
"箱",
"听",
"套",
"罐",
"件",
"块",
"片",
"支",
"杯",
}
)
type SkuCategory struct {
ModelIDCUO
Name string `gorm:"type:varchar(255);unique_index"`
ParentID int
Level int8
Type int8 // 类别类型
Seq int
JdID string `gorm:"type:varchar(48)"`
ElmID string `gorm:"type:varchar(48)"`
MtID string `gorm:"type:varchar(48)"`
DidiID string `gorm:"type:varchar(48)"`
}
type StoreSkuCategoryMap struct {
ModelIDCUO
StoreID int
SkuCategoryID int
ElmID string `gorm:"type:varchar(48)"`
}
type SkuName struct {
ModelIDCUO
Prefix string `gorm:"type:varchar(255)"`
Name string `gorm:"type:varchar(255)"`
Comment string `gorm:"type:varchar(255)"`
CategoryID int // 标准类别
Status int
IsGlobal int8 `gorm:"default:1"` // 是否是全部全国可见如果否的话可见性由SkuPlace决定
Unit string `gorm:"type:varchar(8)"`
Price int // 单位为分标准价不为份的就为实际标准价为份的为每市斤价实际还要乘质量。todo 为份的确定必须有质量
Img string `gorm:"type:varchar(255)"`
ElmImgHashCode string `gorm:"type:varchar(64)"`
}
type Sku struct {
ModelIDCUO
CategoryID int // 特殊类别,一般用于秒杀,特价之类的特殊类别
NameID int `gorm:"index:unique_index_name_Id_quality"` // todo 这个索引应该要求唯一
SpecQuality float32 `gorm:"index:unique_index_name_Id_quality"`
SpecUnit string `gorm:"type:varchar(8)"`
Weight int // 单位为克当相应的SkuName的SpecUnit为g或kg时必须等于SpecQuality
JdID string `gorm:"type:varchar(48)"`
}
type SkuNamePlaceBind struct {
ModelIDCUO
SkuNameID int `gorm:"unique_index:unique_sku_name_id_sku_place_id"`
PlaceID int `gorm:"unique_index:unique_sku_name_id_sku_place_id"`
}
type StoreSkuBind struct {
ModelIDCUO
StoreID int `gorm:"unique_index:unique_store_id_sku_id"`
SkuID int `gorm:"unique_index:unique_store_id_sku_id"`
SubStoreID int
Price int // 单位为分不用int64的原因是这里不需要累加
Status int
ElmID string `gorm:"type:varchar(48)"`
}

59
business/model/store.go Normal file
View File

@@ -0,0 +1,59 @@
package model
const (
StoreStatusDisabled = -1
StoreStatusClosed = 0
StoreStatusOpened = 1
)
const (
MainSubStoreName = "本店"
MainSubStoreAddress = "本店"
)
type Store struct {
ModelIDCUO
Name string `gorm:"type:varchar(255);unique_index"`
CityCode int
DistrictCode int
Address string `gorm:"type:varchar(255)"`
OpenTime1 int // 930就表示9点半用两个的原因是为了支持中午休息1与2的时间段不能交叉为0表示没有
CloseTime1 int // 格式同上
OpenTime2 int // 格式同上
CloseTime2 int // 格式同上
Lng int // 乘了10的6次方
Lat int // 乘了10的6次方
Status int
}
type StoreSub struct {
ModelIDCUO
StoreID int `gorm:"unique_index:unique_index1"`
Index int `gorm:"unique_index:unique_index1"` // 子店序号为0表示主店
Name string `gorm:"type:varchar(255)"`
Address string `gorm:"type:varchar(255)"`
Status int
Mobile1 string `gorm:"type:varchar(32)"`
Mobile2 string `gorm:"type:varchar(32)"`
Mobile3 string `gorm:"type:varchar(32)"`
}
type StoreMap struct {
ModelIDCUO
StoreID int `gorm:"unique_index:storemap1"`
VendorID int `gorm:"unique_index:storemap1"`
VendorStoreID string `gorm:"type:varchar(48);unique_index"`
Status int
AutoPickup int8 // 是否自动拣货
DeliveryType int8 // 配送类型
DeliveryCompetition int8 // 是否支持配送竞争
}
type StoreCourierMap struct {
ModelIDCUO
StoreID int `gorm:"unique_index:storemap1"`
VendorID int `gorm:"unique_index:storemap1"`
VendorStoreID string `gorm:"type:varchar(48);unique_index"`
Status int
}