- jd basic api(category, sku, store management) finished.
This commit is contained in:
48
business/model/dao/dao.go
Normal file
48
business/model/dao/dao.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/globals/gormdb"
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
func GetEntity(item interface{}, db *gorm.DB) error {
|
||||
if db == nil {
|
||||
db = gormdb.GetDB()
|
||||
}
|
||||
err := utils.CallFuncLogError(func() error {
|
||||
return db.First(item).Error
|
||||
}, reflect.TypeOf(item).Name())
|
||||
return err
|
||||
}
|
||||
|
||||
func GetSellCities(skuNameID int, vendorID int, db *gorm.DB) (cities []*model.Place, err error) {
|
||||
if db == nil {
|
||||
db = gormdb.GetDB()
|
||||
}
|
||||
sql := `
|
||||
SELECT DISTINCT t3.*
|
||||
FROM sku_name_place_bind t1
|
||||
JOIN place t2 ON t1.place_code = t2.code
|
||||
JOIN place t3 ON (t2.level = 2 AND t2.code = t3.code) OR (t2.level = 1 AND t2.code = t3.parent_code)
|
||||
WHERE t1.sku_name_id = ?
|
||||
`
|
||||
if vendorID == model.VendorIDJD {
|
||||
sql += "AND t3.jd_code <> 0\n"
|
||||
}
|
||||
rows, err := db.Raw(sql, skuNameID).Rows()
|
||||
if err == nil {
|
||||
defer rows.Close()
|
||||
places := make([]*model.Place, 0)
|
||||
for rows.Next() {
|
||||
place := new(model.Place)
|
||||
db.ScanRows(rows, place)
|
||||
places = append(places, place)
|
||||
}
|
||||
return places, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/globals/gormdb"
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
func GetCategory(ID int, db *gorm.DB) (*model.SkuCategory, error) {
|
||||
if db == nil {
|
||||
db = gormdb.GetDB()
|
||||
}
|
||||
item := &model.SkuCategory{}
|
||||
item.ID = ID
|
||||
err := utils.CallFuncLogError(func() error {
|
||||
return db.First(item).Error
|
||||
}, "GetCategory")
|
||||
return item, err
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/globals/gormdb"
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
func GetStore(ID int, db *gorm.DB) (*model.Store, error) {
|
||||
if db == nil {
|
||||
db = gormdb.GetDB()
|
||||
}
|
||||
item := &model.Store{}
|
||||
item.ID = ID
|
||||
err := utils.CallFuncLogError(func() error {
|
||||
return db.First(item).Error
|
||||
}, "GetStore")
|
||||
return item, err
|
||||
}
|
||||
@@ -63,9 +63,9 @@ type SkuCategory struct {
|
||||
Type int8 // 类别类型
|
||||
Seq int
|
||||
|
||||
JdID int `gorm:"index"` // 这个是指商家自己的商品类别在京东平台上的ID
|
||||
JdID int64 `gorm:"index"` // 这个是指商家自己的商品类别在京东平台上的ID
|
||||
JdCategoryID int // 这个是指对应的京东商品类别
|
||||
ElmID string `gorm:"type:varchar(48);index"`
|
||||
ElmID int64 `gorm:"index"`
|
||||
MtID string `gorm:"type:varchar(48);index"`
|
||||
DidiID string `gorm:"type:varchar(48);index"`
|
||||
}
|
||||
@@ -84,6 +84,7 @@ type SkuName struct {
|
||||
Name string `gorm:"type:varchar(255)"`
|
||||
Comment string `gorm:"type:varchar(255)"`
|
||||
|
||||
BrandID int
|
||||
CategoryID int // 标准类别
|
||||
Status int
|
||||
|
||||
@@ -99,17 +100,16 @@ type Sku struct {
|
||||
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)"`
|
||||
SpecUnit string `gorm:"type:varchar(8)"` // 质量或容量
|
||||
Weight int // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality
|
||||
|
||||
Weight int // 单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality
|
||||
|
||||
JdID string `gorm:"type:varchar(48)"`
|
||||
JdID int64
|
||||
}
|
||||
|
||||
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"`
|
||||
PlaceCode int `gorm:"unique_index:unique_sku_name_id_sku_place_id"`
|
||||
}
|
||||
|
||||
type StoreSkuBind struct {
|
||||
@@ -119,5 +119,6 @@ type StoreSkuBind struct {
|
||||
SubStoreID int
|
||||
Price int // 单位为分,不用int64的原因是这里不需要累加
|
||||
Status int
|
||||
ElmID string `gorm:"type:varchar(48)"`
|
||||
|
||||
ElmID int64
|
||||
}
|
||||
|
||||
@@ -11,19 +11,29 @@ const (
|
||||
MainSubStoreAddress = "本店"
|
||||
)
|
||||
|
||||
// 配送范围类型,此定义与京东到家相同,除非特殊说明,本系统中的坐标都是火星坐标
|
||||
const (
|
||||
DeliveryRangeTypePolygon = 2
|
||||
DeliveryRangeTypeRadius = 3
|
||||
)
|
||||
|
||||
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
|
||||
Name string `gorm:"type:varchar(255);unique_index"`
|
||||
CityCode int // todo ?
|
||||
DistrictCode int // todo ?
|
||||
Address string `gorm:"type:varchar(255)"`
|
||||
Tel1 string `gorm:"type:varchar(32)"`
|
||||
Tel2 string `gorm:"type:varchar(32)"`
|
||||
OpenTime1 int16 // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有
|
||||
CloseTime1 int16 // 格式同上
|
||||
OpenTime2 int16 // 格式同上
|
||||
CloseTime2 int16 // 格式同上
|
||||
Lng int // 乘了10的6次方
|
||||
Lat int // 乘了10的6次方
|
||||
DeliveryRangeType int8 // 参见相关常量定义
|
||||
DeliveryRange string `gorm:"type:varchar(2048)"` // 如果DeliveryRangeType为DeliveryRangeTypePolygon,则为逗号分隔坐标,分号分隔的坐标点(坐标与Lng和Lat一样,都是整数),比如 121361504,31189308;121420555,31150238。否则为半径,单位为米
|
||||
Status int
|
||||
}
|
||||
|
||||
type StoreSub struct {
|
||||
@@ -32,7 +42,7 @@ type StoreSub struct {
|
||||
Index int `gorm:"unique_index:unique_index1"` // 子店序号,为0表示主店
|
||||
Name string `gorm:"type:varchar(255)"`
|
||||
Address string `gorm:"type:varchar(255)"`
|
||||
Status int
|
||||
Status int // 取值同Store.Status
|
||||
Mobile1 string `gorm:"type:varchar(32)"`
|
||||
Mobile2 string `gorm:"type:varchar(32)"`
|
||||
Mobile3 string `gorm:"type:varchar(32)"`
|
||||
@@ -43,7 +53,7 @@ type StoreMap struct {
|
||||
StoreID int `gorm:"unique_index:storemap1"`
|
||||
VendorID int `gorm:"unique_index:storemap1"`
|
||||
VendorStoreID string `gorm:"type:varchar(48);unique_index"`
|
||||
Status int
|
||||
Status int // 取值同Store.Status
|
||||
|
||||
AutoPickup int8 // 是否自动拣货
|
||||
DeliveryType int8 // 配送类型
|
||||
|
||||
Reference in New Issue
Block a user