This commit is contained in:
gazebo
2018-09-14 11:21:45 +08:00
parent 315e202312
commit 4bfb7c235a
7 changed files with 106 additions and 12 deletions

View File

@@ -35,6 +35,7 @@ func InitServiceInfo(version, buildDate, gitCommit string) {
"storeStatus": model.StoreStatusName,
"categoryType": model.CategoryTypeName,
"skuStatus": model.SkuStatusName,
"skuNamePrefix": model.SkuNamePrefixNames,
"vendorName": model.VendorChineseNames,
"orderStatus": model.OrderStatusName,
"waybillStatus": model.WaybillStatusName,

View File

@@ -20,7 +20,7 @@ func init() {
}
func TestGetQiniuUploadToken(t *testing.T) {
token, err := GetQiniuUploadToken()
token, err := GetQiniuUploadToken("")
if err != nil {
t.Fatal(err)
}

View File

@@ -2,7 +2,6 @@ package cms
import (
"strconv"
"strings"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
@@ -26,6 +25,9 @@ type StoreSkuBindInfo struct {
IsFocus int `json:"isFocus"` // -1不关注0忽略1关注
IsSale int `json:"isSale"` // -1不可售0忽略1可售
Price int `json:"price"`
ElmID int64 `json:"elmID"`
EbaiID int64 `json:"ebaiID"`
}
func GetStoreSkus(storeID int, keyword string, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *StoreSkuNamesInfo, err error) {
@@ -85,8 +87,15 @@ func GetStoreSkus(storeID int, keyword string, params map[string]interface{}, of
sqlParams = append(sqlParams, params["unit"].(string))
}
if params["skuID"] != nil {
sql += " AND t2.id = ?"
sqlParams = append(sqlParams, params["skuID"].(int))
skuID, ok := params["skuID"].(int)
if ok {
sql += " AND t2.id = ?"
sqlParams = append(sqlParams, skuID)
} else {
skuIDs := params["skuID"].([]interface{})
sql += " AND t2.id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")"
sqlParams = append(sqlParams, skuIDs)
}
}
if params["fromStatus"] != nil {
fromStatus := params["fromStatus"].(int)
@@ -166,12 +175,10 @@ func UpdateStoreSku(storeID int, skuBinds []*StoreSkuBindInfo, userName string)
db := dao.GetDB()
var existBinds []*model.StoreSkuBind
skuIDs := make([]int, len(skuBinds))
placeHolders := make([]string, len(skuBinds))
for k, v := range skuBinds {
skuIDs[k] = v.SkuID
placeHolders[k] = "?"
}
questions := "(" + strings.Join(placeHolders, ",") + ")"
questions := "(" + dao.GenQuestionMarks(len(skuBinds)) + ")"
if err = dao.GetRows(db, &existBinds, `
SELECT *
FROM store_sku_bind
@@ -201,6 +208,9 @@ func UpdateStoreSku(storeID int, skuBinds []*StoreSkuBindInfo, userName string)
if skuBind != nil {
if v.Price != 0 {
skuBind.Price = v.Price
skuBind.JdSyncStatus |= model.SyncFlagPriceMask
skuBind.ElmSyncStatus |= model.SyncFlagPriceMask
skuBind.EbaiSyncStatus |= model.SyncFlagPriceMask
}
if v.IsSale != 0 {
if v.IsSale == 1 {
@@ -208,6 +218,9 @@ func UpdateStoreSku(storeID int, skuBinds []*StoreSkuBindInfo, userName string)
} else {
skuBind.Status = model.StoreSkuBindStatusDontSale
}
skuBind.JdSyncStatus |= model.SyncFlagSaleMask
skuBind.ElmSyncStatus |= model.SyncFlagSaleMask
skuBind.EbaiSyncStatus |= model.SyncFlagSaleMask
}
if ok {
if v.IsFocus == -1 {
@@ -217,13 +230,20 @@ func UpdateStoreSku(storeID int, skuBinds []*StoreSkuBindInfo, userName string)
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
})
} else {
// todo 如果修改ebai与elm ID怎么处理呢
skuBind.DeletedAt = utils.DefaultTimeValue
skuBind.JdSyncStatus = model.SyncFlagModifiedMask
skuBind.ElmSyncStatus = model.SyncFlagModifiedMask
skuBind.EbaiSyncStatus = model.SyncFlagModifiedMask
skuBind.JdSyncStatus |= model.SyncFlagModifiedMask
skuBind.ElmSyncStatus |= model.SyncFlagModifiedMask
skuBind.EbaiSyncStatus |= model.SyncFlagModifiedMask
_, err = dao.UpdateEntity(db, skuBind)
}
} else {
if v.EbaiID != 0 {
skuBind.EbaiID = v.EbaiID
}
if v.ElmID != 0 {
skuBind.ElmID = v.ElmID
}
skuBind.JdSyncStatus = model.SyncFlagNewMask
skuBind.ElmSyncStatus = model.SyncFlagNewMask
skuBind.EbaiSyncStatus = model.SyncFlagNewMask
@@ -236,7 +256,7 @@ func UpdateStoreSku(storeID int, skuBinds []*StoreSkuBindInfo, userName string)
}
}
dao.Commit(db)
err = CurVendorSync.SyncStoreSku(db, storeID, -1, false, userName)
err = CurVendorSync.SyncStoreSku(db, storeID, skuIDs, false, userName)
}
return num, err
}

View File

@@ -98,6 +98,31 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use
return err
}
func (v *VendorSync) SyncStoreSku(db *dao.DaoDB, storeID, skuID int, isForce bool, userName string) (err error) {
func (v *VendorSync) SyncStoreSku(db *dao.DaoDB, storeID int, skuIDs []int, isForce bool, userName string) (err error) {
storeMapList := v.GetStoreMapInfo(db, storeID)
var skuNamesInfo *StoreSkuNamesInfo
if skuNamesInfo, err = GetStoreSkus(storeID, "", utils.Params2Map("skuID", skuIDs), 0, 10000); err == nil {
if skuNamesInfo.TotalCount != len(skuNamesInfo.SkuNames) {
panic("too many skus!")
}
for _, storeMap := range storeMapList {
switch storeMap.VendorID {
case model.VendorIDJD:
err = v.SyncStoreSku2JD(db, skuNamesInfo.SkuNames, isForce, userName)
}
}
}
return err
}
func (v *VendorSync) SyncStoreSku2JD(db *dao.DaoDB, skuInfoList []*StoreSkuNameExt, isForce bool, userName string) (err error) {
// for _, skuInfo := range skuInfoList {
// }
return err
}
func (v *VendorSync) GetStoreMapInfo(db *dao.DaoDB, storeID int) (storeMapList []*model.StoreMap) {
dao.GetEntities(db, &storeMapList, utils.Params2Map(model.FieldStoreID, storeID), false)
return storeMapList
}

View File

@@ -81,3 +81,14 @@ func WrapUpdateULEntity(item interface{}, lastOperator string) interface{} {
}
return item
}
func GenQuestionMarks(count int) string {
marks := ""
if count > 0 {
marks = "?"
for i := 1; i < count; i++ {
marks += ", ?"
}
}
return marks
}

View File

@@ -44,6 +44,9 @@ const (
SyncFlagModifiedMask = 1
SyncFlagNewMask = 2
SyncFlagDeletedMask = 4
SyncFlagSaleMask = 5
SyncFlagPriceMask = 6
)
// const (

View File

@@ -51,6 +51,40 @@ var (
"支",
"杯",
}
SkuNamePrefixNames = []string{
"新鲜",
"组合菜",
"冰鲜",
"优",
"精",
"熟食",
"鲜",
"净菜",
"净",
"冻",
"半熟",
"果切",
"熟",
"优质",
"生",
"干货",
"快捷菜",
"手工厨房",
"带壳",
"长条",
"鲜活宰杀",
"惠",
"鱼腥草",
"冰冻",
"思念",
"散装",
"优质精品",
"干",
"湿",
"生品",
"虾仁",
"鲜活现宰",
}
)
var (