- refactor jxcontent and tasksch (remove dependency from jxcontent to tasksch)
- send dingding msg to user when async task finished
This commit is contained in:
@@ -138,11 +138,12 @@ func Convert2JDSPU(ctx *jxcontext.Context, count int, isAsync, isContinueWhenErr
|
||||
if err = dao.GetRows(db, &skuNameList, sql, utils.DefaultTimeValue); err != nil {
|
||||
return "", err
|
||||
}
|
||||
rootTask := tasksch.NewParallelTask("Convert2JDSPU", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
skuName := batchItemList[0].(*model.SkuName)
|
||||
_, err = cms.CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, isContinueWhenError, ctx.GetUserName())
|
||||
return nil, err
|
||||
}, skuNameList)
|
||||
rootTask := tasksch.NewParallelTask("Convert2JDSPU", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
skuName := batchItemList[0].(*model.SkuName)
|
||||
_, err = cms.CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, isContinueWhenError, ctx.GetUserName())
|
||||
return nil, err
|
||||
}, skuNameList)
|
||||
tasksch.ManageTask(rootTask).Run()
|
||||
|
||||
if !isAsync {
|
||||
@@ -283,8 +284,9 @@ func Change2JDSPU4Store(ctx *jxcontext.Context, storeIDs []int, step int, isAsyn
|
||||
|
||||
func TransferLegacyJdOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
sqlBatchCount := 1000
|
||||
rootTask := tasksch.NewSeqTask("TransferLegacyJdOrder", ctx.GetUserName(), func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
sql := `
|
||||
rootTask := tasksch.NewSeqTask("TransferLegacyJdOrder", ctx,
|
||||
func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
sql := `
|
||||
SELECT t1.*
|
||||
FROM jdorder t1
|
||||
LEFT JOIN goods_order_original t2 ON t2.vendor_order_id = t1.vendor_order_id
|
||||
@@ -292,58 +294,59 @@ func TransferLegacyJdOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError
|
||||
ORDER BY t1.orderstatustime
|
||||
LIMIT ?
|
||||
`
|
||||
db := dao.GetDB()
|
||||
var jdOrderList []*legacymodel2.Jdorder
|
||||
if err = dao.GetRows(db, &jdOrderList, sql, sqlBatchCount); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(jdOrderList) > 0 {
|
||||
task := tasksch.NewParallelTask("TransferLegacyJdOrder2", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetBatchSize(40), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
var orderDetailList []*model.GoodsOrderOriginal
|
||||
for _, v := range batchItemList {
|
||||
jdOrder := v.(*legacymodel2.Jdorder)
|
||||
var detail map[string]interface{}
|
||||
if err = utils.UnmarshalUseNumber([]byte(strings.Replace(strings.Replace(jdOrder.Data, "\n", "", -1), "\r", "", -1)), &detail); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resultList := detail["result"].(map[string]interface{})["resultList"].([]interface{})
|
||||
if len(resultList) > 0 {
|
||||
originalData := resultList[0].(map[string]interface{})
|
||||
orgCode := originalData["orgCode"].(string)
|
||||
if orgCode == "320406" {
|
||||
orderPurchaseTime := utils.Interface2String(originalData["orderPurchaseTime"])
|
||||
if orderPurchaseTime == "" {
|
||||
globals.SugarLogger.Debugf("TransferLegacyJdOrder abnormal order:%s", jdOrder.VendorOrderID)
|
||||
orderPurchaseTime = utils.Interface2String(originalData["orderStartTime"])
|
||||
db := dao.GetDB()
|
||||
var jdOrderList []*legacymodel2.Jdorder
|
||||
if err = dao.GetRows(db, &jdOrderList, sql, sqlBatchCount); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(jdOrderList) > 0 {
|
||||
task := tasksch.NewParallelTask("TransferLegacyJdOrder2", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetBatchSize(40), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
var orderDetailList []*model.GoodsOrderOriginal
|
||||
for _, v := range batchItemList {
|
||||
jdOrder := v.(*legacymodel2.Jdorder)
|
||||
var detail map[string]interface{}
|
||||
if err = utils.UnmarshalUseNumber([]byte(strings.Replace(strings.Replace(jdOrder.Data, "\n", "", -1), "\r", "", -1)), &detail); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if orderPurchaseTime != "" {
|
||||
orderDetail := &model.GoodsOrderOriginal{
|
||||
VendorOrderID: jdOrder.VendorOrderID,
|
||||
VendorID: model.VendorIDJD,
|
||||
AccountNo: orgCode,
|
||||
OrderCreatedAt: utils.Str2Time(orderPurchaseTime),
|
||||
OriginalData: string(utils.MustMarshal(originalData)),
|
||||
resultList := detail["result"].(map[string]interface{})["resultList"].([]interface{})
|
||||
if len(resultList) > 0 {
|
||||
originalData := resultList[0].(map[string]interface{})
|
||||
orgCode := originalData["orgCode"].(string)
|
||||
if orgCode == "320406" {
|
||||
orderPurchaseTime := utils.Interface2String(originalData["orderPurchaseTime"])
|
||||
if orderPurchaseTime == "" {
|
||||
globals.SugarLogger.Debugf("TransferLegacyJdOrder abnormal order:%s", jdOrder.VendorOrderID)
|
||||
orderPurchaseTime = utils.Interface2String(originalData["orderStartTime"])
|
||||
}
|
||||
if orderPurchaseTime != "" {
|
||||
orderDetail := &model.GoodsOrderOriginal{
|
||||
VendorOrderID: jdOrder.VendorOrderID,
|
||||
VendorID: model.VendorIDJD,
|
||||
AccountNo: orgCode,
|
||||
OrderCreatedAt: utils.Str2Time(orderPurchaseTime),
|
||||
OriginalData: string(utils.MustMarshal(originalData)),
|
||||
}
|
||||
orderDetailList = append(orderDetailList, orderDetail)
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("TransferLegacyJdOrder abnormal2 order:%s", jdOrder.VendorOrderID)
|
||||
}
|
||||
}
|
||||
orderDetailList = append(orderDetailList, orderDetail)
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("TransferLegacyJdOrder abnormal2 order:%s", jdOrder.VendorOrderID)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(orderDetailList) > 0 {
|
||||
err = dao.CreateMultiEntities(db, orderDetailList)
|
||||
}
|
||||
return nil, err
|
||||
}, jdOrderList)
|
||||
// rootTask.AddChild(task).Run()
|
||||
task.Run()
|
||||
_, err = task.GetResult(0)
|
||||
} else {
|
||||
rootTask.Cancel()
|
||||
}
|
||||
return nil, err
|
||||
}, math.MaxInt32)
|
||||
if len(orderDetailList) > 0 {
|
||||
err = dao.CreateMultiEntities(db, orderDetailList)
|
||||
}
|
||||
return nil, err
|
||||
}, jdOrderList)
|
||||
// rootTask.AddChild(task).Run()
|
||||
task.Run()
|
||||
_, err = task.GetResult(0)
|
||||
} else {
|
||||
rootTask.Cancel()
|
||||
}
|
||||
return nil, err
|
||||
}, math.MaxInt32)
|
||||
tasksch.ManageTask(rootTask).Run()
|
||||
if !isAsync {
|
||||
_, err = rootTask.GetResult(0)
|
||||
@@ -484,38 +487,39 @@ func PullJdOrder(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, is
|
||||
gapList[k] = k
|
||||
|
||||
}
|
||||
rootTask := tasksch.NewParallelTask("PullJdOrder", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(20), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
gapIndex := batchItemList[0].(int)
|
||||
hourIndex := gapIndex * hourGap
|
||||
subFromTime := fromTime.Add(time.Duration(hourIndex) * time.Hour)
|
||||
subToTime := fromTime.Add(time.Duration(hourIndex+hourGap) * time.Hour)
|
||||
if subToTime.Sub(toTime) > 0 {
|
||||
subToTime = toTime
|
||||
}
|
||||
if true { //gapIndex < gapCount-1 {
|
||||
subToTime = subToTime.Add(-1 * time.Second) // 减一秒
|
||||
}
|
||||
commonParams := map[string]interface{}{
|
||||
jdapi.KeyPageSize: pageSize,
|
||||
"orderPurchaseTime_begin": utils.Time2Str(subFromTime),
|
||||
"orderPurchaseTime_end": utils.Time2Str(subToTime),
|
||||
}
|
||||
// globals.SugarLogger.Debugf("PullJdOrder, commonParams=%s", utils.Format4Output(commonParams, false))
|
||||
orderList, totalCount, err := api.JdAPI.OrderQuery(commonParams)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
storeOrderList, err := api.JdAPI.GetStoreOrderInfoList(utils.Time2Str(subFromTime), utils.Time2Str(subToTime))
|
||||
if err != nil {
|
||||
}
|
||||
if err = saveJdOrderList(existJdIDMap, orderList, storeOrderList); err != nil {
|
||||
return "", err
|
||||
}
|
||||
if false {
|
||||
globals.SugarLogger.Debugf("subFromTime:%s, subToTime:%s, totalCount:%d, len(orderList):%d", utils.Time2Str(subFromTime), utils.Time2Str(subToTime), totalCount, len(orderList))
|
||||
}
|
||||
return nil, err
|
||||
}, gapList)
|
||||
rootTask := tasksch.NewParallelTask("PullJdOrder", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(20), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
gapIndex := batchItemList[0].(int)
|
||||
hourIndex := gapIndex * hourGap
|
||||
subFromTime := fromTime.Add(time.Duration(hourIndex) * time.Hour)
|
||||
subToTime := fromTime.Add(time.Duration(hourIndex+hourGap) * time.Hour)
|
||||
if subToTime.Sub(toTime) > 0 {
|
||||
subToTime = toTime
|
||||
}
|
||||
if true { //gapIndex < gapCount-1 {
|
||||
subToTime = subToTime.Add(-1 * time.Second) // 减一秒
|
||||
}
|
||||
commonParams := map[string]interface{}{
|
||||
jdapi.KeyPageSize: pageSize,
|
||||
"orderPurchaseTime_begin": utils.Time2Str(subFromTime),
|
||||
"orderPurchaseTime_end": utils.Time2Str(subToTime),
|
||||
}
|
||||
// globals.SugarLogger.Debugf("PullJdOrder, commonParams=%s", utils.Format4Output(commonParams, false))
|
||||
orderList, totalCount, err := api.JdAPI.OrderQuery(commonParams)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
storeOrderList, err := api.JdAPI.GetStoreOrderInfoList(utils.Time2Str(subFromTime), utils.Time2Str(subToTime))
|
||||
if err != nil {
|
||||
}
|
||||
if err = saveJdOrderList(existJdIDMap, orderList, storeOrderList); err != nil {
|
||||
return "", err
|
||||
}
|
||||
if false {
|
||||
globals.SugarLogger.Debugf("subFromTime:%s, subToTime:%s, totalCount:%d, len(orderList):%d", utils.Time2Str(subFromTime), utils.Time2Str(subToTime), totalCount, len(orderList))
|
||||
}
|
||||
return nil, err
|
||||
}, gapList)
|
||||
tasksch.ManageTask(rootTask).Run()
|
||||
|
||||
if !isAsync {
|
||||
@@ -562,17 +566,18 @@ func DeleteWrongSpu(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (
|
||||
if err = dao.GetRows(db, &skuNameList, sql, utils.DefaultTimeValue); err != nil {
|
||||
return "", err
|
||||
}
|
||||
rootTask := tasksch.NewSeqTask("DeleteWrongSpu", ctx.GetUserName(), func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
mapData := map[string]interface{}{
|
||||
"name": skuNameList[step].Name,
|
||||
}
|
||||
_, err = cms.UpdateSkuName(ctx, skuNameList[step].ID, mapData, ctx.GetUserName())
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("DeleteWrongSpu failed nameid:%d, name:%s, with error:%v", skuNameList[step].ID, skuNameList[step].Name, err)
|
||||
err = nil // 强制忽略错误
|
||||
}
|
||||
return nil, err
|
||||
}, len(skuNameList))
|
||||
rootTask := tasksch.NewSeqTask("DeleteWrongSpu", ctx,
|
||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
mapData := map[string]interface{}{
|
||||
"name": skuNameList[step].Name,
|
||||
}
|
||||
_, err = cms.UpdateSkuName(ctx, skuNameList[step].ID, mapData, ctx.GetUserName())
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("DeleteWrongSpu failed nameid:%d, name:%s, with error:%v", skuNameList[step].ID, skuNameList[step].Name, err)
|
||||
err = nil // 强制忽略错误
|
||||
}
|
||||
return nil, err
|
||||
}, len(skuNameList))
|
||||
|
||||
tasksch.ManageTask(rootTask).Run()
|
||||
if !isAsync {
|
||||
@@ -590,8 +595,9 @@ type GoodsOrderOriginalEx struct {
|
||||
|
||||
func CreateOrderFromOriginal(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
sqlBatchCount := 5000
|
||||
rootTask := tasksch.NewSeqTask("CreateOrderFromOriginal", ctx.GetUserName(), func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
sql := `
|
||||
rootTask := tasksch.NewSeqTask("CreateOrderFromOriginal", ctx,
|
||||
func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
sql := `
|
||||
SELECT t1.*, t3.order_status
|
||||
FROM goods_order_original t1
|
||||
LEFT JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id
|
||||
@@ -599,58 +605,59 @@ func CreateOrderFromOriginal(ctx *jxcontext.Context, isAsync, isContinueWhenErro
|
||||
WHERE t2.id IS NULL
|
||||
LIMIT ?;
|
||||
`
|
||||
rawDB := orm.NewOrm()
|
||||
db := dao.WrapDB(rawDB)
|
||||
var orderList []*GoodsOrderOriginalEx
|
||||
if err = dao.GetRows(db, &orderList, sql, sqlBatchCount); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(orderList) > 0 {
|
||||
task := tasksch.NewParallelTask("CreateOrderFromOriginal", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(1), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
orderOriginal := batchItemList[0].(*GoodsOrderOriginalEx)
|
||||
globals.SugarLogger.Debugf("CreateOrderFromOriginal processing orderID:%s", orderOriginal.VendorOrderID)
|
||||
if handler := partner.GetPurchasePlatformFromVendorID(orderOriginal.VendorID); handler != nil {
|
||||
var detail map[string]interface{}
|
||||
if err = utils.UnmarshalUseNumber([]byte(strings.Replace(strings.Replace(orderOriginal.OriginalData, "\n", "", -1), "\r", "", -1)), &detail); err != nil {
|
||||
globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s, error:%v", orderOriginal.VendorOrderID, err)
|
||||
return nil, err
|
||||
}
|
||||
order := handler.Map2Order(detail)
|
||||
if order.Status < model.OrderStatusEndBegin {
|
||||
if orderOriginal.OrderStatus == 3 {
|
||||
order.Status = model.OrderStatusFinished
|
||||
} else if orderOriginal.OrderStatus == 7 {
|
||||
order.Status = model.OrderStatusCanceled
|
||||
} else {
|
||||
order2, err2 := handler.GetOrder(order.VendorOrderID)
|
||||
if err = err2; err == nil {
|
||||
order.Status = order2.Status
|
||||
} else {
|
||||
err = nil // ignore get status error
|
||||
}
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
rawDB := orm.NewOrm()
|
||||
if _, err = orderman.FixedOrderManager.SaveOrder(order, false, rawDB); err != nil {
|
||||
globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s, error:%v", orderOriginal.VendorOrderID, err)
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s, error:%v", orderOriginal.VendorOrderID, err)
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s", orderOriginal.VendorOrderID)
|
||||
}
|
||||
rawDB := orm.NewOrm()
|
||||
db := dao.WrapDB(rawDB)
|
||||
var orderList []*GoodsOrderOriginalEx
|
||||
if err = dao.GetRows(db, &orderList, sql, sqlBatchCount); err != nil {
|
||||
return nil, err
|
||||
}, orderList)
|
||||
// rootTask.AddChild(task).Run()
|
||||
task.Run()
|
||||
_, err = task.GetResult(0)
|
||||
} else {
|
||||
rootTask.Cancel()
|
||||
}
|
||||
return nil, err
|
||||
}, math.MaxInt32)
|
||||
}
|
||||
if len(orderList) > 0 {
|
||||
task := tasksch.NewParallelTask("CreateOrderFromOriginal", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(1), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
orderOriginal := batchItemList[0].(*GoodsOrderOriginalEx)
|
||||
globals.SugarLogger.Debugf("CreateOrderFromOriginal processing orderID:%s", orderOriginal.VendorOrderID)
|
||||
if handler := partner.GetPurchasePlatformFromVendorID(orderOriginal.VendorID); handler != nil {
|
||||
var detail map[string]interface{}
|
||||
if err = utils.UnmarshalUseNumber([]byte(strings.Replace(strings.Replace(orderOriginal.OriginalData, "\n", "", -1), "\r", "", -1)), &detail); err != nil {
|
||||
globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s, error:%v", orderOriginal.VendorOrderID, err)
|
||||
return nil, err
|
||||
}
|
||||
order := handler.Map2Order(detail)
|
||||
if order.Status < model.OrderStatusEndBegin {
|
||||
if orderOriginal.OrderStatus == 3 {
|
||||
order.Status = model.OrderStatusFinished
|
||||
} else if orderOriginal.OrderStatus == 7 {
|
||||
order.Status = model.OrderStatusCanceled
|
||||
} else {
|
||||
order2, err2 := handler.GetOrder(order.VendorOrderID)
|
||||
if err = err2; err == nil {
|
||||
order.Status = order2.Status
|
||||
} else {
|
||||
err = nil // ignore get status error
|
||||
}
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
rawDB := orm.NewOrm()
|
||||
if _, err = orderman.FixedOrderManager.SaveOrder(order, false, rawDB); err != nil {
|
||||
globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s, error:%v", orderOriginal.VendorOrderID, err)
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s, error:%v", orderOriginal.VendorOrderID, err)
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s", orderOriginal.VendorOrderID)
|
||||
}
|
||||
return nil, err
|
||||
}, orderList)
|
||||
// rootTask.AddChild(task).Run()
|
||||
task.Run()
|
||||
_, err = task.GetResult(0)
|
||||
} else {
|
||||
rootTask.Cancel()
|
||||
}
|
||||
return nil, err
|
||||
}, math.MaxInt32)
|
||||
tasksch.ManageTask(rootTask).Run()
|
||||
if !isAsync {
|
||||
_, err = rootTask.GetResult(0)
|
||||
@@ -688,91 +695,93 @@ func TransformJdSpu2Sku(ctx *jxcontext.Context, skuNameIDs []int, count int, isA
|
||||
return "", fmt.Errorf("待转换的skuName为空")
|
||||
}
|
||||
batchSize := 40
|
||||
rootTask := tasksch.NewSeqTask("TransformJdSpu2Sku", ctx.GetUserName(), func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
var (
|
||||
locker sync.Mutex
|
||||
skuIDs []int
|
||||
)
|
||||
lastIndex := (step + 1) * batchSize
|
||||
if lastIndex > len(skuNameList) {
|
||||
lastIndex = len(skuNameList)
|
||||
}
|
||||
batchSkNameList := skuNameList[step*batchSize : lastIndex]
|
||||
subTask := tasksch.NewParallelTask(fmt.Sprintf("TransformJdSpu2Sku:%d", step), tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx.GetUserName(), func(subTask *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
skuName := batchItemList[0].(*model.SkuName)
|
||||
if !jxutils.IsFakeID(skuName.JdID) {
|
||||
sql = `
|
||||
rootTask := tasksch.NewSeqTask("TransformJdSpu2Sku", ctx,
|
||||
func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
var (
|
||||
locker sync.Mutex
|
||||
skuIDs []int
|
||||
)
|
||||
lastIndex := (step + 1) * batchSize
|
||||
if lastIndex > len(skuNameList) {
|
||||
lastIndex = len(skuNameList)
|
||||
}
|
||||
batchSkNameList := skuNameList[step*batchSize : lastIndex]
|
||||
subTask := tasksch.NewParallelTask(fmt.Sprintf("TransformJdSpu2Sku:%d", step), tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
func(subTask *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
skuName := batchItemList[0].(*model.SkuName)
|
||||
if !jxutils.IsFakeID(skuName.JdID) {
|
||||
sql = `
|
||||
SELECT *
|
||||
FROM sku
|
||||
WHERE name_id = ? AND deleted_at = ? AND status <> ?;
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
skuName.ID,
|
||||
utils.DefaultTimeValue,
|
||||
model.SkuStatusDeleted,
|
||||
}
|
||||
var skuList []*model.Sku
|
||||
if err = dao.GetRows(db, &skuList, sql, sqlParams...); err != nil {
|
||||
return "", err
|
||||
}
|
||||
globals.SugarLogger.Debugf("TransformJdSpu2Sku skuList:%s", utils.Format4Output(skuList, false))
|
||||
if len(skuList) > 0 {
|
||||
for _, sku := range skuList {
|
||||
locker.Lock()
|
||||
skuIDs = append(skuIDs, sku.ID)
|
||||
locker.Unlock()
|
||||
if !jxutils.IsFakeID(sku.JdID) {
|
||||
if globals.EnableStoreWrite {
|
||||
if err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuName.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted)); err != nil {
|
||||
break
|
||||
sqlParams := []interface{}{
|
||||
skuName.ID,
|
||||
utils.DefaultTimeValue,
|
||||
model.SkuStatusDeleted,
|
||||
}
|
||||
var skuList []*model.Sku
|
||||
if err = dao.GetRows(db, &skuList, sql, sqlParams...); err != nil {
|
||||
return "", err
|
||||
}
|
||||
globals.SugarLogger.Debugf("TransformJdSpu2Sku skuList:%s", utils.Format4Output(skuList, false))
|
||||
if len(skuList) > 0 {
|
||||
for _, sku := range skuList {
|
||||
locker.Lock()
|
||||
skuIDs = append(skuIDs, sku.ID)
|
||||
locker.Unlock()
|
||||
if !jxutils.IsFakeID(sku.JdID) {
|
||||
if globals.EnableStoreWrite {
|
||||
if err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuName.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted)); err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if err == nil && globals.EnableStoreWrite {
|
||||
if err = api.JdAPI.UpdateSpu(utils.Int2Str(skuName.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusOffline)); err == nil {
|
||||
err = api.JdAPI.UpdateSpu(utils.Int2Str(skuName.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
skuName.IsSpu = 0
|
||||
skuName.JdID = 0
|
||||
if _, err = dao.UpdateEntity(db, skuName, "IsSpu", "JdID"); err == nil {
|
||||
sql := `
|
||||
if err == nil && globals.EnableStoreWrite {
|
||||
if err = api.JdAPI.UpdateSpu(utils.Int2Str(skuName.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusOffline)); err == nil {
|
||||
err = api.JdAPI.UpdateSpu(utils.Int2Str(skuName.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
skuName.IsSpu = 0
|
||||
skuName.JdID = 0
|
||||
if _, err = dao.UpdateEntity(db, skuName, "IsSpu", "JdID"); err == nil {
|
||||
sql := `
|
||||
UPDATE sku t1
|
||||
SET
|
||||
t1.jd_sync_status = ?,
|
||||
t1.jd_id = 0
|
||||
WHERE t1.name_id = ? AND t1.deleted_at = ? AND t1.status <> ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
model.SyncFlagNewMask,
|
||||
skuName.ID,
|
||||
utils.DefaultTimeValue,
|
||||
model.SkuStatusDeleted,
|
||||
}
|
||||
if _, err = dao.ExecuteSQL(db, sql, sqlParams...); err == nil {
|
||||
_, err = cms.CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, isContinueWhenError, ctx.GetUserName())
|
||||
sqlParams := []interface{}{
|
||||
model.SyncFlagNewMask,
|
||||
skuName.ID,
|
||||
utils.DefaultTimeValue,
|
||||
model.SkuStatusDeleted,
|
||||
}
|
||||
if _, err = dao.ExecuteSQL(db, sql, sqlParams...); err == nil {
|
||||
_, err = cms.CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, isContinueWhenError, ctx.GetUserName())
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("TransformJdSpu2Sku skuName:%d is fake", skuName.ID)
|
||||
}
|
||||
return nil, err
|
||||
}, batchSkNameList)
|
||||
rootTask.AddChild(subTask).Run()
|
||||
if _, err = subTask.GetResult(0); err == nil {
|
||||
if len(skuIDs) > 0 {
|
||||
if _, err = dao.SetStoreSkuSyncStatus(db, model.VendorIDJD, -1, skuIDs, model.SyncFlagModifiedMask|model.SyncFlagPriceMask|model.SyncFlagSaleMask); err == nil {
|
||||
time.Sleep(20 * time.Second)
|
||||
_, err = cms.CurVendorSync.SyncStoresSkus(ctx, db, []int{model.VendorIDJD}, nil, skuIDs, false, isContinueWhenError)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("TransformJdSpu2Sku skuName:%d is fake", skuName.ID)
|
||||
}
|
||||
return nil, err
|
||||
}, batchSkNameList)
|
||||
rootTask.AddChild(subTask).Run()
|
||||
if _, err = subTask.GetResult(0); err == nil {
|
||||
if len(skuIDs) > 0 {
|
||||
if _, err = dao.SetStoreSkuSyncStatus(db, model.VendorIDJD, -1, skuIDs, model.SyncFlagModifiedMask|model.SyncFlagPriceMask|model.SyncFlagSaleMask); err == nil {
|
||||
time.Sleep(20 * time.Second)
|
||||
_, err = cms.CurVendorSync.SyncStoresSkus(ctx, db, []int{model.VendorIDJD}, nil, skuIDs, false, isContinueWhenError)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil, err
|
||||
}, (len(skuNameList)-1)/batchSize+1)
|
||||
}, (len(skuNameList)-1)/batchSize+1)
|
||||
tasksch.ManageTask(rootTask).Run()
|
||||
if !isAsync {
|
||||
_, err = rootTask.GetResult(0)
|
||||
@@ -795,21 +804,22 @@ func ReProcessJdBadComment(ctx *jxcontext.Context, isForce, isAsync, isContinueW
|
||||
var commentList []*legacymodel.JxBadComments
|
||||
if err = dao.GetRows(db, &commentList, sql); err == nil {
|
||||
if len(commentList) > 0 {
|
||||
rootTask := tasksch.NewParallelTask("ReProcessJdBadComment", nil, ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
badComment := batchItemList[0].(*legacymodel.JxBadComments)
|
||||
comment1, _ := unmarshalCommentText(badComment.Msg)
|
||||
comment2, _ := unmarshalCommentText(badComment.UpdatedMsg)
|
||||
if len(comment1) > 0 {
|
||||
badComment.Createtime = utils.Timestamp2Str(utils.MustInterface2Int64(comment1["createTime"].(map[string]interface{})["time"]) / 1000)
|
||||
badComment.Msg = string(utils.MustMarshal(comment1))
|
||||
if len(comment2) > 0 {
|
||||
badComment.Updatetime = utils.Timestamp2Str(utils.MustInterface2Int64(comment2["createTime"].(map[string]interface{})["time"]) / 1000)
|
||||
badComment.UpdatedMsg = string(utils.MustMarshal(comment2))
|
||||
rootTask := tasksch.NewParallelTask("ReProcessJdBadComment", nil, ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
badComment := batchItemList[0].(*legacymodel.JxBadComments)
|
||||
comment1, _ := unmarshalCommentText(badComment.Msg)
|
||||
comment2, _ := unmarshalCommentText(badComment.UpdatedMsg)
|
||||
if len(comment1) > 0 {
|
||||
badComment.Createtime = utils.Timestamp2Str(utils.MustInterface2Int64(comment1["createTime"].(map[string]interface{})["time"]) / 1000)
|
||||
badComment.Msg = string(utils.MustMarshal(comment1))
|
||||
if len(comment2) > 0 {
|
||||
badComment.Updatetime = utils.Timestamp2Str(utils.MustInterface2Int64(comment2["createTime"].(map[string]interface{})["time"]) / 1000)
|
||||
badComment.UpdatedMsg = string(utils.MustMarshal(comment2))
|
||||
}
|
||||
_, err = dao.UpdateEntity(db, badComment)
|
||||
}
|
||||
_, err = dao.UpdateEntity(db, badComment)
|
||||
}
|
||||
return nil, err
|
||||
}, commentList)
|
||||
return nil, err
|
||||
}, commentList)
|
||||
tasksch.ManageTask(rootTask).Run()
|
||||
if !isAsync {
|
||||
_, err = rootTask.GetResult(0)
|
||||
@@ -856,15 +866,16 @@ func RefreshEbaiBadComment(ctx *jxcontext.Context, fromTime, toTime time.Time, i
|
||||
}
|
||||
days := int(toTime.Sub(fromTime)/(24*time.Hour) + 1)
|
||||
globals.SugarLogger.Debugf("RefreshEbaiBadComment fromTime:%s, toTime:%s, days:%d", utils.Time2Str(fromTime), utils.Time2Str(toTime), days)
|
||||
rootTask := tasksch.NewSeqTask("RefreshEbaiBadComment", ctx.GetUserName(), func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
batchFromTime := fromTime.Add(time.Duration(step) * 24 * time.Hour)
|
||||
batchToTime := batchFromTime.Add(24*time.Hour - time.Second)
|
||||
if batchToTime.Sub(toTime) > 0 {
|
||||
batchToTime = toTime
|
||||
}
|
||||
err = ebai.CurPurchaseHandler.RefreshComment(batchFromTime, batchToTime)
|
||||
return nil, err
|
||||
}, days)
|
||||
rootTask := tasksch.NewSeqTask("RefreshEbaiBadComment", ctx,
|
||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
batchFromTime := fromTime.Add(time.Duration(step) * 24 * time.Hour)
|
||||
batchToTime := batchFromTime.Add(24*time.Hour - time.Second)
|
||||
if batchToTime.Sub(toTime) > 0 {
|
||||
batchToTime = toTime
|
||||
}
|
||||
err = ebai.CurPurchaseHandler.RefreshComment(batchFromTime, batchToTime)
|
||||
return nil, err
|
||||
}, days)
|
||||
tasksch.ManageTask(rootTask).Run()
|
||||
if !isAsync {
|
||||
_, err = rootTask.GetResult(0)
|
||||
|
||||
Reference in New Issue
Block a user