diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index bf07170b6..b931e6a75 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -4219,3 +4219,141 @@ func UpdateVendorStoreBussinessStatus(ctx *jxcontext.Context, storeID, vendorID, err = handler.UpdateStoreLineStatus(ctx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID, status) return err } + +func QueryPageStores2(db *dao.DaoDB, pageSize, offset int, keyword string, vendorStoreID string, vendorID, cityCode, districtCode int, tel string, + minShopScore float32, minRecentOrderNum, minSkuCount int, lng1, lat1, lng2, lat2 float64) (pagedInfo *model.PagedInfo, err error) { + sqlJD := ` + SELECT name, 0 vendor_id, wmpoiid vendor_store_id, orgcode org_code, 1 vendor_status, address, phone tel1, pj shop_score, month_sales_tip recent_order_num, + bak_info city_name + FROM jingdong_showd + ` + sqlEbai := ` + + ` + sqlMT := ` + + ` + sql := ` + SELECT SQL_CALC_FOUND_ROWS + t1.*, t2.code city_code + FROM ( + ` + if vendorID == -1 { + sql += sqlJD + //+ ` UNION` + //sql += sqlEbai + ` UNION` + //sql += sqlMT + } else { + switch vendorID { + case model.VendorIDJD: + sql += sqlJD + case model.VendorIDMTWM: + sql += sqlMT + case model.VendorIDEBAI: + sql += sqlEbai + } + } + sql += ` + )t1 + LEFT JOIN place t2 ON t2.name = t1.city_name AND t2.level = 2 + WHERE 1 = 1 + ` + sqlParams := []interface{}{} + if vendorStoreID != "" { + sql += " AND t1.vendor_store_id = ?" + sqlParams = append(sqlParams, vendorStoreID) + } + if vendorID != -1 { + sql += " AND t1.vendor_id = ?" + sqlParams = append(sqlParams, vendorID) + } + if cityCode != 0 { + sql += " AND t1.city_code = ?" + sqlParams = append(sqlParams, cityCode) + } + if districtCode != 0 { + sql += " AND t1.district_code = ?" + sqlParams = append(sqlParams, districtCode) + } + if tel != "" { + sql += " AND t1.tel1 = ?" + sqlParams = append(sqlParams, tel) + } + if minShopScore > 0 { + sql += " AND t1.shop_score >= ?" + sqlParams = append(sqlParams, minShopScore) + } + if minRecentOrderNum > 0 { + sql += " AND t1.recent_order_num >= ?" + sqlParams = append(sqlParams, minRecentOrderNum) + } + //if minSkuCount > 0 { + // sql += " AND t1.sku_count >= ?" + // sqlParams = append(sqlParams, minSkuCount) + //} + //if lng1 > 0 { + // sql += " AND t1.lng >= ? AND t1.lat >= ? AND t1.lng <= ? AND t1.lat <= ?" + // sqlParams = append(sqlParams, lng1, lat1, lng2, lat2) + //} + if keyword != "" { + keywordLike := "%" + keyword + "%" + sql += " AND (t1.name LIKE ? OR t1.tel1 LIKE ? OR t1.tel2 LIKE ? OR t1.org_code LIKE ? OR t1.address LIKE ? OR t2.name LIKE ? OR t3.name LIKE ? OR t1.licence_code LIKE ?" + sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike) + sql += ")" + } + sql += ` + ORDER BY t1.recent_order_num DESC + LIMIT ? OFFSET ? + ` + pageSize = jxutils.FormalizePageSize(pageSize) + offset = jxutils.FormalizePageOffset(offset) + sqlParams = append(sqlParams, pageSize, offset) + var shopList []*dao.PageShopWithPlaceName + txDB, _ := dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db, txDB) + panic(r) + } + }() + fmt.Println(sql) + fmt.Println(sqlParams) + if err = dao.GetRowsTx(txDB, &shopList, sql, sqlParams...); err == nil { + pagedInfo = &model.PagedInfo{ + TotalCount: dao.GetLastTotalRowCount2(db, txDB), + //Data: shopList, + } + dao.Commit(db, txDB) + var newShopList []*dao.PageShopWithPlaceName + task := tasksch.NewParallelTask("", tasksch.NewParallelConfig().SetIsContinueWhenError(true), nil, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + v := batchItemList[0].(*dao.PageShopWithPlaceName) + if v.Address != "" && v.CityName != "" { + result, _ := api.AutonaviAPI.GetCoordinateFromAddressByPageAll(v.Address, v.CityCode) + lng, lat := result.Lng, result.Lat + v.DistrictName = result.AdName + v.Lng, v.Lat = lng, lat + if lng1 > 0 { + if !(lng >= lng1 && lat >= lat1 && lng <= lng2 && lat <= lat2) { + retVal = []*dao.PageShopWithPlaceName{v} + } + } else { + retVal = []*dao.PageShopWithPlaceName{v} + } + retVal = []*dao.PageShopWithPlaceName{v} + } else { + retVal = []*dao.PageShopWithPlaceName{v} + } + return retVal, err + }, shopList) + tasksch.HandleTask(task, nil, true).Run() + result, _ := task.GetResult(0) + for _, v := range result { + newShopList = append(newShopList, v.(*dao.PageShopWithPlaceName)) + } + pagedInfo.Data = newShopList + } else { + dao.Rollback(db, txDB) + } + return pagedInfo, err +} diff --git a/business/model/dao/page_store.go b/business/model/dao/page_store.go index 177a79d8e..b343d23f0 100644 --- a/business/model/dao/page_store.go +++ b/business/model/dao/page_store.go @@ -1,12 +1,8 @@ package dao import ( - "fmt" "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" - "git.rosy.net.cn/jx-callback/globals/api" ) type PageShopWithPlaceName struct { @@ -103,141 +99,3 @@ func QueryPageStores(db *DaoDB, pageSize, offset int, keyword string, vendorStor } return pagedInfo, err } - -func QueryPageStores2(db *DaoDB, pageSize, offset int, keyword string, vendorStoreID string, vendorID, cityCode, districtCode int, tel string, - minShopScore float32, minRecentOrderNum, minSkuCount int, lng1, lat1, lng2, lat2 float64) (pagedInfo *model.PagedInfo, err error) { - sqlJD := ` - SELECT name, 0 vendor_id, wmpoiid vendor_store_id, orgcode org_code, 1 vendor_status, address, phone tel1, pj shop_score, month_sales_tip recent_order_num, - bak_info city_name - FROM jingdong_showd - ` - sqlEbai := ` - - ` - sqlMT := ` - - ` - sql := ` - SELECT SQL_CALC_FOUND_ROWS - t1.*, t2.code city_code - FROM ( - ` - if vendorID == -1 { - sql += sqlJD - //+ ` UNION` - //sql += sqlEbai + ` UNION` - //sql += sqlMT - } else { - switch vendorID { - case model.VendorIDJD: - sql += sqlJD - case model.VendorIDMTWM: - sql += sqlMT - case model.VendorIDEBAI: - sql += sqlEbai - } - } - sql += ` - )t1 - LEFT JOIN place t2 ON t2.name = t1.city_name AND t2.level = 2 - WHERE 1 = 1 - ` - sqlParams := []interface{}{} - if vendorStoreID != "" { - sql += " AND t1.vendor_store_id = ?" - sqlParams = append(sqlParams, vendorStoreID) - } - if vendorID != -1 { - sql += " AND t1.vendor_id = ?" - sqlParams = append(sqlParams, vendorID) - } - if cityCode != 0 { - sql += " AND t1.city_code = ?" - sqlParams = append(sqlParams, cityCode) - } - if districtCode != 0 { - sql += " AND t1.district_code = ?" - sqlParams = append(sqlParams, districtCode) - } - if tel != "" { - sql += " AND t1.tel1 = ?" - sqlParams = append(sqlParams, tel) - } - if minShopScore > 0 { - sql += " AND t1.shop_score >= ?" - sqlParams = append(sqlParams, minShopScore) - } - if minRecentOrderNum > 0 { - sql += " AND t1.recent_order_num >= ?" - sqlParams = append(sqlParams, minRecentOrderNum) - } - //if minSkuCount > 0 { - // sql += " AND t1.sku_count >= ?" - // sqlParams = append(sqlParams, minSkuCount) - //} - //if lng1 > 0 { - // sql += " AND t1.lng >= ? AND t1.lat >= ? AND t1.lng <= ? AND t1.lat <= ?" - // sqlParams = append(sqlParams, lng1, lat1, lng2, lat2) - //} - if keyword != "" { - keywordLike := "%" + keyword + "%" - sql += " AND (t1.name LIKE ? OR t1.tel1 LIKE ? OR t1.tel2 LIKE ? OR t1.org_code LIKE ? OR t1.address LIKE ? OR t2.name LIKE ? OR t3.name LIKE ? OR t1.licence_code LIKE ?" - sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike) - sql += ")" - } - sql += ` - ORDER BY t1.recent_order_num DESC - LIMIT ? OFFSET ? - ` - pageSize = jxutils.FormalizePageSize(pageSize) - offset = jxutils.FormalizePageOffset(offset) - sqlParams = append(sqlParams, pageSize, offset) - var shopList []*PageShopWithPlaceName - txDB, _ := Begin(db) - defer func() { - if r := recover(); r != nil { - Rollback(db, txDB) - panic(r) - } - }() - fmt.Println(sql) - fmt.Println(sqlParams) - if err = GetRowsTx(txDB, &shopList, sql, sqlParams...); err == nil { - pagedInfo = &model.PagedInfo{ - TotalCount: GetLastTotalRowCount2(db, txDB), - //Data: shopList, - } - Commit(db, txDB) - var newShopList []*PageShopWithPlaceName - task := tasksch.NewParallelTask("刷新商品前缀水印图", tasksch.NewParallelConfig().SetIsContinueWhenError(true), jxcontext.AdminCtx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - v := batchItemList[0].(*PageShopWithPlaceName) - if v.Address != "" && v.CityName != "" { - result, _ := api.AutonaviAPI.GetCoordinateFromAddressByPageAll(v.Address, v.CityCode) - lng, lat := result.Lng, result.Lat - v.DistrictName = result.AdName - v.Lng, v.Lat = lng, lat - if lng1 > 0 { - if !(lng >= lng1 && lat >= lat1 && lng <= lng2 && lat <= lat2) { - retVal = []*PageShopWithPlaceName{v} - } - } else { - retVal = []*PageShopWithPlaceName{v} - } - retVal = []*PageShopWithPlaceName{v} - } else { - retVal = []*PageShopWithPlaceName{v} - } - return retVal, err - }, shopList) - tasksch.HandleTask(task, nil, true).Run() - result, _ := task.GetResult(0) - for _, v := range result { - newShopList = append(newShopList, v.(*PageShopWithPlaceName)) - } - pagedInfo.Data = newShopList - } else { - Rollback(db, txDB) - } - return pagedInfo, err -} diff --git a/controllers/net_spider.go b/controllers/net_spider.go index 302856367..c8a80f7e3 100644 --- a/controllers/net_spider.go +++ b/controllers/net_spider.go @@ -2,6 +2,7 @@ package controllers import ( "fmt" + "git.rosy.net.cn/jx-callback/business/jxstore/cms" "sort" "git.rosy.net.cn/baseapi/utils" @@ -82,7 +83,7 @@ func (c *NetSpiderController) QueryPageStores() { offset = 0 pageSize = model.UnlimitedPageSize } - pagedInfo, err := dao.QueryPageStores2(dao.GetDB(), pageSize, offset, params.Keyword, params.VendorStoreID, params.VendorID, + pagedInfo, err := cms.QueryPageStores2(dao.GetDB(), pageSize, offset, params.Keyword, params.VendorStoreID, params.VendorID, params.CityCode, params.DistrictCode, params.Tel, float32(params.MinShopScore), params.MinRecentOrderNum, params.MinSkuCount, lng1, lat1, lng2, lat2) if err == nil {