From 582f11521cd784e7ceee2a2c9ee5add1971d1b94 Mon Sep 17 00:00:00 2001 From: gazebo Date: Sun, 4 Aug 2019 09:57:18 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=A4=84=E7=90=86=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=81=87=E8=90=A5=E4=B8=9A=E6=97=B6=E9=97=B4=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91BUG=EF=BC=88=E4=B9=8B=E5=89=8D=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=9C=A810=E7=82=B9=E4=BB=A5=E5=90=8E=E9=87=8D=E5=90=AF?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E5=8F=AF=E8=83=BD=E5=AF=BC=E8=87=B4=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E4=B8=8D=E8=83=BD=E6=81=A2=E5=A4=8D=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc.go | 36 ++++++++++++++++++++-- business/jxstore/misc/misc2.go | 45 ++++++++-------------------- business/jxutils/tasksch/task_man.go | 7 +++++ 3 files changed, 54 insertions(+), 34 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index b9a6cb73a..3c80e0540 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -3,6 +3,7 @@ package misc import ( "fmt" "strings" + "sync" "time" "git.rosy.net.cn/baseapi/utils" @@ -18,6 +19,11 @@ import ( "git.rosy.net.cn/jx-callback/globals" ) +const ( + SpecialTaskID = "Running" + TaskNameSyncStoreSku = "SyncStoreSku" +) + var ( dailyWorkTimeList = []string{ "21:00:00", @@ -48,8 +54,31 @@ var ( autoSaleStoreSkuTimeList = []string{ "20:50:00", } + + importantTaskMap = &sync.Map{} ) +func GetImportantTaskID(taskName string) string { + if value, ok := importantTaskMap.Load(taskName); ok { + return value.(string) + } + return "" +} + +func SaveImportantTaskID(taskName, taskID string) { + importantTaskMap.Store(taskName, taskID) +} + +func IsImportantTaskRunning(taskName string) bool { + taskID := GetImportantTaskID(taskName) + if taskID == "" { + return false + } else if taskID == SpecialTaskID { + return true + } + return tasksch.IsTaskRunning(taskID) +} + func Init() { if globals.IsProductEnv() { ScheduleTimerFunc(doDailyWork, dailyWorkTimeList) @@ -74,6 +103,7 @@ func Init() { ScheduleTimerFunc(func() { dao.UpdateActStatusByTime(dao.GetDB(), time.Now().Add(-48*time.Hour)) }, updateActStatusTimeList) + InitEx() } ScheduleTimerFunc(func() { cms.AutoSaleStoreSku(jxcontext.AdminCtx, nil, false) @@ -84,8 +114,10 @@ func doDailyWork() { globals.SugarLogger.Debug("doDailyWork") netprinter.RebindAllPrinters(jxcontext.AdminCtx, false, true) // cms.CurVendorSync.FullSyncStoresSkus(jxcontext.AdminCtx, dao.GetDB(), []int{model.VendorIDJD}, nil, true, true) - cms.CurVendorSync.SyncStoresSkus(jxcontext.AdminCtx, dao.GetDB(), []int{model.VendorIDJD, model.VendorIDEBAI, model.VendorIDMTWM}, nil, nil, false, false, true) - InitEx() + + SaveImportantTaskID(TaskNameSyncStoreSku, SpecialTaskID) + taskID, _ := cms.CurVendorSync.SyncStoresSkus(jxcontext.AdminCtx, dao.GetDB(), []int{model.VendorIDJD, model.VendorIDEBAI, model.VendorIDMTWM}, nil, nil, false, true, true) + SaveImportantTaskID(TaskNameSyncStoreSku, taskID) } func RefreshRealMobile(ctx *jxcontext.Context, vendorID int, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { diff --git a/business/jxstore/misc/misc2.go b/business/jxstore/misc/misc2.go index 29d8ea465..1937f9468 100644 --- a/business/jxstore/misc/misc2.go +++ b/business/jxstore/misc/misc2.go @@ -6,7 +6,6 @@ import ( "git.rosy.net.cn/baseapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" - "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" @@ -160,38 +159,20 @@ func StartOrEndOpStore(isStart bool, startTime, endTime int16, isAsync, isContin } func InitEx() { - // if globals.IsMainProductEnv() { - // ScheduleTimerFunc(func() { - // StartOrEndOpStore(true, 0, 0, false, true) - // }, startOpStoreTimeListJXCS) - // ScheduleTimerFunc(func() { - // StartOrEndOpStore(false, 0, 0, false, true) - // }, endOpStoreTimeListJXCS) - // } else { - // ScheduleTimerFunc(func() { - // StartOrEndOpStore(true, 0, 0, false, true) - // }, startOpStoreTimeListJXGY) - // ScheduleTimerFunc(func() { - // StartOrEndOpStore(false, 0, 0, false, true) - // }, endOpStoreTimeListJXGY) - // } - var ( - time1, time2 time.Time - ) - now := time.Now() - if globals.IsMainProductEnv() { - time1 = jxutils.GetNextTimeFromList(now, startOpStoreTimeListJXCS) - time2 = jxutils.GetNextTimeFromList(now, endOpStoreTimeListJXCS) - } else { - time1 = jxutils.GetNextTimeFromList(now, startOpStoreTimeListJXGY) - time2 = jxutils.GetNextTimeFromList(now, endOpStoreTimeListJXGY) + startTimeList := startOpStoreTimeListJXCS + stopTimeList := endOpStoreTimeListJXCS + if !globals.IsMainProductEnv() { + startTimeList = startOpStoreTimeListJXGY + stopTimeList = endOpStoreTimeListJXGY } - if time1.Sub(now) < 2*time.Hour { - utils.AfterFuncWithRecover(time1.Sub(now), func() { + ScheduleTimerFunc(func() { + if !IsImportantTaskRunning(TaskNameSyncStoreSku) { StartOrEndOpStore(true, 0, 0, false, true) - }) - utils.AfterFuncWithRecover(time2.Sub(now), func() { + } + }, startTimeList) + ScheduleTimerFunc(func() { + if !IsImportantTaskRunning(TaskNameSyncStoreSku) { StartOrEndOpStore(false, 0, 0, false, true) - }) - } + } + }, stopTimeList) } diff --git a/business/jxutils/tasksch/task_man.go b/business/jxutils/tasksch/task_man.go index 68088628e..4dd270358 100644 --- a/business/jxutils/tasksch/task_man.go +++ b/business/jxutils/tasksch/task_man.go @@ -51,3 +51,10 @@ func GetTasks(taskID string, fromStatus, toStatus int, lastHours int, createdBy func ManageTask(task ITask) ITask { return defTaskMan.ManageTask(task) } + +func IsTaskRunning(taskID string) bool { + if taskList := GetTasks(taskID, TaskStatusBegin, TaskStatusWorking, 36, ""); len(taskList) > 0 { + return true + } + return false +}