- fix bug in jxutils.ComposeSkuName
- mtwm SyncStoreSkus almost ok
This commit is contained in:
@@ -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(可缺失)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user