商品名前缀
This commit is contained in:
@@ -1341,6 +1341,7 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
|
|||||||
var (
|
var (
|
||||||
fromTimeP time.Time
|
fromTimeP time.Time
|
||||||
toTimeP time.Time
|
toTimeP time.Time
|
||||||
|
db = dao.GetDB()
|
||||||
)
|
)
|
||||||
if fromTime != "" {
|
if fromTime != "" {
|
||||||
fromTimeP = utils.Str2Time(fromTime)
|
fromTimeP = utils.Str2Time(fromTime)
|
||||||
@@ -1351,17 +1352,60 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
|
|||||||
if toTimeP.Before(fromTimeP) {
|
if toTimeP.Before(fromTimeP) {
|
||||||
return "", fmt.Errorf("结束时间不可以小于开始时间!开始时间:[%v],结束时间:[%v]", fromTimeP, toTimeP)
|
return "", fmt.Errorf("结束时间不可以小于开始时间!开始时间:[%v],结束时间:[%v]", fromTimeP, toTimeP)
|
||||||
}
|
}
|
||||||
task := tasksch.NewParallelTask("批量设置商品前缀", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
task := tasksch.NewParallelTask("批量设置商品前缀", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
nameID := batchItemList[0].(int)
|
step := batchItemList[0].(int)
|
||||||
payload := map[string]interface{}{
|
switch step {
|
||||||
"exPrefix": exPrefix,
|
case 0:
|
||||||
"exPrefixBegin": fromTimeP,
|
task := tasksch.NewParallelTask("批量设置商品前缀", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
"exPrefixEnd": toTimeP,
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
nameID := batchItemList[0].(int)
|
||||||
|
if (time.Now().Before(toTimeP) && time.Now().After(fromTimeP)) || (time.Now().After(fromTimeP) && time.Now().After(toTimeP)) {
|
||||||
|
payload := map[string]interface{}{
|
||||||
|
"exPrefix": exPrefix,
|
||||||
|
"exPrefixBegin": fromTimeP,
|
||||||
|
"exPrefixEnd": toTimeP,
|
||||||
|
}
|
||||||
|
_, err = UpdateSkuName(ctx, nameID, payload)
|
||||||
|
} else {
|
||||||
|
skuName := &model.SkuName{
|
||||||
|
ExPrefix: exPrefix,
|
||||||
|
ExPrefixBegin: fromTimeP,
|
||||||
|
ExPrefixEnd: toTimeP,
|
||||||
|
}
|
||||||
|
skuName.ID = nameID
|
||||||
|
skuName.LastOperator = ctx.GetLoginID()
|
||||||
|
skuName.UpdatedAt = time.Now()
|
||||||
|
dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
_, err = dao.UpdateEntity(db, skuName, "ExPrefix", "ExPrefixBegin", "ExPrefixEnd", "LastOperator", "UpdatedAt")
|
||||||
|
dao.Commit(db)
|
||||||
|
}
|
||||||
|
return retVal, err
|
||||||
|
}, nameIDs)
|
||||||
|
tasksch.HandleTask(task, nil, true).Run()
|
||||||
|
_, err = task.GetResult(0)
|
||||||
|
case 1:
|
||||||
|
if (time.Now().Before(toTimeP) && time.Now().After(fromTimeP)) || (time.Now().After(fromTimeP) && time.Now().After(toTimeP)) {
|
||||||
|
var skuIDs []int
|
||||||
|
skuList, err2 := dao.GetSkus(db, nil, nameIDs, nil, nil)
|
||||||
|
if err = err2; err == nil {
|
||||||
|
if len(skuList) > 0 {
|
||||||
|
for _, v := range skuList {
|
||||||
|
skuIDs = append(skuIDs, v.ID)
|
||||||
|
}
|
||||||
|
CurVendorSync.SyncStoresSkus2(ctx, db, []int{model.VendorIDEBAI, model.VendorIDMTWM}, nil, false, skuIDs, nil, 0, true, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_, err = UpdateSkuName(ctx, nameID, payload)
|
|
||||||
return retVal, err
|
return retVal, err
|
||||||
}, nameIDs)
|
}, []int{0, 1})
|
||||||
tasksch.HandleTask(task, nil, true).Run()
|
tasksch.HandleTask(task, nil, true).Run()
|
||||||
if !isAsync {
|
if !isAsync {
|
||||||
_, err = task.GetResult(0)
|
_, err = task.GetResult(0)
|
||||||
@@ -1372,8 +1416,8 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
|
|||||||
return hint, err
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetSingleStoreSkuSyncModifyStauts(db *dao.DaoDB, vendorID int) (err error) {
|
func SetSingleStoreSkuSyncModifyStauts(db *dao.DaoDB, vendorIDs []int) (err error) {
|
||||||
_, err = dao.UpdateStoreSkuBindSyncStatusForExPrefix(db, []int{vendorID})
|
_, err = dao.UpdateStoreSkuBindSyncStatusForExPrefix(db, vendorIDs)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -384,6 +384,7 @@ func (v *VendorSync) SyncStoresCategory(ctx *jxcontext.Context, db *dao.DaoDB, v
|
|||||||
func (v *VendorSync) SyncStoresSkus2(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs []int, storeIDs []int, syncDisabled bool, skuIDs, excludeSkuIDs []int, setSyncStatus int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func (v *VendorSync) SyncStoresSkus2(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs []int, storeIDs []int, syncDisabled bool, skuIDs, excludeSkuIDs []int, setSyncStatus int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
globals.SugarLogger.Debug("SyncStoresSkus2")
|
globals.SugarLogger.Debug("SyncStoresSkus2")
|
||||||
isManageIt := len(storeIDs) != 1 || len(skuIDs) == 0 || len(skuIDs) > 8
|
isManageIt := len(storeIDs) != 1 || len(skuIDs) == 0 || len(skuIDs) > 8
|
||||||
|
SetSingleStoreSkuSyncModifyStauts(db, []int{model.VendorIDEBAI, model.VendorIDMTWM})
|
||||||
task, hint, err := v.LoopStoresMap2(ctx, db, fmt.Sprintf("同步门店商品信息:%v", storeIDs), isAsync, isManageIt, vendorIDs, storeIDs,
|
task, hint, err := v.LoopStoresMap2(ctx, db, fmt.Sprintf("同步门店商品信息:%v", storeIDs), isAsync, isManageIt, vendorIDs, storeIDs,
|
||||||
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
loopMapInfo := batchItemList[0].(*LoopStoreMapInfo)
|
loopMapInfo := batchItemList[0].(*LoopStoreMapInfo)
|
||||||
@@ -398,7 +399,6 @@ func (v *VendorSync) SyncStoresSkus2(ctx *jxcontext.Context, db *dao.DaoDB, vend
|
|||||||
storeMap := batchItemList[0].(*model.StoreMap)
|
storeMap := batchItemList[0].(*model.StoreMap)
|
||||||
if syncDisabled || storeMap.Status > model.StoreStatusDisabled {
|
if syncDisabled || storeMap.Status > model.StoreStatusDisabled {
|
||||||
if setSyncStatus != 0 {
|
if setSyncStatus != 0 {
|
||||||
SetSingleStoreSkuSyncModifyStauts(db, storeMap.VendorID)
|
|
||||||
dao.SetStoreSkuSyncStatus(db, storeMap.VendorID, []int{storeMap.StoreID}, skuIDs, setSyncStatus)
|
dao.SetStoreSkuSyncStatus(db, storeMap.VendorID, []int{storeMap.StoreID}, skuIDs, setSyncStatus)
|
||||||
}
|
}
|
||||||
if _, err = v.proxySyncStoreSku(ctx, task, storeMap, nil, skuIDs, excludeSkuIDs, false, isContinueWhenError); err != nil {
|
if _, err = v.proxySyncStoreSku(ctx, task, storeMap, nil, skuIDs, excludeSkuIDs, false, isContinueWhenError); err != nil {
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ func calVendorPrice4StoreSku(inSku *dao.StoreSkuSyncInfo, pricePercentagePack mo
|
|||||||
func formalizeStoreSkuList(inSkuList []*dao.StoreSkuSyncInfo) []*dao.StoreSkuSyncInfo {
|
func formalizeStoreSkuList(inSkuList []*dao.StoreSkuSyncInfo) []*dao.StoreSkuSyncInfo {
|
||||||
for _, skuItem := range inSkuList {
|
for _, skuItem := range inSkuList {
|
||||||
skuItem.MergedStatus = jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus)
|
skuItem.MergedStatus = jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus)
|
||||||
skuItem.SkuName = jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
||||||
}
|
}
|
||||||
return inSkuList
|
return inSkuList
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -329,7 +329,7 @@ func FloatWeight2Int(weight float32) int {
|
|||||||
|
|
||||||
func ComposeSkuName(prefix, name, comment, unit string, spec_quality float32, spec_unit string, maxLen int, exPrefix string, exPrefixBegin, exPrefixEnd time.Time) (skuName string) {
|
func ComposeSkuName(prefix, name, comment, unit string, spec_quality float32, spec_unit string, maxLen int, exPrefix string, exPrefixBegin, exPrefixEnd time.Time) (skuName string) {
|
||||||
if exPrefix != "" && !utils.IsTimeZero(exPrefixBegin) && !utils.IsTimeZero(exPrefixEnd) {
|
if exPrefix != "" && !utils.IsTimeZero(exPrefixBegin) && !utils.IsTimeZero(exPrefixEnd) {
|
||||||
if time.Now().Add(6*time.Hour).After(exPrefixBegin) && time.Now().Add(-6*time.Hour).Before(exPrefixEnd) {
|
if time.Now().After(exPrefixBegin) && time.Now().Before(exPrefixEnd) {
|
||||||
skuName = exPrefix
|
skuName = exPrefix
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -353,6 +353,35 @@ func ComposeSkuName(prefix, name, comment, unit string, spec_quality float32, sp
|
|||||||
return skuName
|
return skuName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ComposeSkuNameSync(prefix, name, comment, unit string, spec_quality float32, spec_unit string, maxLen int, exPrefix string, exPrefixBegin, exPrefixEnd time.Time) (skuName string) {
|
||||||
|
if exPrefix != "" && !utils.IsTimeZero(exPrefixBegin) && !utils.IsTimeZero(exPrefixEnd) {
|
||||||
|
if time.Now().Add(6*time.Hour).After(exPrefixBegin) && time.Now().Before(exPrefixEnd) {
|
||||||
|
skuName = exPrefix
|
||||||
|
}
|
||||||
|
if time.Now().Add(6 * time.Hour).After(exPrefixEnd) {
|
||||||
|
skuName = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if prefix != "" {
|
||||||
|
skuName += "[" + prefix + "]"
|
||||||
|
}
|
||||||
|
skuName += name
|
||||||
|
if unit == "份" {
|
||||||
|
skuName += "约"
|
||||||
|
}
|
||||||
|
if unit != "" {
|
||||||
|
skuName += ComposeSkuSpec(spec_quality, spec_unit)
|
||||||
|
skuName += "/" + unit
|
||||||
|
}
|
||||||
|
if comment != "" {
|
||||||
|
skuName += "(" + comment + ")"
|
||||||
|
}
|
||||||
|
if maxLen > 0 {
|
||||||
|
skuName = utils.LimitUTF8StringLen(skuName, maxLen)
|
||||||
|
}
|
||||||
|
return skuName
|
||||||
|
}
|
||||||
|
|
||||||
func ComposeSpuName(prefix, name string, maxLen int) (spuName string) {
|
func ComposeSpuName(prefix, name string, maxLen int) (spuName string) {
|
||||||
if prefix != "" {
|
if prefix != "" {
|
||||||
spuName = "[" + prefix + "]"
|
spuName = "[" + prefix + "]"
|
||||||
|
|||||||
@@ -946,7 +946,6 @@ func UpdateSkuSyncStatusForExPrefix(db *DaoDB, vendorIDs []int) (num int64, err
|
|||||||
fmtParams := []interface{}{}
|
fmtParams := []interface{}{}
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue,
|
|
||||||
}
|
}
|
||||||
if len(vendorIDs) > 0 {
|
if len(vendorIDs) > 0 {
|
||||||
for _, v := range vendorIDs {
|
for _, v := range vendorIDs {
|
||||||
@@ -965,7 +964,7 @@ func UpdateSkuSyncStatusForExPrefix(db *DaoDB, vendorIDs []int) (num int64, err
|
|||||||
AND (DATE_FORMAT(c.ex_prefix_begin,'%Y-%m-%d') = DATE_FORMAT(DATE_ADD(NOW(),INTERVAL '6' HOUR),'%Y-%m-%d')
|
AND (DATE_FORMAT(c.ex_prefix_begin,'%Y-%m-%d') = DATE_FORMAT(DATE_ADD(NOW(),INTERVAL '6' HOUR),'%Y-%m-%d')
|
||||||
OR DATE_FORMAT(c.ex_prefix_end,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d'))
|
OR DATE_FORMAT(c.ex_prefix_end,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d'))
|
||||||
`
|
`
|
||||||
sqlParams = append(sqlParams, model.StoreSkuBindStatusNormal, utils.DefaultTimeValue)
|
sqlParams = append(sqlParams, utils.DefaultTimeValue)
|
||||||
return ExecuteSQL(db, sql, sqlParams...)
|
return ExecuteSQL(db, sql, sqlParams...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -191,6 +191,9 @@ func (c *SkuController) UpdateSkuName() {
|
|||||||
// dummySkuName := &model.SkuName{}
|
// dummySkuName := &model.SkuName{}
|
||||||
payload := make(map[string]interface{})
|
payload := make(map[string]interface{})
|
||||||
if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil {
|
if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil {
|
||||||
|
delete(payload, "exPrefix")
|
||||||
|
delete(payload, "exPrefixBegin")
|
||||||
|
delete(payload, "exPrefixEnd")
|
||||||
retVal, err = cms.UpdateSkuName(params.Ctx, params.NameID, payload)
|
retVal, err = cms.UpdateSkuName(params.Ctx, params.NameID, payload)
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
|
|||||||
Reference in New Issue
Block a user