From 545f873da5ecd8ca9b3bfa08ab17626f224127f6 Mon Sep 17 00:00:00 2001 From: Rosy-zhudan Date: Mon, 29 Jul 2019 08:54:15 +0800 Subject: [PATCH 1/6] auto refresh store's open and close time --- business/jxstore/misc/misc2.go | 152 ++++++++++++++++++++++++++++ business/jxstore/misc/misc2_test.go | 9 ++ 2 files changed, 161 insertions(+) create mode 100644 business/jxstore/misc/misc2.go create mode 100644 business/jxstore/misc/misc2_test.go diff --git a/business/jxstore/misc/misc2.go b/business/jxstore/misc/misc2.go new file mode 100644 index 000000000..cf39fc63c --- /dev/null +++ b/business/jxstore/misc/misc2.go @@ -0,0 +1,152 @@ +package misc + +import ( + "fmt" + "time" + "encoding/json" + "strconv" + "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/model" + "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals" +) + +const ( + specialSkuName = "温馨提示" + startOpStoreStockNumber = 0 + endOpStoreStockNumber = model.MaxStoreSkuStockQty + startOpStoreTimeDefault = int16(5) + endOpStoreTimeDefault = int16(2355) +) + +var ( + startOpStoreTime = startOpStoreTimeDefault + endOpStoreTime = endOpStoreTimeDefault + startOpStoreTimeList = []string { + "00:00:00", + } + endOpStoreTimeList = []string { + "06:00:00", + } + vendorList = map[int]bool { + model.VendorIDMTWM: true, + model.VendorIDEBAI: true, + } +) + +func SetStoreOptime(startTime, endTime int16) { + if startTime == 0 || endTime == 0 { + startOpStoreTime = startOpStoreTimeDefault + endOpStoreTime = endOpStoreTimeDefault + fmt.Println("The store time can't be 0") + } else { + startOpStoreTime = startTime + endOpStoreTime = endTime + fmt.Println("SetStoreOptime:", startTime, endTime) + } +} + +func AddOrDelExtraStoreOptime(vendorID, storeID int, vendorStoreID string, storeInfo *model.Store, needAddTime bool) { + ctx := jxcontext.AdminCtx + opTimeList := storeInfo.GetOpTimeList() + if needAddTime { + if len(opTimeList) == 2 { + opTimeList[0] = startOpStoreTime + opTimeList[1] = endOpStoreTime + } + } + handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IStoreHandler) + handler.UpdateStoreOpTime(ctx, storeID, vendorStoreID, opTimeList) +} + +func GetStockValue(startOrEnd bool) int { + if startOrEnd { + return startOpStoreStockNumber + } else { + return endOpStoreStockNumber + } +} + +func GetSkuNameMap(vendorID, storeID int, vendorStoreID string) map[int]*partner.SkuNameInfo { + skuNameMap := make(map[int]*partner.SkuNameInfo) + ctx := jxcontext.AdminCtx + singleStoreHandler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) + skuNameList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, nil, storeID, vendorStoreID, nil) + if err == nil { + for _, value := range skuNameList { + skuNameMap[value.NameID] = value + } + } + return skuNameMap +} + +func StartOrEndOpStore(startOrEnd bool) { + ctx := jxcontext.AdminCtx + storeInfo, err := cms.GetStores(ctx, "", map[string]interface{}{}, 0, -1, utils.DefaultTimeValue, utils.DefaultTimeValue, 0, 0) + + if err != nil { + fmt.Println(err) + } else { + for _, storeListValue := range storeInfo.Stores { + storeID := storeListValue.ID + if storeListValue.StoreMaps != nil { + for _, vendorListValue := range storeListValue.StoreMaps { + vendorID, _ := strconv.Atoi(vendorListValue["vendorID"].(json.Number).String()) + vendorStoreID := vendorListValue["vendorStoreID"].(string) + fmt.Println(storeID, vendorID, vendorStoreID, "----", vendorListValue) + storeSkuHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler) + storeSkuList, err := storeSkuHandler.GetStoreSkusBareInfo(ctx, nil, storeID, vendorStoreID, nil) + if err != nil { + fmt.Println(err) + } else { + if _, ok := vendorList[vendorID]; ok { + if len(storeSkuList) > 0 { + if !startOrEnd { + AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, false) + } + skuNameMap := GetSkuNameMap(vendorID, storeID, vendorStoreID) + for _, skuValue := range storeSkuList { + skuNameInfo := skuNameMap[skuValue.SkuID] + needCheckName := skuNameInfo != nil + skuName := "" + if skuNameInfo != nil { + skuName = skuNameInfo.Name + } + if (needCheckName && skuName != specialSkuName) || !needCheckName { + skuValue.Stock = GetStockValue(startOrEnd) + var storeSkuList = []*partner.StoreSkuInfo{skuValue} + if successList, err := storeSkuHandler.UpdateStoreSkusStock(ctx, storeID, vendorStoreID, storeSkuList); err == nil { + fmt.Println(successList, err) + } + } + } + if startOrEnd { + AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, true) + } + } + } + } + } + } + } + } +} + +func InitEx() { + ScheduleTimerFuncEx(StartOrEndOpStore, true, startOpStoreTimeList) + ScheduleTimerFuncEx(StartOrEndOpStore, false, endOpStoreTimeList) +} + +func ScheduleTimerFuncEx(handler func(bool), startOrEnd bool, timeList []string) { + now := time.Now() + nextTime := jxutils.GetNextTimeFromList(now, timeList) + duration := nextTime.Sub(now) + 1 * time.Second + globals.SugarLogger.Debugf("ScheduleTimerFunc, duration:%v", duration) + utils.AfterFuncWithRecover(duration, func() { + handler(startOrEnd) + ScheduleTimerFuncEx(handler, startOrEnd, timeList) + }) +} \ No newline at end of file diff --git a/business/jxstore/misc/misc2_test.go b/business/jxstore/misc/misc2_test.go new file mode 100644 index 000000000..dd25fbffd --- /dev/null +++ b/business/jxstore/misc/misc2_test.go @@ -0,0 +1,9 @@ +package misc + +import ( + "testing" +) + +func TestStartOrEndOpStore(t *testing.T) { + StartOrEndOpStore(true) +} From e7f618859d5b38bb7977347bd58e09b541b5f0b0 Mon Sep 17 00:00:00 2001 From: Rosy-zhudan Date: Mon, 29 Jul 2019 10:58:19 +0800 Subject: [PATCH 2/6] =?UTF-8?q?'=E5=AE=9A=E6=97=B6=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=95=86=E5=BA=97=E5=BA=93=E5=AD=98=E5=92=8C=E8=90=A5=E4=B8=9A?= =?UTF-8?q?=E6=97=B6=E9=97=B4=EF=BC=88=E6=9A=82=E9=A5=BF=E7=99=BE=E5=92=8C?= =?UTF-8?q?=E7=BE=8E=E5=9B=A2=EF=BC=89'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc2.go | 49 ++++++++++++++++----------- controllers/temp_op.go | 18 ++++++++++ main.go | 1 + routers/commentsRouter_controllers.go | 9 +++++ 4 files changed, 58 insertions(+), 19 deletions(-) diff --git a/business/jxstore/misc/misc2.go b/business/jxstore/misc/misc2.go index cf39fc63c..f1331fd31 100644 --- a/business/jxstore/misc/misc2.go +++ b/business/jxstore/misc/misc2.go @@ -1,7 +1,7 @@ package misc import ( - "fmt" + //"fmt" "time" "encoding/json" "strconv" @@ -12,6 +12,8 @@ import ( "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/business/partner/putils" + "git.rosy.net.cn/baseapi" ) const ( @@ -41,11 +43,11 @@ func SetStoreOptime(startTime, endTime int16) { if startTime == 0 || endTime == 0 { startOpStoreTime = startOpStoreTimeDefault endOpStoreTime = endOpStoreTimeDefault - fmt.Println("The store time can't be 0") + baseapi.SugarLogger.Debugf("The store time can't be 0") } else { startOpStoreTime = startTime endOpStoreTime = endTime - fmt.Println("SetStoreOptime:", startTime, endTime) + baseapi.SugarLogger.Debugf("SetStoreOptime:%d do:%d", startTime, endTime) } } @@ -88,7 +90,7 @@ func StartOrEndOpStore(startOrEnd bool) { storeInfo, err := cms.GetStores(ctx, "", map[string]interface{}{}, 0, -1, utils.DefaultTimeValue, utils.DefaultTimeValue, 0, 0) if err != nil { - fmt.Println(err) + baseapi.SugarLogger.Errorf("storeInfo error:%v", err) } else { for _, storeListValue := range storeInfo.Stores { storeID := storeListValue.ID @@ -96,11 +98,11 @@ func StartOrEndOpStore(startOrEnd bool) { for _, vendorListValue := range storeListValue.StoreMaps { vendorID, _ := strconv.Atoi(vendorListValue["vendorID"].(json.Number).String()) vendorStoreID := vendorListValue["vendorStoreID"].(string) - fmt.Println(storeID, vendorID, vendorStoreID, "----", vendorListValue) + baseapi.SugarLogger.Debugf("storeID:%d vendorID:%d vendorStoreID:%s vendorListValue:%v", storeID, vendorID, vendorStoreID, vendorListValue) storeSkuHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler) storeSkuList, err := storeSkuHandler.GetStoreSkusBareInfo(ctx, nil, storeID, vendorStoreID, nil) if err != nil { - fmt.Println(err) + baseapi.SugarLogger.Errorf("storeSkuList error:%v", err) } else { if _, ok := vendorList[vendorID]; ok { if len(storeSkuList) > 0 { @@ -108,21 +110,30 @@ func StartOrEndOpStore(startOrEnd bool) { AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, false) } skuNameMap := GetSkuNameMap(vendorID, storeID, vendorStoreID) - for _, skuValue := range storeSkuList { - skuNameInfo := skuNameMap[skuValue.SkuID] - needCheckName := skuNameInfo != nil - skuName := "" - if skuNameInfo != nil { - skuName = skuNameInfo.Name - } - if (needCheckName && skuName != specialSkuName) || !needCheckName { - skuValue.Stock = GetStockValue(startOrEnd) - var storeSkuList = []*partner.StoreSkuInfo{skuValue} - if successList, err := storeSkuHandler.UpdateStoreSkusStock(ctx, storeID, vendorStoreID, storeSkuList); err == nil { - fmt.Println(successList, err) + isContinueWhenError := true + _, err = putils.FreeBatchStoreSkuInfo(func(batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, err error) { + var filterBatchedStoreSkuList []*partner.StoreSkuInfo + for _, skuValue := range batchedStoreSkuList { + skuNameInfo := skuNameMap[skuValue.SkuID] + needCheckName := skuNameInfo != nil + skuName := "" + if skuNameInfo != nil { + skuName = skuNameInfo.Name + } + if (needCheckName && skuName != specialSkuName) || !needCheckName { + skuValue.Stock = GetStockValue(startOrEnd) + filterBatchedStoreSkuList = append(filterBatchedStoreSkuList, skuValue) } } - } + + var successList []*partner.StoreSkuInfo + if successList, err = storeSkuHandler.UpdateStoreSkusStock(ctx, storeID, vendorStoreID, filterBatchedStoreSkuList); err == nil { + successList = batchedStoreSkuList + baseapi.SugarLogger.Debugf("successList:%v error:%v", successList, err) + } + return nil, err + }, ctx, nil, storeSkuList, storeSkuHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), isContinueWhenError) + if startOrEnd { AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, true) } diff --git a/controllers/temp_op.go b/controllers/temp_op.go index 3b5d945bb..fce5fc2f2 100644 --- a/controllers/temp_op.go +++ b/controllers/temp_op.go @@ -10,6 +10,7 @@ import ( "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego" + "git.rosy.net.cn/jx-callback/business/jxstore/misc" ) type TempOpController struct { @@ -271,3 +272,20 @@ func (c *TempOpController) TestIt() { return retVal, "", err }) } + +// @Title 开启或结束所有平台商店的额外时间 +// @Description 开启或结束所有平台商店的额外时间,并且修改所有商品库存为0或99999(开启:0 , 结束:99999) +// @Param token header string true "认证token" +// @Param startOrEndStore query bool true "开启或结束" +// @Param startTime query int false "开始营业时间(格式:930代表早上9点30分)" +// @Param endTime query int false "结束营业时间" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /TestStartOrEndOpStore [get] +func (c *TempOpController) TestStartOrEndOpStore() { + c.callTestStartOrEndOpStore(func(params *tTempopTestStartOrEndOpStoreParams) (retVal interface{}, errCode string, err error) { + misc.SetStoreOptime(int16(params.StartTime), int16(params.EndTime)) + misc.StartOrEndOpStore(params.StartOrEndStore) + return retVal, "", err + }) +} diff --git a/main.go b/main.go index 67c8a92a8..81aa12ff6 100644 --- a/main.go +++ b/main.go @@ -57,6 +57,7 @@ func Init() { if globals.IsProductEnv() { ebai.CurPurchaseHandler.StartRefreshComment() misc.Init() + misc.InitEx() } } diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 74940d1cb..ee8e4b0fd 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1690,6 +1690,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], + beego.ControllerComments{ + Method: "TestStartOrEndOpStore", + Router: `/TestStartOrEndOpStore`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], beego.ControllerComments{ Method: "UpdateAllWeiXinRemark", From 72e8e62da5f5ef13bb8f8fe79e4b647ce4ef0b6e Mon Sep 17 00:00:00 2001 From: Rosy-zhudan Date: Mon, 29 Jul 2019 17:26:43 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=97=A8=E5=BA=97=E6=95=B0=E9=87=8F=E5=92=8C?= =?UTF-8?q?=E8=90=A5=E4=B8=9A=E6=97=B6=E9=97=B4=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc2.go | 88 ++++++++++++----------------- business/jxstore/misc/misc2_test.go | 2 +- controllers/temp_op.go | 3 +- 3 files changed, 37 insertions(+), 56 deletions(-) diff --git a/business/jxstore/misc/misc2.go b/business/jxstore/misc/misc2.go index f1331fd31..126b3eff0 100644 --- a/business/jxstore/misc/misc2.go +++ b/business/jxstore/misc/misc2.go @@ -1,17 +1,13 @@ package misc import ( - //"fmt" - "time" "encoding/json" "strconv" "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/model" "git.rosy.net.cn/jx-callback/business/partner" - "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/business/partner/putils" "git.rosy.net.cn/baseapi" ) @@ -39,25 +35,15 @@ var ( } ) -func SetStoreOptime(startTime, endTime int16) { - if startTime == 0 || endTime == 0 { - startOpStoreTime = startOpStoreTimeDefault - endOpStoreTime = endOpStoreTimeDefault - baseapi.SugarLogger.Debugf("The store time can't be 0") - } else { - startOpStoreTime = startTime - endOpStoreTime = endTime - baseapi.SugarLogger.Debugf("SetStoreOptime:%d do:%d", startTime, endTime) - } -} - func AddOrDelExtraStoreOptime(vendorID, storeID int, vendorStoreID string, storeInfo *model.Store, needAddTime bool) { ctx := jxcontext.AdminCtx opTimeList := storeInfo.GetOpTimeList() if needAddTime { - if len(opTimeList) == 2 { + if len(opTimeList) == 0 { + opTimeList = append(opTimeList, startOpStoreTime, endOpStoreTime) + } else if len(opTimeList) >= 2 { opTimeList[0] = startOpStoreTime - opTimeList[1] = endOpStoreTime + opTimeList[1] = endOpStoreTime } } handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IStoreHandler) @@ -72,20 +58,16 @@ func GetStockValue(startOrEnd bool) int { } } -func GetSkuNameMap(vendorID, storeID int, vendorStoreID string) map[int]*partner.SkuNameInfo { - skuNameMap := make(map[int]*partner.SkuNameInfo) - ctx := jxcontext.AdminCtx - singleStoreHandler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) - skuNameList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, nil, storeID, vendorStoreID, nil) - if err == nil { - for _, value := range skuNameList { - skuNameMap[value.NameID] = value - } +func StartOrEndOpStore(startOrEnd bool, startTime, endTime int16) { + if startTime == 0 || endTime == 0 { + startOpStoreTime = startOpStoreTimeDefault + endOpStoreTime = endOpStoreTimeDefault + baseapi.SugarLogger.Debugf("The store time can't be 0") + } else { + startOpStoreTime = startTime + endOpStoreTime = endTime + baseapi.SugarLogger.Debugf("SetStoreOptime:%d do:%d", startTime, endTime) } - return skuNameMap -} - -func StartOrEndOpStore(startOrEnd bool) { ctx := jxcontext.AdminCtx storeInfo, err := cms.GetStores(ctx, "", map[string]interface{}{}, 0, -1, utils.DefaultTimeValue, utils.DefaultTimeValue, 0, 0) @@ -97,19 +79,26 @@ func StartOrEndOpStore(startOrEnd bool) { if storeListValue.StoreMaps != nil { for _, vendorListValue := range storeListValue.StoreMaps { vendorID, _ := strconv.Atoi(vendorListValue["vendorID"].(json.Number).String()) - vendorStoreID := vendorListValue["vendorStoreID"].(string) - baseapi.SugarLogger.Debugf("storeID:%d vendorID:%d vendorStoreID:%s vendorListValue:%v", storeID, vendorID, vendorStoreID, vendorListValue) - storeSkuHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler) - storeSkuList, err := storeSkuHandler.GetStoreSkusBareInfo(ctx, nil, storeID, vendorStoreID, nil) - if err != nil { - baseapi.SugarLogger.Errorf("storeSkuList error:%v", err) - } else { - if _, ok := vendorList[vendorID]; ok { + if _, ok := vendorList[vendorID]; ok { + vendorStoreID := vendorListValue["vendorStoreID"].(string) + baseapi.SugarLogger.Debugf("storeID:%d vendorID:%d vendorStoreID:%s vendorListValue:%v", storeID, vendorID, vendorStoreID, vendorListValue) + storeSkuHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler) + // storeSkuList, err := storeSkuHandler.GetStoreSkusBareInfo(ctx, nil, storeID, vendorStoreID, nil) + singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) + storeSkuNameList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, nil, storeID, vendorStoreID, nil) + storeSkuList := putils.StoreSkuFullList2Bare(storeSkuNameList) + if err != nil { + baseapi.SugarLogger.Errorf("storeSkuList error:%v", err) + } else { if len(storeSkuList) > 0 { if !startOrEnd { AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, false) } - skuNameMap := GetSkuNameMap(vendorID, storeID, vendorStoreID) + skuNameMap := make(map[int]*partner.SkuNameInfo) + for _, value := range storeSkuNameList { + skuNameMap[value.NameID] = value + } + isContinueWhenError := true _, err = putils.FreeBatchStoreSkuInfo(func(batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, err error) { var filterBatchedStoreSkuList []*partner.StoreSkuInfo @@ -147,17 +136,10 @@ func StartOrEndOpStore(startOrEnd bool) { } func InitEx() { - ScheduleTimerFuncEx(StartOrEndOpStore, true, startOpStoreTimeList) - ScheduleTimerFuncEx(StartOrEndOpStore, false, endOpStoreTimeList) -} - -func ScheduleTimerFuncEx(handler func(bool), startOrEnd bool, timeList []string) { - now := time.Now() - nextTime := jxutils.GetNextTimeFromList(now, timeList) - duration := nextTime.Sub(now) + 1 * time.Second - globals.SugarLogger.Debugf("ScheduleTimerFunc, duration:%v", duration) - utils.AfterFuncWithRecover(duration, func() { - handler(startOrEnd) - ScheduleTimerFuncEx(handler, startOrEnd, timeList) - }) + ScheduleTimerFunc(func() { + StartOrEndOpStore(true, 0, 0) + }, startOpStoreTimeList) + ScheduleTimerFunc(func() { + StartOrEndOpStore(false, 0, 0) + }, endOpStoreTimeList) } \ No newline at end of file diff --git a/business/jxstore/misc/misc2_test.go b/business/jxstore/misc/misc2_test.go index dd25fbffd..3973944c7 100644 --- a/business/jxstore/misc/misc2_test.go +++ b/business/jxstore/misc/misc2_test.go @@ -5,5 +5,5 @@ import ( ) func TestStartOrEndOpStore(t *testing.T) { - StartOrEndOpStore(true) + StartOrEndOpStore(true, 0, 0) } diff --git a/controllers/temp_op.go b/controllers/temp_op.go index fce5fc2f2..d2fc4d144 100644 --- a/controllers/temp_op.go +++ b/controllers/temp_op.go @@ -284,8 +284,7 @@ func (c *TempOpController) TestIt() { // @router /TestStartOrEndOpStore [get] func (c *TempOpController) TestStartOrEndOpStore() { c.callTestStartOrEndOpStore(func(params *tTempopTestStartOrEndOpStoreParams) (retVal interface{}, errCode string, err error) { - misc.SetStoreOptime(int16(params.StartTime), int16(params.EndTime)) - misc.StartOrEndOpStore(params.StartOrEndStore) + misc.StartOrEndOpStore(params.StartOrEndStore, int16(params.StartTime), int16(params.EndTime)) return retVal, "", err }) } From df92f78cc423b0d9999b35507e2f56856ae8566b Mon Sep 17 00:00:00 2001 From: Rosy-zhudan Date: Tue, 30 Jul 2019 14:22:09 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc2.go | 97 ++++++++++++++-------------------- 1 file changed, 40 insertions(+), 57 deletions(-) diff --git a/business/jxstore/misc/misc2.go b/business/jxstore/misc/misc2.go index 126b3eff0..9ba8019fa 100644 --- a/business/jxstore/misc/misc2.go +++ b/business/jxstore/misc/misc2.go @@ -1,8 +1,6 @@ package misc import ( - "encoding/json" - "strconv" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" @@ -21,8 +19,6 @@ const ( ) var ( - startOpStoreTime = startOpStoreTimeDefault - endOpStoreTime = endOpStoreTimeDefault startOpStoreTimeList = []string { "00:00:00", } @@ -35,35 +31,37 @@ var ( } ) -func AddOrDelExtraStoreOptime(vendorID, storeID int, vendorStoreID string, storeInfo *model.Store, needAddTime bool) { +func AddOrDelExtraStoreOptime(vendorID, storeID int, vendorStoreID string, storeInfo *model.Store, startOpStoreTime, endOpStoreTime int16, needAddTime bool) bool { ctx := jxcontext.AdminCtx opTimeList := storeInfo.GetOpTimeList() if needAddTime { - if len(opTimeList) == 0 { - opTimeList = append(opTimeList, startOpStoreTime, endOpStoreTime) - } else if len(opTimeList) >= 2 { - opTimeList[0] = startOpStoreTime - opTimeList[1] = endOpStoreTime - } + opTimeList = []int16{startOpStoreTime, endOpStoreTime} } handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IStoreHandler) - handler.UpdateStoreOpTime(ctx, storeID, vendorStoreID, opTimeList) + return handler.UpdateStoreOpTime(ctx, storeID, vendorStoreID, opTimeList) == nil } -func GetStockValue(startOrEnd bool) int { - if startOrEnd { +func GetStockValue(isStart bool) int { + if isStart { return startOpStoreStockNumber } else { return endOpStoreStockNumber } } -func StartOrEndOpStore(startOrEnd bool, startTime, endTime int16) { - if startTime == 0 || endTime == 0 { - startOpStoreTime = startOpStoreTimeDefault - endOpStoreTime = endOpStoreTimeDefault - baseapi.SugarLogger.Debugf("The store time can't be 0") - } else { +func FilterSkuNameList(storeSkuNameList []*partner.SkuNameInfo) (filterStoreSkuNameList []*partner.SkuNameInfo) { + for _, skuNameInfo := range storeSkuNameList { + if skuNameInfo.Name != specialSkuName { + filterStoreSkuNameList = append(filterStoreSkuNameList, skuNameInfo) + } + } + return filterStoreSkuNameList +} + +func StartOrEndOpStore(isStart bool, startTime, endTime int16) { + startOpStoreTime := startOpStoreTimeDefault + endOpStoreTime := endOpStoreTimeDefault + if startTime != 0 && endTime != 0 { startOpStoreTime = startTime endOpStoreTime = endTime baseapi.SugarLogger.Debugf("SetStoreOptime:%d do:%d", startTime, endTime) @@ -77,54 +75,39 @@ func StartOrEndOpStore(startOrEnd bool, startTime, endTime int16) { for _, storeListValue := range storeInfo.Stores { storeID := storeListValue.ID if storeListValue.StoreMaps != nil { - for _, vendorListValue := range storeListValue.StoreMaps { - vendorID, _ := strconv.Atoi(vendorListValue["vendorID"].(json.Number).String()) + for _, vendorListValue := range storeListValue.StoreMaps { + vendorID := int(utils.MustInterface2Int64(vendorListValue["vendorID"])) if _, ok := vendorList[vendorID]; ok { - vendorStoreID := vendorListValue["vendorStoreID"].(string) + vendorStoreID := utils.Interface2String(vendorListValue["vendorStoreID"]) baseapi.SugarLogger.Debugf("storeID:%d vendorID:%d vendorStoreID:%s vendorListValue:%v", storeID, vendorID, vendorStoreID, vendorListValue) - storeSkuHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler) - // storeSkuList, err := storeSkuHandler.GetStoreSkusBareInfo(ctx, nil, storeID, vendorStoreID, nil) singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) storeSkuNameList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, nil, storeID, vendorStoreID, nil) - storeSkuList := putils.StoreSkuFullList2Bare(storeSkuNameList) + filterStoreSkuNameList := FilterSkuNameList(storeSkuNameList) + storeSkuList := putils.StoreSkuFullList2Bare(filterStoreSkuNameList) if err != nil { baseapi.SugarLogger.Errorf("storeSkuList error:%v", err) } else { if len(storeSkuList) > 0 { - if !startOrEnd { - AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, false) + canProcessSkuList := true + if !isStart { + canProcessSkuList = AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, false) } - skuNameMap := make(map[int]*partner.SkuNameInfo) - for _, value := range storeSkuNameList { - skuNameMap[value.NameID] = value + if canProcessSkuList { + _, err = putils.FreeBatchStoreSkuInfo(func(batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, err error) { + for _, skuValue := range batchedStoreSkuList { + skuValue.Stock = GetStockValue(isStart) + } + var successList []*partner.StoreSkuInfo + if successList, err = singleStoreHandler.UpdateStoreSkusStock(ctx, storeID, vendorStoreID, batchedStoreSkuList); err == nil { + successList = batchedStoreSkuList + baseapi.SugarLogger.Debugf("successList:%v error:%v", successList, err) + } + return nil, err + }, ctx, nil, storeSkuList, singleStoreHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), true) } - - isContinueWhenError := true - _, err = putils.FreeBatchStoreSkuInfo(func(batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, err error) { - var filterBatchedStoreSkuList []*partner.StoreSkuInfo - for _, skuValue := range batchedStoreSkuList { - skuNameInfo := skuNameMap[skuValue.SkuID] - needCheckName := skuNameInfo != nil - skuName := "" - if skuNameInfo != nil { - skuName = skuNameInfo.Name - } - if (needCheckName && skuName != specialSkuName) || !needCheckName { - skuValue.Stock = GetStockValue(startOrEnd) - filterBatchedStoreSkuList = append(filterBatchedStoreSkuList, skuValue) - } - } - var successList []*partner.StoreSkuInfo - if successList, err = storeSkuHandler.UpdateStoreSkusStock(ctx, storeID, vendorStoreID, filterBatchedStoreSkuList); err == nil { - successList = batchedStoreSkuList - baseapi.SugarLogger.Debugf("successList:%v error:%v", successList, err) - } - return nil, err - }, ctx, nil, storeSkuList, storeSkuHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), isContinueWhenError) - - if startOrEnd { - AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, true) + if isStart { + AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, true) } } } From 17ce70be72c27f24fd832d954d18f3b497b362b1 Mon Sep 17 00:00:00 2001 From: Rosy-zhudan Date: Tue, 30 Jul 2019 15:28:40 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=97=B6=E9=97=B4=EF=BC=8C=E4=BF=AE=E6=AD=A3=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc2.go | 39 ++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/business/jxstore/misc/misc2.go b/business/jxstore/misc/misc2.go index 9ba8019fa..f0df3cdb0 100644 --- a/business/jxstore/misc/misc2.go +++ b/business/jxstore/misc/misc2.go @@ -1,6 +1,7 @@ package misc import ( + "time" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" @@ -59,6 +60,7 @@ func FilterSkuNameList(storeSkuNameList []*partner.SkuNameInfo) (filterStoreSkuN } func StartOrEndOpStore(isStart bool, startTime, endTime int16) { + startProcessTime := time.Now().Unix() startOpStoreTime := startOpStoreTimeDefault endOpStoreTime := endOpStoreTimeDefault if startTime != 0 && endTime != 0 { @@ -79,33 +81,31 @@ func StartOrEndOpStore(isStart bool, startTime, endTime int16) { vendorID := int(utils.MustInterface2Int64(vendorListValue["vendorID"])) if _, ok := vendorList[vendorID]; ok { vendorStoreID := utils.Interface2String(vendorListValue["vendorStoreID"]) - baseapi.SugarLogger.Debugf("storeID:%d vendorID:%d vendorStoreID:%s vendorListValue:%v", storeID, vendorID, vendorStoreID, vendorListValue) + baseapi.SugarLogger.Debugf("storeID:%d vendorID:%d vendorStoreID:%s", storeID, vendorID, vendorStoreID) singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) storeSkuNameList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, nil, storeID, vendorStoreID, nil) - filterStoreSkuNameList := FilterSkuNameList(storeSkuNameList) - storeSkuList := putils.StoreSkuFullList2Bare(filterStoreSkuNameList) if err != nil { baseapi.SugarLogger.Errorf("storeSkuList error:%v", err) } else { + filterStoreSkuNameList := FilterSkuNameList(storeSkuNameList) + storeSkuList := putils.StoreSkuFullList2Bare(filterStoreSkuNameList) if len(storeSkuList) > 0 { - canProcessSkuList := true if !isStart { - canProcessSkuList = AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, false) - } - if canProcessSkuList { - _, err = putils.FreeBatchStoreSkuInfo(func(batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, err error) { - for _, skuValue := range batchedStoreSkuList { - skuValue.Stock = GetStockValue(isStart) - } - var successList []*partner.StoreSkuInfo - if successList, err = singleStoreHandler.UpdateStoreSkusStock(ctx, storeID, vendorStoreID, batchedStoreSkuList); err == nil { - successList = batchedStoreSkuList - baseapi.SugarLogger.Debugf("successList:%v error:%v", successList, err) - } - return nil, err - }, ctx, nil, storeSkuList, singleStoreHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), true) + AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, false) } + _, err = putils.FreeBatchStoreSkuInfo(func(batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, err error) { + for _, skuValue := range batchedStoreSkuList { + skuValue.Stock = GetStockValue(isStart) + } + //var successList []*partner.StoreSkuInfo + if _, err = singleStoreHandler.UpdateStoreSkusStock(ctx, storeID, vendorStoreID, batchedStoreSkuList); err == nil { + //successList = batchedStoreSkuList + //baseapi.SugarLogger.Debugf("successList:%v error:%v", successList, err) + } + return nil, err + }, ctx, nil, storeSkuList, singleStoreHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), true) + if isStart { AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, true) } @@ -116,6 +116,9 @@ func StartOrEndOpStore(isStart bool, startTime, endTime int16) { } } } + endProcessTime := time.Now().Unix() + diff := endProcessTime - startProcessTime + baseapi.SugarLogger.Debugf("StartOrEndOpStore cost time: %d sec", diff) } func InitEx() { From ae41c23bf6791ab9e6cf4b5ce76885a50cc1324f Mon Sep 17 00:00:00 2001 From: Rosy-zhudan Date: Tue, 30 Jul 2019 16:05:35 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=89=93=E5=8D=B0=E8=B5=B7=E5=A7=8B?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc2.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/jxstore/misc/misc2.go b/business/jxstore/misc/misc2.go index f0df3cdb0..c72559692 100644 --- a/business/jxstore/misc/misc2.go +++ b/business/jxstore/misc/misc2.go @@ -61,6 +61,7 @@ func FilterSkuNameList(storeSkuNameList []*partner.SkuNameInfo) (filterStoreSkuN func StartOrEndOpStore(isStart bool, startTime, endTime int16) { startProcessTime := time.Now().Unix() + baseapi.SugarLogger.Debugf("StartOrEndOpStore start time: %v", time.Now()) startOpStoreTime := startOpStoreTimeDefault endOpStoreTime := endOpStoreTimeDefault if startTime != 0 && endTime != 0 { @@ -118,6 +119,7 @@ func StartOrEndOpStore(isStart bool, startTime, endTime int16) { } endProcessTime := time.Now().Unix() diff := endProcessTime - startProcessTime + baseapi.SugarLogger.Debugf("StartOrEndOpStore end time: %v", time.Now()) baseapi.SugarLogger.Debugf("StartOrEndOpStore cost time: %d sec", diff) }