From 050cd4db158296d26eb028815e57ab012371ad68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 10 Mar 2021 13:51:15 +0800 Subject: [PATCH] aa --- business/jxstore/report/report.go | 143 ++++++++++++++++-------------- 1 file changed, 77 insertions(+), 66 deletions(-) diff --git a/business/jxstore/report/report.go b/business/jxstore/report/report.go index fbbc11b00..bfd27205b 100644 --- a/business/jxstore/report/report.go +++ b/business/jxstore/report/report.go @@ -435,77 +435,88 @@ func GetStoreManageState(ctx *jxcontext.Context, storeIDs []int, vendorID int, f } } fmt.Println("storeIDs111111111111111111111111111", storeIDs) - for _, v := range storeIDs { - storeDetail, _ := dao.GetStoreDetail(db, v, vendorID, "") - if storeDetail == nil || storeDetail.VendorStoreID == "" || storeDetail.VendorOrgCode == "" { - continue - } - result := &GetStoreManageStateResult{ - StoreID: v, - StoreName: storeDetail.Name, - MarketScale: storeDetail.MarketScale, - CoverArea: storeDetail.CoverArea, - } - //覆盖范围 - if result.CoverArea == 0 { + task := tasksch.NewParallelTask("GetStoreManageState", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + v := batchItemList[0].(int) + storeDetail, _ := dao.GetStoreDetail(db, v, vendorID, "") + if storeDetail == nil || storeDetail.VendorStoreID == "" || storeDetail.VendorOrgCode == "" { + return retVal, err + } + result := &GetStoreManageStateResult{ + StoreID: v, + StoreName: storeDetail.Name, + MarketScale: storeDetail.MarketScale, + CoverArea: storeDetail.CoverArea, + } + //覆盖范围 + if result.CoverArea == 0 { + handler := partner.GetPurchasePlatformFromVendorID(vendorID) + if store, err := handler.ReadStore(ctx, storeDetail.VendorOrgCode, storeDetail.VendorStoreID); err == nil { + if storeMaps, err := dao.GetStoresMapList(db, []int{vendorID}, []int{v}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "", ""); len(storeMaps) > 0 && err == nil { + if vendorID == model.VendorIDJD && store.DeliveryRangeType != model.DeliveryRangeTypePolygon { + storeMaps[0].CoverArea = math.Pi * utils.Str2Float64WithDefault(store.DeliveryRange, 0) * utils.Str2Float64WithDefault(store.DeliveryRange, 0) / float64(10000) + } else { + storeMaps[0].CoverArea = CalculateCoverArea(strings.Split(store.DeliveryRange, ";"), vendorID) + } + dao.UpdateEntity(db, storeMaps[0], "CoverArea") + result.CoverArea = storeMaps[0].CoverArea + } + } + } + //营业时长 + optime := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime1, time.Now()).Sub(jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime1, time.Now())).Hours() + if storeDetail.CloseTime2 != 0 && storeDetail.OpenTime2 != 0 { + optime += jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime2, time.Now()).Sub(jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime2, time.Now())).Hours() + } + result.OpenTime = optime * float64(dayCount) + //商品数 + skuCount, highSkuCount := 0, 0 + storeSkus, _ := dao.GetStoresSkusInfo(db, []int{v}, nil) + for _, v := range storeSkus { + if v.Status == model.StoreSkuBindStatusNormal && v.Stock > 0 { + skuCount++ + } + if priceRefer, err := dao.GetPriceReferPrice(db, 0, v.SkuID, utils.Time2Date(time.Now().AddDate(0, 0, -1))); err == nil && priceRefer != nil { + if v.UnitPrice > priceRefer.MidUnitPrice { + highSkuCount++ + } + } + } + result.SkuCount, result.HighSkuCount = skuCount, highSkuCount + //活动丰富度 handler := partner.GetPurchasePlatformFromVendorID(vendorID) - if store, err := handler.ReadStore(ctx, storeDetail.VendorOrgCode, storeDetail.VendorStoreID); err == nil { - if storeMaps, err := dao.GetStoresMapList(db, []int{vendorID}, []int{v}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "", ""); len(storeMaps) > 0 && err == nil { - if vendorID == model.VendorIDJD && store.DeliveryRangeType != model.DeliveryRangeTypePolygon { - storeMaps[0].CoverArea = math.Pi * utils.Str2Float64WithDefault(store.DeliveryRange, 0) * utils.Str2Float64WithDefault(store.DeliveryRange, 0) / float64(10000) - } else { - storeMaps[0].CoverArea = CalculateCoverArea(strings.Split(store.DeliveryRange, ";"), vendorID) + ample, _ := handler.GetActAmple(ctx, storeDetail.VendorStoreID, storeDetail.VendorStoreID) + result.ActAmple = ample + //订单 + nullOrderCount, refuseOrderCount := 0, 0 + if orderList, err := dao.QueryOrders(db, "", 0, []int{vendorID}, v, fromTimeT, toTimeT); err == nil { + for _, v := range orderList { + if v.Status == model.OrderStatusCanceled { + nullOrderCount++ } - dao.UpdateEntity(db, storeMaps[0], "CoverArea") - result.CoverArea = storeMaps[0].CoverArea - } - } - } - //营业时长 - optime := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime1, time.Now()).Sub(jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime1, time.Now())).Hours() - if storeDetail.CloseTime2 != 0 && storeDetail.OpenTime2 != 0 { - optime += jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime2, time.Now()).Sub(jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime2, time.Now())).Hours() - } - result.OpenTime = optime * float64(dayCount) - //商品数 - skuCount, highSkuCount := 0, 0 - storeSkus, _ := dao.GetStoresSkusInfo(db, []int{v}, nil) - for _, v := range storeSkus { - if v.Status == model.StoreSkuBindStatusNormal && v.Stock > 0 { - skuCount++ - } - if priceRefer, err := dao.GetPriceReferPrice(db, 0, v.SkuID, utils.Time2Date(time.Now().AddDate(0, 0, -1))); err == nil && priceRefer != nil { - if v.UnitPrice > priceRefer.MidUnitPrice { - highSkuCount++ - } - } - } - result.SkuCount, result.HighSkuCount = skuCount, highSkuCount - //活动丰富度 - handler := partner.GetPurchasePlatformFromVendorID(vendorID) - ample, _ := handler.GetActAmple(ctx, storeDetail.VendorStoreID, storeDetail.VendorStoreID) - result.ActAmple = ample - //订单 - nullOrderCount, refuseOrderCount := 0, 0 - if orderList, err := dao.QueryOrders(db, "", 0, []int{vendorID}, v, fromTimeT, toTimeT); err == nil { - for _, v := range orderList { - if v.Status == model.OrderStatusCanceled { - nullOrderCount++ - } - if waybills, err2 := dao.GetWayBillByOrderID(db, 0, vendorID, 0, v.VendorOrderID); err2 == nil { - if len(waybills) > 0 { - refuseOrderCount++ + if waybills, err2 := dao.GetWayBillByOrderID(db, 0, vendorID, 0, v.VendorOrderID); err2 == nil { + if len(waybills) > 0 { + refuseOrderCount++ + } } } } - } - result.NullOrderCount, result.RefuseOrderCount = nullOrderCount, refuseOrderCount - //评分(美团) - mtapi := partner.CurAPIManager.GetAPI(model.VendorIDMTWM, storeDetail.VendorOrgCode).(*mtwmapi.API) - if scoreResult, err := mtapi.CommentScore(storeDetail.VendorStoreID); err == nil { - result.StoreScore = scoreResult.AvgPoiScore - } - getStoreManageStateResult = append(getStoreManageStateResult, result) + result.NullOrderCount, result.RefuseOrderCount = nullOrderCount, refuseOrderCount + //评分(美团) + if vendorID == model.VendorIDMTWM { + mtapi := partner.CurAPIManager.GetAPI(model.VendorIDMTWM, storeDetail.VendorOrgCode).(*mtwmapi.API) + if scoreResult, err := mtapi.CommentScore(storeDetail.VendorStoreID); err == nil { + result.StoreScore = scoreResult.AvgPoiScore + } + } + retVal = []*GetStoreManageStateResult{result} + // getStoreManageStateResult = append(getStoreManageStateResult, result) + return retVal, err + }, storeIDs) + tasksch.HandleTask(task, nil, true).Run() + result, err := task.GetResult(0) + for _, v := range result { + getStoreManageStateResult = append(getStoreManageStateResult, v.(*GetStoreManageStateResult)) } return getStoreManageStateResult, err }