Merge remote-tracking branch 'origin/mark' into su
This commit is contained in:
@@ -132,7 +132,7 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
addParams := orm.Params{}
|
addParams := orm.Params{}
|
||||||
if bill.Status >= model.WaybillStatusAccepted && bill.Status < model.WaybillStatusEndBegin {
|
if bill.Status >= model.WaybillStatusAccepted {
|
||||||
if bill.Status == model.WaybillStatusAccepted {
|
if bill.Status == model.WaybillStatusAccepted {
|
||||||
if bill.DesiredFee > 0 {
|
if bill.DesiredFee > 0 {
|
||||||
addParams["desired_fee"] = bill.DesiredFee
|
addParams["desired_fee"] = bill.DesiredFee
|
||||||
@@ -145,8 +145,9 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
|||||||
addParams["courier_name"] = bill.CourierName
|
addParams["courier_name"] = bill.CourierName
|
||||||
addParams["courier_mobile"] = bill.CourierMobile
|
addParams["courier_mobile"] = bill.CourierMobile
|
||||||
}
|
}
|
||||||
} else if bill.Status >= model.WaybillStatusEndBegin {
|
if bill.Status >= model.WaybillStatusEndBegin {
|
||||||
addParams["waybill_finished_at"] = bill.StatusTime
|
addParams["waybill_finished_at"] = bill.StatusTime
|
||||||
|
}
|
||||||
}
|
}
|
||||||
duplicatedCount, err = w.addWaybillStatus(bill, db, addParams)
|
duplicatedCount, err = w.addWaybillStatus(bill, db, addParams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -386,7 +386,7 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod
|
|||||||
if status.Status == model.OrderStatusApplyFailedGetGoods {
|
if status.Status == model.OrderStatusApplyFailedGetGoods {
|
||||||
dao.ClearOrderFlag(dao.GetDB(), model.AdminName, order.VendorOrderID, order.VendorID, ^(model.OrderFlagMaskFailedGetGoods | model.OrderFlagMaskCallPMCourier))
|
dao.ClearOrderFlag(dao.GetDB(), model.AdminName, order.VendorOrderID, order.VendorID, ^(model.OrderFlagMaskFailedGetGoods | model.OrderFlagMaskCallPMCourier))
|
||||||
}
|
}
|
||||||
if statusChanged && status.Status == model.OrderStatusApplyCancel {
|
if status.Status == model.OrderStatusApplyCancel {
|
||||||
s.notifyUserApplyCancel(savedOrderInfo.order, status.Remark)
|
s.notifyUserApplyCancel(savedOrderInfo.order, status.Remark)
|
||||||
}
|
}
|
||||||
msghub.OnKeyOrderStatusChanged(savedOrderInfo.order)
|
msghub.OnKeyOrderStatusChanged(savedOrderInfo.order)
|
||||||
|
|||||||
@@ -119,10 +119,10 @@ func UpdateCategory(ctx *jxcontext.Context, categoryID int, payload map[string]i
|
|||||||
}
|
}
|
||||||
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, cat, valid, userName, nil, model.FieldJdSyncStatus, syncStatus); err == nil {
|
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, cat, valid, userName, nil, model.FieldJdSyncStatus, syncStatus); err == nil {
|
||||||
SetStoreCategorySyncStatus2(db, nil, []int{categoryID}, model.SyncFlagModifiedMask)
|
SetStoreCategorySyncStatus2(db, nil, []int{categoryID}, model.SyncFlagModifiedMask)
|
||||||
|
var skuIDs []int
|
||||||
if valid["jdCategoryID"] != nil || valid["ebaiCategoryID"] != nil || valid["mtwmCategoryID"] != nil ||
|
if valid["jdCategoryID"] != nil || valid["ebaiCategoryID"] != nil || valid["mtwmCategoryID"] != nil ||
|
||||||
valid["jdPricePercentage"] != nil || valid["ebaiPricePercentage"] != nil || valid["mtwmPricePercentage"] != nil {
|
valid["jdPricePercentage"] != nil || valid["ebaiPricePercentage"] != nil || valid["mtwmPricePercentage"] != nil {
|
||||||
if skuList, err2 := dao.GetSkuByCats(db, []int{categoryID}); err2 == nil && len(skuList) > 0 {
|
if skuList, err2 := dao.GetSkuByCats(db, []int{categoryID}); err2 == nil && len(skuList) > 0 {
|
||||||
var skuIDs []int
|
|
||||||
for _, sku := range skuList {
|
for _, sku := range skuList {
|
||||||
skuIDs = append(skuIDs, sku.ID)
|
skuIDs = append(skuIDs, sku.ID)
|
||||||
}
|
}
|
||||||
@@ -157,6 +157,9 @@ func UpdateCategory(ctx *jxcontext.Context, categoryID int, payload map[string]i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
_, err = CurVendorSync.SyncCategory(ctx, db, categoryID, false, userName)
|
_, err = CurVendorSync.SyncCategory(ctx, db, categoryID, false, userName)
|
||||||
|
if len(skuIDs) > 0 {
|
||||||
|
CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, true, true, userName)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return num, err
|
return num, err
|
||||||
|
|||||||
@@ -92,8 +92,8 @@ func (x Store4UserList) Len() int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (x Store4UserList) Less(i, j int) bool {
|
func (x Store4UserList) Less(i, j int) bool {
|
||||||
if x[i].WalkDistance != x[j].Distance {
|
if x[i].WalkDistance != x[j].WalkDistance {
|
||||||
return x[i].WalkDistance < x[j].Distance
|
return x[i].WalkDistance < x[j].WalkDistance
|
||||||
}
|
}
|
||||||
return x[i].Distance < x[j].Distance
|
return x[i].Distance < x[j].Distance
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuI
|
|||||||
|
|
||||||
func (v *VendorSync) SyncSkus(ctx *jxcontext.Context, db *dao.DaoDB, nameIDs []int, skuIDs []int, isAsync, isContinueWhenError bool, userName string) (hint string, err error) {
|
func (v *VendorSync) SyncSkus(ctx *jxcontext.Context, db *dao.DaoDB, nameIDs []int, skuIDs []int, isAsync, isContinueWhenError bool, userName string) (hint string, err error) {
|
||||||
globals.SugarLogger.Debugf("SyncSku trackInfo:%s, nameIDs:%v, skuIDs:%v, userName:%s", ctx.GetTrackInfo(), nameIDs, skuIDs, userName)
|
globals.SugarLogger.Debugf("SyncSku trackInfo:%s, nameIDs:%v, skuIDs:%v, userName:%s", ctx.GetTrackInfo(), nameIDs, skuIDs, userName)
|
||||||
isManagedIt := len(nameIDs) > 1 || len(skuIDs) > 1
|
isManagedIt := len(nameIDs) > 1 || len(nameIDs) == 0 || len(skuIDs) > 1 || len(skuIDs) == 0
|
||||||
return v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("同步商品信息, nameIDs:%v, skuIDs:%v", nameIDs, skuIDs), isAsync, isManagedIt,
|
return v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("同步商品信息, nameIDs:%v, skuIDs:%v", nameIDs, skuIDs), isAsync, isManagedIt,
|
||||||
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
var resultList []interface{}
|
var resultList []interface{}
|
||||||
@@ -248,20 +248,14 @@ func (v *VendorSync) SyncSkus(ctx *jxcontext.Context, db *dao.DaoDB, nameIDs []i
|
|||||||
WHERE t1.%s_sync_status <> 0
|
WHERE t1.%s_sync_status <> 0
|
||||||
`, dbField)
|
`, dbField)
|
||||||
sqlParams := []interface{}{}
|
sqlParams := []interface{}{}
|
||||||
if len(nameIDs) > 1 {
|
if len(nameIDs) > 0 {
|
||||||
sql += " AND t1.name_id IN (" + dao.GenQuestionMarks(len(nameIDs)) + ")"
|
sql += " AND t1.name_id IN (" + dao.GenQuestionMarks(len(nameIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, nameIDs)
|
sqlParams = append(sqlParams, nameIDs)
|
||||||
} else if len(nameIDs) == 1 {
|
|
||||||
sql += " AND t1.name_id = ? "
|
|
||||||
sqlParams = append(sqlParams, nameIDs[0])
|
|
||||||
}
|
}
|
||||||
if len(skuIDs) > 0 {
|
if len(skuIDs) > 0 {
|
||||||
sql += " AND t1.id IN(" + dao.GenQuestionMarks(len(skuIDs)) + ")"
|
sql += " AND t1.id IN(" + dao.GenQuestionMarks(len(skuIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, skuIDs)
|
sqlParams = append(sqlParams, skuIDs)
|
||||||
|
|
||||||
} else if len(skuIDs) == 1 {
|
|
||||||
sql += " AND t1.id = ? "
|
|
||||||
sqlParams = append(sqlParams, skuIDs[0])
|
|
||||||
}
|
}
|
||||||
for _, v := range skuIDs {
|
for _, v := range skuIDs {
|
||||||
skuMap[v] = true
|
skuMap[v] = true
|
||||||
@@ -285,7 +279,7 @@ func (v *VendorSync) SyncSkus(ctx *jxcontext.Context, db *dao.DaoDB, nameIDs []i
|
|||||||
`, dbField), skuName.ID); err == nil && len(skuList) > 0 {
|
`, dbField), skuName.ID); err == nil && len(skuList) > 0 {
|
||||||
for _, sku := range skuList {
|
for _, sku := range skuList {
|
||||||
syncStatus := refutil.GetObjFieldByName(sku, syncStatusFieldName).(int8)
|
syncStatus := refutil.GetObjFieldByName(sku, syncStatusFieldName).(int8)
|
||||||
globals.SugarLogger.Debugf("SyncSku trackInfo:%s, skuID:%d, syncStatus:%d", ctx.GetTrackInfo(), sku.ID, syncStatus)
|
globals.SugarLogger.Debugf("SyncSku trackInfo2:%s, skuID:%d, syncStatus:%d", ctx.GetTrackInfo(), sku.ID, syncStatus)
|
||||||
if (len(skuIDs) == 0 || skuMap[sku.ID]) && (syncStatus != 0) {
|
if (len(skuIDs) == 0 || skuMap[sku.ID]) && (syncStatus != 0) {
|
||||||
updateFields := []string{syncStatusFieldName}
|
updateFields := []string{syncStatusFieldName}
|
||||||
if syncStatus&model.SyncFlagDeletedMask != 0 { // 删除
|
if syncStatus&model.SyncFlagDeletedMask != 0 { // 删除
|
||||||
|
|||||||
@@ -21,6 +21,12 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
AmmendPruneOnlyAmend = 1
|
||||||
|
AmmendPruneOnlyPrune = 2
|
||||||
|
AmmendPruneAll = 3
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
subSensitiveWordRegexp = regexp.MustCompile(`[^\[\]\"\}]`)
|
subSensitiveWordRegexp = regexp.MustCompile(`[^\[\]\"\}]`)
|
||||||
)
|
)
|
||||||
@@ -572,9 +578,20 @@ func checkRemoteCatExist(localCatMap map[string]*dao.SkuStoreCatInfo, catList []
|
|||||||
return cat2Delete
|
return cat2Delete
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fillRemoteCatMap(catList []*partner.BareCategoryInfo, catMap map[string]int) {
|
||||||
|
for _, v := range catList {
|
||||||
|
catMap[v.VendorCatID] = 1
|
||||||
|
fillRemoteCatMap(v.Children, catMap)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 清除京西没有,平台有的商品与商家分类
|
// 清除京西没有,平台有的商品与商家分类
|
||||||
// todo !!!,因为美团外卖分类当前是用的名字关联的,所以改名后如果没有及时同步,这个函数会导致美团平台的分类被误删
|
// todo !!!,因为美团外卖分类当前是用的名字关联的,所以改名后如果没有及时同步,这个函数会导致美团平台的分类被误删
|
||||||
func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
return ammendAndPruneStoreStuff(ctx, parentTask, vendorID, storeID, vendorStoreID, isAsync, isContinueWhenError, AmmendPruneOnlyPrune)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ammendAndPruneStoreStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool, opType int) (hint string, err error) {
|
||||||
handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
|
handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
|
||||||
if handler == nil {
|
if handler == nil {
|
||||||
return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID])
|
return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID])
|
||||||
@@ -583,7 +600,8 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven
|
|||||||
|
|
||||||
var sku2Delete []*partner.StoreSkuInfo
|
var sku2Delete []*partner.StoreSkuInfo
|
||||||
var cat2Delete []*partner.BareCategoryInfo
|
var cat2Delete []*partner.BareCategoryInfo
|
||||||
task := tasksch.NewParallelTask(fmt.Sprintf("清除平台:%s上多余的门店商品", model.VendorChineseNames[vendorID]),
|
var storeSkuBindIDs, storeCatBindIDs []int
|
||||||
|
task := tasksch.NewParallelTask(fmt.Sprintf("修补平台:%s上的门店商品与分类", model.VendorChineseNames[vendorID]),
|
||||||
tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
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) {
|
||||||
step := batchItemList[0].(int)
|
step := batchItemList[0].(int)
|
||||||
@@ -600,7 +618,9 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven
|
|||||||
|
|
||||||
remoteSkuList, err2 := handler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil)
|
remoteSkuList, err2 := handler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
|
remoteSkuMap := make(map[int]int)
|
||||||
for _, v := range remoteSkuList {
|
for _, v := range remoteSkuList {
|
||||||
|
remoteSkuMap[v.SkuList[0].SkuID] = 1
|
||||||
if localSkuMap[v.SkuList[0].SkuID] == nil {
|
if localSkuMap[v.SkuList[0].SkuID] == nil {
|
||||||
sku2Delete = append(sku2Delete, &partner.StoreSkuInfo{
|
sku2Delete = append(sku2Delete, &partner.StoreSkuInfo{
|
||||||
SkuID: v.SkuList[0].SkuID,
|
SkuID: v.SkuList[0].SkuID,
|
||||||
@@ -608,9 +628,24 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, v := range localSkuList {
|
||||||
|
if remoteSkuMap[v.SkuID] == 0 && !model.IsSyncStatusNew(v.StoreSkuSyncStatus) && !model.IsSyncStatusDelete(v.StoreSkuSyncStatus) && v.BindID != 0 {
|
||||||
|
storeSkuBindIDs = append(storeSkuBindIDs, v.BindID)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
if len(sku2Delete) > 0 {
|
if (opType == AmmendPruneOnlyAmend || opType == AmmendPruneAll) && len(storeSkuBindIDs) > 0 {
|
||||||
|
for _, bindID := range storeSkuBindIDs {
|
||||||
|
fieldStatus := dao.GetSyncStatusStructField(model.VendorNames[vendorID])
|
||||||
|
skuBind := &model.StoreSkuBind{}
|
||||||
|
skuBind.ID = bindID
|
||||||
|
dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, skuBind, nil, ctx.GetUserName(), nil, fieldStatus, model.SyncFlagNewMask)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opType == AmmendPruneOnlyPrune || opType == AmmendPruneAll) && len(sku2Delete) > 0 {
|
||||||
_, err = putils.FreeBatchStoreSkuInfo("删除门店商品", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) {
|
_, err = putils.FreeBatchStoreSkuInfo("删除门店商品", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) {
|
||||||
_, err = handler.DeleteStoreSkus(ctx, storeID, vendorStoreID, batchedStoreSkuList)
|
_, err = handler.DeleteStoreSkus(ctx, storeID, vendorStoreID, batchedStoreSkuList)
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
@@ -632,9 +667,26 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven
|
|||||||
remoteCatList, err2 := handler.GetStoreAllCategories(ctx, storeID, vendorStoreID)
|
remoteCatList, err2 := handler.GetStoreAllCategories(ctx, storeID, vendorStoreID)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
cat2Delete = checkRemoteCatExist(localCatMap, remoteCatList)
|
cat2Delete = checkRemoteCatExist(localCatMap, remoteCatList)
|
||||||
|
|
||||||
|
remoteCatMap := make(map[string]int)
|
||||||
|
fillRemoteCatMap(remoteCatList, remoteCatMap)
|
||||||
|
for _, v := range localCatList {
|
||||||
|
if remoteCatMap[v.VendorCatID] == 0 && !model.IsSyncStatusNew(v.StoreCatSyncStatus) && !model.IsSyncStatusDelete(v.StoreCatSyncStatus) && v.MapID != 0 {
|
||||||
|
storeCatBindIDs = append(storeCatBindIDs, v.MapID)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case 3:
|
case 3:
|
||||||
if len(cat2Delete) > 0 {
|
if (opType == AmmendPruneOnlyAmend || opType == AmmendPruneAll) && len(storeCatBindIDs) > 0 {
|
||||||
|
for _, bindID := range storeCatBindIDs {
|
||||||
|
fieldStatus := dao.GetSyncStatusStructField(model.VendorNames[vendorID])
|
||||||
|
catBind := &model.StoreSkuCategoryMap{}
|
||||||
|
catBind.ID = bindID
|
||||||
|
dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, catBind, nil, ctx.GetUserName(), nil, fieldStatus, model.SyncFlagNewMask)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opType == AmmendPruneOnlyPrune || opType == AmmendPruneAll) && len(cat2Delete) > 0 {
|
||||||
for i := 0; i < 2; i++ {
|
for i := 0; i < 2; i++ {
|
||||||
level := 2 - i
|
level := 2 - i
|
||||||
var levelCat2Delete []*partner.BareCategoryInfo
|
var levelCat2Delete []*partner.BareCategoryInfo
|
||||||
@@ -670,55 +722,55 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven
|
|||||||
|
|
||||||
// 把京西有,平台无且没有待创建标记的商品加上待创建标记
|
// 把京西有,平台无且没有待创建标记的商品加上待创建标记
|
||||||
func AddCreateFlagForJxStoreSku(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func AddCreateFlagForJxStoreSku(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
|
return ammendAndPruneStoreStuff(ctx, parentTask, vendorID, storeID, vendorStoreID, isAsync, isContinueWhenError, AmmendPruneOnlyAmend)
|
||||||
if handler == nil {
|
// handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
|
||||||
return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID])
|
// if handler == nil {
|
||||||
}
|
// return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID])
|
||||||
db := dao.GetDB()
|
// }
|
||||||
localSkuList, err := dao.GetStoreSkus2(db, vendorID, storeID, nil, false)
|
// db := dao.GetDB()
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
var storeSkuBindIDs []int
|
// var storeSkuBindIDs []int
|
||||||
seqTaskFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
// seqTaskFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
switch step {
|
// switch step {
|
||||||
case 0:
|
// case 0:
|
||||||
remoteSkuList, err2 := handler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil)
|
// localSkuList, err2 := dao.GetStoreSkus2(db, vendorID, storeID, nil, false)
|
||||||
if err = err2; err == nil {
|
// if err = err2; err != nil {
|
||||||
remoteSkuMap := make(map[int]int)
|
// return nil, err
|
||||||
for _, value := range remoteSkuList {
|
// }
|
||||||
for _, skuInfo := range value.SkuList {
|
// remoteSkuList, err2 := handler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil)
|
||||||
remoteSkuMap[skuInfo.SkuID] = 1
|
// if err = err2; err == nil {
|
||||||
}
|
// remoteSkuMap := make(map[int]int)
|
||||||
}
|
// for _, value := range remoteSkuList {
|
||||||
for _, v := range localSkuList {
|
// for _, skuInfo := range value.SkuList {
|
||||||
if remoteSkuMap[v.SkuID] == 0 && !model.IsSyncStatusNew(v.StoreSkuSyncStatus) && !model.IsSyncStatusDelete(v.StoreSkuSyncStatus) && v.BindID != 0 {
|
// remoteSkuMap[skuInfo.SkuID] = 1
|
||||||
storeSkuBindIDs = append(storeSkuBindIDs, v.BindID)
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// for _, v := range localSkuList {
|
||||||
localSkuList = nil
|
// if remoteSkuMap[v.SkuID] == 0 && !model.IsSyncStatusNew(v.StoreSkuSyncStatus) && !model.IsSyncStatusDelete(v.StoreSkuSyncStatus) && v.BindID != 0 {
|
||||||
}
|
// storeSkuBindIDs = append(storeSkuBindIDs, v.BindID)
|
||||||
case 1:
|
// }
|
||||||
if len(storeSkuBindIDs) > 0 {
|
// }
|
||||||
for _, bindID := range storeSkuBindIDs {
|
// }
|
||||||
fieldStatus := dao.GetSyncStatusStructField(model.VendorNames[vendorID])
|
// case 1:
|
||||||
skuBind := &model.StoreSkuBind{}
|
// if len(storeSkuBindIDs) > 0 {
|
||||||
skuBind.ID = bindID
|
// for _, bindID := range storeSkuBindIDs {
|
||||||
dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, skuBind, nil, ctx.GetUserName(), nil, fieldStatus, model.SyncFlagNewMask)
|
// fieldStatus := dao.GetSyncStatusStructField(model.VendorNames[vendorID])
|
||||||
}
|
// skuBind := &model.StoreSkuBind{}
|
||||||
}
|
// skuBind.ID = bindID
|
||||||
}
|
// dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, skuBind, nil, ctx.GetUserName(), nil, fieldStatus, model.SyncFlagNewMask)
|
||||||
return nil, err
|
// }
|
||||||
}
|
// }
|
||||||
task := tasksch.NewSeqTask(fmt.Sprintf("处理京西门店商品加待创建标记:%s", model.VendorChineseNames[vendorID]), ctx, seqTaskFunc, 2)
|
// }
|
||||||
tasksch.HandleTask(task, parentTask, true).Run()
|
// return nil, err
|
||||||
if isAsync {
|
// }
|
||||||
hint = task.GetID()
|
// task := tasksch.NewSeqTask(fmt.Sprintf("处理京西门店商品加待创建标记:%s", model.VendorChineseNames[vendorID]), ctx, seqTaskFunc, 2)
|
||||||
} else {
|
// tasksch.HandleTask(task, parentTask, true).Run()
|
||||||
_, err = task.GetResult(0)
|
// if isAsync {
|
||||||
}
|
// hint = task.GetID()
|
||||||
return hint, err
|
// } else {
|
||||||
|
// _, err = task.GetResult(0)
|
||||||
|
// }
|
||||||
|
// return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func ClearRemoteStoreStuffAndSetNew(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func ClearRemoteStoreStuffAndSetNew(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ type StoreWithCityName struct {
|
|||||||
type UserDeliveryAddressEx struct {
|
type UserDeliveryAddressEx struct {
|
||||||
model.UserDeliveryAddress
|
model.UserDeliveryAddress
|
||||||
|
|
||||||
UserName string
|
UserName string `json:"userName"`
|
||||||
CityName string
|
CityName string `json:"cityName"`
|
||||||
DistrictName string
|
DistrictName string `json:"districtName"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUserByID(db *DaoDB, fieldName, fieldValue string) (user *model.User, err error) {
|
func GetUserByID(db *DaoDB, fieldName, fieldValue string) (user *model.User, err error) {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ func (c *PurchaseHandler) onWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (re
|
|||||||
switch msg.DeliveryStatus {
|
switch msg.DeliveryStatus {
|
||||||
case jdapi.DeliveryStatusWait4Grap:
|
case jdapi.DeliveryStatusWait4Grap:
|
||||||
order.Status = model.WaybillStatusNew
|
order.Status = model.WaybillStatusNew
|
||||||
case jdapi.DeliveryStatusAccepted:
|
case jdapi.DeliveryStatusAccepted, jdapi.DeliveryStatusCourierChaged: // 将更换配送员也当成接单消息
|
||||||
// todo 性能问题,暂时取消调用
|
// todo 性能问题,暂时取消调用
|
||||||
// if result, err := getAPI("").QuerySingleOrder(msg.OrderID); err == nil {
|
// if result, err := getAPI("").QuerySingleOrder(msg.OrderID); err == nil {
|
||||||
// // 默认配送费=订单应付运费(orderReceivableFreight)
|
// // 默认配送费=订单应付运费(orderReceivableFreight)
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
mergedStoreStatus := jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus)
|
mergedStoreStatus := jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus)
|
||||||
openLevel, isOnline := bizStatusJX2Mtwm(mergedStoreStatus)
|
// openLevel, isOnline := bizStatusJX2Mtwm(mergedStoreStatus)
|
||||||
params := map[string]interface{}{
|
params := map[string]interface{}{
|
||||||
"name": remoteStoreInfo.Name, //jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM),
|
"name": remoteStoreInfo.Name, //jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM),
|
||||||
"address": storeDetail.Address, // 美团好像地址也不能改的?
|
"address": storeDetail.Address, // 美团好像地址也不能改的?
|
||||||
@@ -122,25 +122,28 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
|
|||||||
"phone": storeDetail.Tel1,
|
"phone": storeDetail.Tel1,
|
||||||
"shipping_fee": remoteStoreInfo.ShippingFee,
|
"shipping_fee": remoteStoreInfo.ShippingFee,
|
||||||
"shipping_time": remoteStoreInfo.ShippingTime,
|
"shipping_time": remoteStoreInfo.ShippingTime,
|
||||||
"open_level": openLevel,
|
"open_level": remoteStoreInfo.OpenLevel,
|
||||||
"is_online": isOnline,
|
"is_online": remoteStoreInfo.IsOnline,
|
||||||
"third_tag_name": remoteStoreInfo.ThirdTagName,
|
"third_tag_name": remoteStoreInfo.ThirdTagName,
|
||||||
}
|
}
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
|
||||||
if globals.EnableMtwmStoreWrite {
|
if globals.EnableMtwmStoreWrite {
|
||||||
err = api.MtwmAPI.PoiSave(storeDetail.VendorStoreID, params)
|
errList.AddErr(api.MtwmAPI.PoiSave(storeDetail.VendorStoreID, params))
|
||||||
}
|
}
|
||||||
// PoiSave有时会报错:商家已接入美团配送,不可修改门店配送相关信息,这里放弃信息修改
|
// PoiSave有时会报错:商家已接入美团配送,不可修改门店配送相关信息,这里放弃信息修改
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
if utils.IsErrMatch(err, utils.Int2Str(mtwmapi.ErrCodeCanNotModifyStoreDeliveryInfo), nil) {
|
// if utils.IsErrMatch(err, utils.Int2Str(mtwmapi.ErrCodeCanNotModifyStoreDeliveryInfo), nil) {
|
||||||
globals.SugarLogger.Infof("mtwm UpdateStore vendorStoreID:%s, params:%s failed with err:%v", storeDetail.VendorStoreID, utils.Format4Output(params, true), err)
|
// globals.SugarLogger.Infof("mtwm UpdateStore vendorStoreID:%s, params:%s failed with err:%v", storeDetail.VendorStoreID, utils.Format4Output(params, true), err)
|
||||||
if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
// if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
||||||
err = p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, mergedStoreStatus)
|
// err = p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, mergedStoreStatus)
|
||||||
} else {
|
// } else {
|
||||||
err = nil
|
// err = nil
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
errList.AddErr(err)
|
// errList.AddErr(err)
|
||||||
|
// }
|
||||||
|
if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
||||||
|
errList.AddErr(p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, mergedStoreStatus))
|
||||||
}
|
}
|
||||||
errList.AddErr(p.UpdateStoreOpTime(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, storeDetail.GetOpTimeList()))
|
errList.AddErr(p.UpdateStoreOpTime(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, storeDetail.GetOpTimeList()))
|
||||||
return errList.GetErrListAsOne()
|
return errList.GetErrListAsOne()
|
||||||
|
|||||||
@@ -152,8 +152,8 @@ func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
storeCat.VendorCatID = utils.FilterEmoji(storeCat.Name)
|
// storeCat.VendorCatID = utils.FilterEmoji(storeCat.Name)
|
||||||
// storeCat.VendorCatID = utils.Int2Str(storeCat.ID)
|
storeCat.VendorCatID = utils.Int2Str(storeCat.ID)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -300,13 +300,12 @@ func (c *User2Controller) DeleteMyDeliveryAddress() {
|
|||||||
// @Param lat formData float64 false "纬度"
|
// @Param lat formData float64 false "纬度"
|
||||||
// @Param tag formData string false "标签"
|
// @Param tag formData string false "标签"
|
||||||
// @Param remark formData string false "备注"
|
// @Param remark formData string false "备注"
|
||||||
// @Param isDefault formData bool false "是否是默认"
|
// @Param isDefault formData int false "是否是默认(0:否,1:是)"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
// @router /UpdateMyDeliveryAddress [put]
|
// @router /UpdateMyDeliveryAddress [put]
|
||||||
func (c *User2Controller) UpdateMyDeliveryAddress() {
|
func (c *User2Controller) UpdateMyDeliveryAddress() {
|
||||||
c.callUpdateMyDeliveryAddress(func(params *tUser2UpdateMyDeliveryAddressParams) (retVal interface{}, errCode string, err error) {
|
c.callUpdateMyDeliveryAddress(func(params *tUser2UpdateMyDeliveryAddressParams) (retVal interface{}, errCode string, err error) {
|
||||||
params.MapData["isDefault"] = utils.Bool2Int(params.IsDefault)
|
|
||||||
err = cms.UpdateMyDeliveryAddress(params.Ctx, params.AddressID, params.MapData)
|
err = cms.UpdateMyDeliveryAddress(params.Ctx, params.AddressID, params.MapData)
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user