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, "storeStatus": model.StoreStatusName,
"categoryType": model.CategoryTypeName, "categoryType": model.CategoryTypeName,
"skuStatus": model.SkuStatusName, "skuStatus": model.SkuStatusName,
"skuNamePrefix": model.SkuNamePrefixNames,
"vendorName": model.VendorChineseNames, "vendorName": model.VendorChineseNames,
"orderStatus": model.OrderStatusName, "orderStatus": model.OrderStatusName,
"waybillStatus": model.WaybillStatusName, "waybillStatus": model.WaybillStatusName,

View File

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

View File

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

View File

@@ -98,6 +98,31 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use
return err 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 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 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 SyncFlagModifiedMask = 1
SyncFlagNewMask = 2 SyncFlagNewMask = 2
SyncFlagDeletedMask = 4 SyncFlagDeletedMask = 4
SyncFlagSaleMask = 5
SyncFlagPriceMask = 6
) )
// const ( // const (

View File

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