- 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 == "份" {
skuName += "约"
}
if math.Round(float64(spec_quality)) == float64(spec_quality) || (spec_unit != "L" && spec_unit != "kg") {
skuName += fmt.Sprintf("%d", int(spec_quality))
} else {
skuName += fmt.Sprintf("%.2f", spec_quality)
}
skuName += spec_unit
skuName += ComposeSkuSpec(spec_quality, spec_unit)
skuName += "/" + unit
if comment != "" {
skuName += "(" + comment + ")"
}
if maxLen > 0 {
skuName = skuName[:maxLen]
runeList := []rune(skuName)
if len(runeList) > maxLen {
skuName = string(runeList[:maxLen])
}
}
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商品特殊前缀
// 2商品名字
// 3商品说明1可缺失

View File

@@ -5,7 +5,6 @@ import (
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals"
)
type SkuStoreCatInfo struct {
@@ -88,6 +87,7 @@ func GetStoreCategories(db *DaoDB, vendorID, storeID int, level int) (cats []*St
}
type StoreSkuSyncInfo struct {
BindID int `orm:"column(bind_id)"`
Price int64
UnitPrice int64
StoreSkuStatus int
@@ -109,7 +109,7 @@ type StoreSkuSyncInfo struct {
func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*StoreSkuSyncInfo, err error) {
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.*,
t3.prefix, t3.name, t3.unit, t3.img,
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])
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 {
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)
// globals.SugarLogger.Debug(utils.Format4Output(skus, false))
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))
for k, v := range batchItemList {
skuItem := v.(*dao.StoreSkuSyncInfo)
foodDataList[k] = make(map[string]interface{})
// globals.SugarLogger.Debug(utils.Format4Output(skuItem, false))
foodDataList[k][mtwmapi.KeyAppFoodCode] = utils.Int2Str(skuItem.ID)
foodDataList[k]["name"] = skuItem.Name
foodDataList[k]["description"] = skuItem.Comment
foodDataList[k]["price"] = jxutils.IntPrice2Standard(skuItem.Price)
foodDataList[k]["min_order_count"] = 1
foodDataList[k]["unit"] = skuItem.Unit
foodDataList[k]["box_num"] = 0
foodDataList[k]["box_price"] = 0
foodDataList[k]["category_name"] = skuItem.VendorCatID
foodDataList[k]["is_sold_out"] = skuStatusJX2Mtwm(jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus))
foodDataList[k]["picture"] = skuItem.Img
// for k, v := range batchItemList {
v := batchItemList[0]
skuItem := v.(*dao.StoreSkuSyncInfo)
if skuItem.SkuSyncStatus&model.SyncFlagDeletedMask != 0 {
err = api.MtwmAPI.RetailDelete(strStoreID, utils.Int2Str(skuItem.ID))
} else if skuItem.SkuSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagNewMask) != 0 {
foodData := make(map[string]interface{})
foodDataList[0] = foodData
foodData[mtwmapi.KeyAppFoodCode] = utils.Int2Str(skuItem.ID)
foodData["name"] = jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 30)
foodData["description"] = skuItem.Comment
foodData["price"] = jxutils.IntPrice2Standard(skuItem.Price)
foodData["min_order_count"] = 1
foodData["unit"] = skuItem.Unit
foodData["box_num"] = 0
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 {
foodDataList[k]["tag_id"] = utils.Int64ToStr(skuItem.VendorVendorCatID)
foodData["tag_id"] = utils.Int64ToStr(skuItem.VendorVendorCatID)
} 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{}{
"sku_id": foodDataList[k][mtwmapi.KeyAppFoodCode],
"spec": "大",
"sku_id": foodData[mtwmapi.KeyAppFoodCode],
"spec": jxutils.ComposeSkuSpec(skuItem.SpecQuality, skuItem.SpecUnit),
"weight": skuItem.Weight,
"price": foodDataList[k]["price"],
"price": foodData["price"],
"stock": "*",
},
}
// if err = api.MtwmAPI.RetailInitData(strStoreID, utils.Int2Str(skuItem.ID), foodDataList[k]); err != nil {
// return nil, err
// }
err = api.MtwmAPI.RetailBatchInitData(strStoreID, foodDataList)
}
if err == nil {
storeSkuBind := &model.StoreSkuBind{}
storeSkuBind.ID = skuItem.BindID
_, err = dao.UpdateEntity(nil, storeSkuBind, model.FieldMtwmSyncStatus)
}
// globals.SugarLogger.Debug(utils.Format4Output(foodDataList, false))
err = api.MtwmAPI.RetailBatchInitData(strStoreID, foodDataList)
return nil, err
}, skus)
if parentTask != nil {