- fix bug in jxutils.ComposeSkuName

- mtwm SyncStoreSkus almost ok
This commit is contained in:
gazebo
2018-11-27 19:26:36 +08:00
parent 33742dc7f8
commit fe01f60e2d
3 changed files with 50 additions and 37 deletions

View File

@@ -219,22 +219,30 @@ func ComposeSkuName(prefix, name, comment, unit string, spec_quality float32, sp
if unit == "份" { if unit == "份" {
skuName += "约" skuName += "约"
} }
if math.Round(float64(spec_quality)) == float64(spec_quality) || (spec_unit != "L" && spec_unit != "kg") { skuName += ComposeSkuSpec(spec_quality, spec_unit)
skuName += fmt.Sprintf("%d", int(spec_quality))
} else {
skuName += fmt.Sprintf("%.2f", spec_quality)
}
skuName += spec_unit
skuName += "/" + unit skuName += "/" + unit
if comment != "" { if comment != "" {
skuName += "(" + comment + ")" skuName += "(" + comment + ")"
} }
if maxLen > 0 { if maxLen > 0 {
skuName = skuName[:maxLen] runeList := []rune(skuName)
if len(runeList) > maxLen {
skuName = string(runeList[:maxLen])
}
} }
return skuName return skuName
} }
func ComposeSkuSpec(spec_quality float32, spec_unit string) (spec string) {
if math.Round(float64(spec_quality)) == float64(spec_quality) || (spec_unit != "L" && spec_unit != "kg") {
spec = fmt.Sprintf("%d", int(spec_quality))
} else {
spec = strings.TrimRight(fmt.Sprintf("%.2f", spec_quality), "0.")
}
spec += spec_unit
return spec
}
// 1商品特殊前缀 // 1商品特殊前缀
// 2商品名字 // 2商品名字
// 3商品说明1可缺失 // 3商品说明1可缺失

View File

@@ -5,7 +5,6 @@ import (
"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"
"git.rosy.net.cn/jx-callback/globals"
) )
type SkuStoreCatInfo struct { type SkuStoreCatInfo struct {
@@ -88,6 +87,7 @@ func GetStoreCategories(db *DaoDB, vendorID, storeID int, level int) (cats []*St
} }
type StoreSkuSyncInfo struct { type StoreSkuSyncInfo struct {
BindID int `orm:"column(bind_id)"`
Price int64 Price int64
UnitPrice int64 UnitPrice int64
StoreSkuStatus int StoreSkuStatus int
@@ -109,7 +109,7 @@ type StoreSkuSyncInfo struct {
func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*StoreSkuSyncInfo, err error) { func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*StoreSkuSyncInfo, err error) {
sql := ` sql := `
SELECT t1.price, t1.unit_price, t1.status store_sku_status, t1.%s_id, t1.%s_sync_status sku_sync_status, SELECT t1.id bind_id, t1.price, t1.unit_price, t1.status store_sku_status, t1.%s_id, t1.%s_sync_status sku_sync_status,
t2.*, t2.*,
t3.prefix, t3.name, t3.unit, t3.img, t3.prefix, t3.name, t3.unit, t3.img,
t4.%s_category_id vendor_vendor_cat_id, t4.%s_category_id vendor_vendor_cat_id,
@@ -134,7 +134,7 @@ func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*Store
} }
filedPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID]) filedPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
sql = fmt.Sprintf(sql, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix) sql = fmt.Sprintf(sql, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix)
globals.SugarLogger.Debug(sql) // globals.SugarLogger.Debug(sql)
if err = GetRows(db, &skus, sql, sqlParams...); err != nil { if err = GetRows(db, &skus, sql, sqlParams...); err != nil {
return nil, err return nil, err
} }

View File

@@ -192,43 +192,48 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
skus, err := dao.GetStoreSkus(db, model.VendorIDMTWM, storeID, skuIDs) skus, err := dao.GetStoreSkus(db, model.VendorIDMTWM, storeID, skuIDs)
// globals.SugarLogger.Debug(utils.Format4Output(skus, false)) // globals.SugarLogger.Debug(utils.Format4Output(skus, false))
strStoreID := utils.Int2Str(storeID) strStoreID := utils.Int2Str(storeID)
rootTask := tasksch.NewParallelTask("mtwm SyncStoreSkus", tasksch.NewParallelConfig().SetBatchSize(200), ctx.GetUserName(), func(rootTask *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { rootTask := tasksch.NewParallelTask("mtwm SyncStoreSkus", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx.GetUserName(), func(rootTask *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
foodDataList := make([]map[string]interface{}, len(batchItemList)) foodDataList := make([]map[string]interface{}, len(batchItemList))
for k, v := range batchItemList { // for k, v := range batchItemList {
v := batchItemList[0]
skuItem := v.(*dao.StoreSkuSyncInfo) skuItem := v.(*dao.StoreSkuSyncInfo)
foodDataList[k] = make(map[string]interface{}) if skuItem.SkuSyncStatus&model.SyncFlagDeletedMask != 0 {
// globals.SugarLogger.Debug(utils.Format4Output(skuItem, false)) err = api.MtwmAPI.RetailDelete(strStoreID, utils.Int2Str(skuItem.ID))
foodDataList[k][mtwmapi.KeyAppFoodCode] = utils.Int2Str(skuItem.ID) } else if skuItem.SkuSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagNewMask) != 0 {
foodDataList[k]["name"] = skuItem.Name foodData := make(map[string]interface{})
foodDataList[k]["description"] = skuItem.Comment foodDataList[0] = foodData
foodDataList[k]["price"] = jxutils.IntPrice2Standard(skuItem.Price) foodData[mtwmapi.KeyAppFoodCode] = utils.Int2Str(skuItem.ID)
foodDataList[k]["min_order_count"] = 1 foodData["name"] = jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 30)
foodDataList[k]["unit"] = skuItem.Unit foodData["description"] = skuItem.Comment
foodDataList[k]["box_num"] = 0 foodData["price"] = jxutils.IntPrice2Standard(skuItem.Price)
foodDataList[k]["box_price"] = 0 foodData["min_order_count"] = 1
foodDataList[k]["category_name"] = skuItem.VendorCatID foodData["unit"] = skuItem.Unit
foodDataList[k]["is_sold_out"] = skuStatusJX2Mtwm(jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus)) foodData["box_num"] = 0
foodDataList[k]["picture"] = skuItem.Img foodData["box_price"] = 0
foodData["category_name"] = skuItem.VendorCatID
foodData["is_sold_out"] = skuStatusJX2Mtwm(jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus))
foodData["picture"] = skuItem.Img
if skuItem.VendorVendorCatID != 0 { if skuItem.VendorVendorCatID != 0 {
foodDataList[k]["tag_id"] = utils.Int64ToStr(skuItem.VendorVendorCatID) foodData["tag_id"] = utils.Int64ToStr(skuItem.VendorVendorCatID)
} else { } else {
foodDataList[k]["tag_id"] = utils.Int64ToStr(defVendorCatID) foodData["tag_id"] = utils.Int64ToStr(defVendorCatID)
} }
foodDataList[k]["skus"] = []map[string]interface{}{ foodData["skus"] = []map[string]interface{}{
map[string]interface{}{ map[string]interface{}{
"sku_id": foodDataList[k][mtwmapi.KeyAppFoodCode], "sku_id": foodData[mtwmapi.KeyAppFoodCode],
"spec": "大", "spec": jxutils.ComposeSkuSpec(skuItem.SpecQuality, skuItem.SpecUnit),
"weight": skuItem.Weight, "weight": skuItem.Weight,
"price": foodDataList[k]["price"], "price": foodData["price"],
"stock": "*", "stock": "*",
}, },
} }
// if err = api.MtwmAPI.RetailInitData(strStoreID, utils.Int2Str(skuItem.ID), foodDataList[k]); err != nil {
// return nil, err
// }
}
// globals.SugarLogger.Debug(utils.Format4Output(foodDataList, false))
err = api.MtwmAPI.RetailBatchInitData(strStoreID, foodDataList) err = api.MtwmAPI.RetailBatchInitData(strStoreID, foodDataList)
}
if err == nil {
storeSkuBind := &model.StoreSkuBind{}
storeSkuBind.ID = skuItem.BindID
_, err = dao.UpdateEntity(nil, storeSkuBind, model.FieldMtwmSyncStatus)
}
return nil, err return nil, err
}, skus) }, skus)
if parentTask != nil { if parentTask != nil {