From 6c4ca2fd17cb5c0806603de121769198d7a687b3 Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 8 Jul 2019 15:34:58 +0800 Subject: [PATCH] =?UTF-8?q?-=20GetAndStoreCitiesShops=E6=B7=BB=E5=8A=A0isA?= =?UTF-8?q?sync=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/netspider/netspider.go | 14 ++++++++++---- controllers/net_spider.go | 3 ++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/business/netspider/netspider.go b/business/netspider/netspider.go index 642401b67..796800164 100644 --- a/business/netspider/netspider.go +++ b/business/netspider/netspider.go @@ -22,7 +22,7 @@ const ( func GetCityShops(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, cityCode, radius, gridWith int) (pageStoreList []*model.PageShop, err error) { coordList := ditu.GetCityCoordinateList(cityCode, radius, gridWith) if len(coordList) > 0 { - task := tasksch.NewParallelTask("GetCityShops", nil, ctx, + task := tasksch.NewParallelTask("GetCityShops", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { vendorID := batchItemList[0].(int) storeList, err2 := getStoreListByCoordinates(ctx, task, vendorID, utils.Int2Str(cityCode), coordList) @@ -100,7 +100,7 @@ func getStoreListByCoordinates(ctx *jxcontext.Context, parentTask tasksch.ITask, return storeList, err } -func GetAndStoreCitiesShops(ctx *jxcontext.Context, vendorIDs []int, cityCodeList []int, radius, gridWith int) (hint string, err error) { +func GetAndStoreCitiesShops(ctx *jxcontext.Context, vendorIDs []int, cityCodeList []int, radius, gridWith int, isAsync bool) (hint string, err error) { db := dao.GetDB() if len(cityCodeList) == 0 { placeList, err2 := dao.GetPlacesByCond(db, dao.EnableCondAll) @@ -131,8 +131,8 @@ func GetAndStoreCitiesShops(ctx *jxcontext.Context, vendorIDs []int, cityCodeLis dao.Begin(db) defer func() { if r := recover(); r != nil { - panic(r) dao.Rollback(db) + panic(r) } }() for _, v := range shopList { @@ -145,6 +145,7 @@ func GetAndStoreCitiesShops(ctx *jxcontext.Context, vendorIDs []int, cityCodeLis if err != nil { dao.Rollback(db) } else { + hint = utils.Int2Str(len(shopList)) dao.Commit(db) } } @@ -152,7 +153,12 @@ func GetAndStoreCitiesShops(ctx *jxcontext.Context, vendorIDs []int, cityCodeLis return nil, nil // 强制继续 }, len(cityCodeList)) tasksch.ManageTask(task).Run() - return task.GetID(), err + if !isAsync { + _, err = task.GetResult(0) + } else { + hint = task.GetID() + } + return hint, err } func RefreshPageStore(ctx *jxcontext.Context) (err error) { diff --git a/controllers/net_spider.go b/controllers/net_spider.go index 8919d59d4..38926cacf 100644 --- a/controllers/net_spider.go +++ b/controllers/net_spider.go @@ -18,6 +18,7 @@ type NetSpiderController struct { // @Param cityCodes formData string false "城市列表,缺省为后台启用了的城市" // @Param radius formData int false "区域半径(市或街道的半径会自动增加或缩小),单位为米,缺省8000米" // @Param gridWith formData int false "网格大小,单位为米,缺省为2000米" +// @Param isAsync formData bool false "是否异步" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetAndStoreCitiesShops [post] @@ -26,7 +27,7 @@ func (c *NetSpiderController) GetAndStoreCitiesShops() { var vendorIDs, cityCodes []int err = jxutils.Strings2Objs(params.VendorIDs, &vendorIDs, params.CityCodes, &cityCodes) if err == nil { - retVal, err = netspider.GetAndStoreCitiesShops(params.Ctx, vendorIDs, cityCodes, params.Radius, params.GridWith) + retVal, err = netspider.GetAndStoreCitiesShops(params.Ctx, vendorIDs, cityCodes, params.Radius, params.GridWith, params.IsAsync) } return retVal, "", err })