diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 2d03e0e44..b163747c8 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -4369,12 +4369,12 @@ func RefreshPageStore() { INSERT INTO page_store (created_at,updated_at,last_operator,vendor_id,vendor_store_id,vendor_store_name,address,city_name,org_code,lng,lat) SELECT NOW(),NOW(),'jxadmin',t1.* FROM ( ( - SELECT 0, a.wmpoiid, a.name, ISNULL(a.address), a.bak_info, a.orgcode, a.lng, a.lat + SELECT 0, a.wmpoiid, a.name, a.address, a.bak_info, a.orgcode, a.lng, a.lat FROM jingdong_showd a ) UNION ALL ( - SELECT 1, a.wmpoiid, a.name, ISNULL(a.address), ISNULL(a.city_name), '', a.lng, a.lat + SELECT 1, a.wmpoiid, a.name, a.address, a.city_name, '', a.lng, a.lat FROM meituan_showd a ) )t1 @@ -4528,51 +4528,94 @@ type QueryPageSkusResult struct { CityCode int `json:"cityCode"` } -func QueryPageSkus(ctx *jxcontext.Context, vendorIDs []int, vendorStoreIDs []string, keyword string, cityCode int, lng, lat float64, radius, sortType, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { +func QueryPageSkus(ctx *jxcontext.Context, vendorID int, vendorStoreIDs []string, keyword string, cityCode int, lng, lat, lng2, lat2 float64, radius, sortType, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { var ( db = dao.GetDB() results []*QueryPageSkusResult ) db.Db = orm.NewOrmUsingDB("c4beta") sqlParams := []interface{}{} + sqlJD := ` + SELECT 0 vendor_id, b.orgcode org_code, a.wmpoiid store_id, b.name store_name, a.Base sku_id, a.name sku_name, a.month_saled month_sales, + a.basic_price, b.address, '' parameter, b.bak_info city_name, b.lng, b.lat + FROM jingdong_foodlist a + LEFT JOIN jingdong_showd b ON a.wmpoiid = b.wmpoiid + WHERE 1 = 1 + ` + sqlEbai := ` + + ` + sqlMT := ` + SELECT 1 vendor_id, '' org_code, a.wmpoiid store_id, b.name store_name, '' sku_id, a.name sku_name, a.month_saled month_sales, + a.min_price basic_price, b.address, a.unit parameter, b.city_name, b.lng, b.lat + FROM meituan_foodlist a + LEFT JOIN meituan_showd b ON a.wmpoiid = b.wmpoiid + WHERE 1 = 1 + ` sql := ` - SELECT SQL_CALC_FOUND_ROWS - a.vendor_id, b.org_code, a.vendor_store_id store_id, b.vendor_store_name store_name, a.vendor_sku_id sku_id, a.vendor_sku_name sku_name, a.month_saled month_sales, - a.sale_price basic_price, b.address, a.unit parameter, b.city_name, - c.code city_code - FROM page_sku a - LEFT JOIN page_store b ON a.vendor_id = b.vendor_id AND a.vendor_store_id = b.vendor_store_id - LEFT JOIN place c ON c.name = b.city_name - WHERE 1 = 1 + SELECT SQL_CALC_FOUND_ROWS + t1.* + FROM ( + ` + if vendorID == -1 { + //sql += sqlEbai + ` UNION` + if lng > 0 { + sqlJD += " AND b.lng >= ? AND b.lat >= ? AND b.lng <= ? AND b.lat <= ?" + sqlParams = append(sqlParams, lng, lat, lng2, lat2) + } + if lng > 0 { + sqlMT += " AND b.lng >= ? AND b.lat >= ? AND b.lng <= ? AND b.lat <= ?" + sqlParams = append(sqlParams, lng, lat, lng2, lat2) + } + sql += sqlJD + ` UNION` + sql += sqlMT + } else { + switch vendorID { + case model.VendorIDJD: + if lng > 0 { + sqlJD += " AND b.lng >= ? AND b.lat >= ? AND b.lng <= ? AND b.lat <= ?" + sqlParams = append(sqlParams, lng, lat, lng2, lat2) + } + sql += sqlJD + case model.VendorIDMTWM: + if lng > 0 { + sqlMT += " AND b.lng >= ? AND b.lat >= ? AND b.lng <= ? AND b.lat <= ?" + sqlParams = append(sqlParams, lng, lat, lng2, lat2) + } + sql += sqlMT + case model.VendorIDEBAI: + sql += sqlEbai + } + } + sql += ` )t1 + LEFT JOIN place t2 ON t2.name = t1.city_name + WHERE 1 = 1 ` if keyword != "" { keywordLike := "%" + keyword + "%" - sql += " AND t1.vendor_sku_name LIKE ?" + sql += " AND t1.sku_name LIKE ?" sqlParams = append(sqlParams, keywordLike) } if len(vendorStoreIDs) > 0 { - sql += " AND a.vendor_store_id IN (" + dao.GenQuestionMarks(len(vendorStoreIDs)) + ")" + sql += " AND t1.store_id IN (" + dao.GenQuestionMarks(len(vendorStoreIDs)) + ")" sqlParams = append(sqlParams, vendorStoreIDs) } - if len(vendorIDs) > 0 { - sql += " AND a.vendor_id IN (" + dao.GenQuestionMarks(len(vendorIDs)) + ")" - sqlParams = append(sqlParams, vendorIDs) - } if cityCode > 0 { - sql += " AND c.code = ?" + sql += " AND t2.code = ?" sqlParams = append(sqlParams, cityCode) } - if radius > 0 { - sql += " AND ROUND(getDistance(?, ?, b.lng, b.lat) * 1000) < ?" - sqlParams = append(sqlParams, lng, lat, radius) - } + + //if radius > 0 { + // sql += " AND ROUND(t1.distance * 1000) < ?" + // sqlParams = append(sqlParams, radius) + //} if sortType != 0 { switch math.Abs(float64(sortType)) { case 1: if sortType < 0 { - sql += " ORDER BY a.month_saled DESC" + sql += " ORDER BY t1.month_sales DESC" } else { - sql += " ORDER BY a.month_saled" + sql += " ORDER BY t1.month_sales" } } } diff --git a/controllers/net_spider.go b/controllers/net_spider.go index 54ae0c490..e6f892f3b 100644 --- a/controllers/net_spider.go +++ b/controllers/net_spider.go @@ -153,7 +153,7 @@ func (c *NetSpiderController) RefreshPageShops() { // @Title 参考信息,商品搜索 // @Description 参考信息,商品搜索 // @Param token header string true "认证token" -// @Param vendorIDs query string false "平台IDs" +// @Param vendorID query int false "平台ID" // @Param vendorStoreIDs query string false "门店IDs" // @Param keyword query string false "关键字" // @Param cityCode query int false "城市" @@ -169,9 +169,26 @@ func (c *NetSpiderController) RefreshPageShops() { func (c *NetSpiderController) QueryPageSkus() { c.callQueryPageSkus(func(params *tNetspiderQueryPageSkusParams) (retVal interface{}, errCode string, err error) { var vendorStoreIDs []string - var vendorIDs []int - jxutils.Strings2Objs(params.VendorStoreIDs, &vendorStoreIDs, params.VendorIDs, &vendorIDs) - retVal, err = cms.QueryPageSkus(params.Ctx, vendorIDs, vendorStoreIDs, params.Keyword, params.CityCode, utils.Str2Float64WithDefault(params.Lng, 0), utils.Str2Float64WithDefault(params.Lat, 0), params.Radius, params.SortType, params.Offset, params.PageSize) + jxutils.Strings2Objs(params.VendorStoreIDs, &vendorStoreIDs) + var lng, lat, lng1, lat1, lng2, lat2 float64 + params.Offset = jxutils.FormalizePageOffset(params.Offset) + params.PageSize = jxutils.FormalizePageSize(params.PageSize) + offset := params.Offset + pageSize := params.PageSize + if params.Radius > 0 { + lng = utils.Str2Float64WithDefault(params.Lng, 0) + lat = utils.Str2Float64WithDefault(params.Lat, 0) + if lng == 0 || lat == 0 { + return nil, "", fmt.Errorf("坐标信息%s,%s不合法", params.Lng, params.Lat) + } + lng2, _ = jxutils.ConvertDistanceToLogLat(lng, lat, float64(params.Radius), 90) + _, lat2 = jxutils.ConvertDistanceToLogLat(lng, lat, float64(params.Radius), 0) + lng1 = lng - (lng2 - lng) + lat1 = lat - (lat2 - lat) + offset = 0 + pageSize = model.UnlimitedPageSize + } + retVal, err = cms.QueryPageSkus(params.Ctx, params.VendorID, vendorStoreIDs, params.Keyword, params.CityCode, lng1, lat1, lng2, lat2, params.Radius, params.SortType, offset, pageSize) return retVal, "", err }) }