/// <summary> /// 获取餐饮平台聚合门店 /// </summary> /// <param name="param"></param> /// <returns></returns> public Jinher.AMP.BTP.Deploy.CustomDTO.NStoreSDTO GetCateringPlatformStoreExt(StoreLocationParam param) { if (param == null) { return(null); } else if (param.AppId == Guid.Empty) { return(null); } else if (param.Longitude > 180 || param.Longitude < -180) { return(null); } else if (param.Latitude > 90 || param.Latitude < -90) { return(null); } if (param.CurrentPageIndex < 1) { param.CurrentPageIndex = 1; } if (param.PageSize <= 0) { param.PageSize = 20; } GeoNearResult <StoreMgDTO> storeList; //if (JAP.Cache.GlobalCacheWrapper.ContainsCache("StoreFromMongo", "BTPArea")) //{ // storeList = (GeoNearResult<StoreMgDTO>)JAP.Cache.GlobalCacheWrapper.GetDataCache("StoreFromMongo", "BTPArea"); // int cnt = 0; // if (storeList != null) // cnt = storeList.Hits.Count(); // LogHelper.Info("Get_StoreFromMongo___数量:"+cnt); //} //else //{ List <Guid> pavilionApp = GetPavilionApp(new ZPH.Deploy.CustomDTO.QueryPavilionAppParam { Id = param.AppId, pageIndex = 1, pageSize = int.MaxValue }); var queryList = new List <IMongoQuery>(); queryList.Add(Query <StoreMgDTO> .Where(c => pavilionApp.Contains(c.AppId))); storeList = MongoCollections.Store.GeoNear(Query.And(queryList), (double)param.Longitude, (double)param.Latitude, int.MaxValue); //JAP.Cache.GlobalCacheWrapper.AddCache("StoreFromMongo", storeList, 300, "BTPArea"); var storeMgs = storeList.Hits.Skip((param.CurrentPageIndex - 1) * param.PageSize).Take(param.PageSize).ToList(); NStoreSDTO nsr = new NStoreSDTO(); if (storeMgs.Any()) { List <StoreSDTO> srList = storeMgs.ConvertAll <StoreSDTO>(MongoToDto2); List <string> proviences = srList.Select(s => s.Province).Distinct().ToList(); nsr.Proviences = proviences; nsr.Stroes = srList; } return(nsr); }
// private static MongoCollection<StoreMgDTO> _collection; //static StoreSV() //{ // var mm = MongoManager.getDB(); // _collection = mm.GetCollection<StoreMgDTO>(MongoKeyConst.CollectionName); // var geoindexMapLocation = IndexKeys<StoreMgDTO>.GeoSpatial(c => c.Location); // _collection.EnsureIndex(geoindexMapLocation, IndexOptions.SetGeoSpatialRange(0, 300)); //} /// <summary> /// 获取门店 /// </summary> /// <param name="appId">appId</param> /// <param name="pageIndex">查询第几页的数据</param> /// <param name="pageSize">每页的记录数</param> /// <returns></returns> public Jinher.AMP.BTP.Deploy.CustomDTO.NStoreSDTO GetStoreExt(System.Guid appId, int pageIndex, int pageSize) { pageSize = pageSize == 0 ? 10 : pageSize; NStoreSDTO storedto = new NStoreSDTO(); var storeQuery = Query <StoreMgDTO> .Where(c => c.AppId == appId); var temp1 = MongoCollections.Store.FindAs <StoreMgDTO>(storeQuery); List <string> provincelist = temp1.Select(n => n.Province).Distinct().ToList(); storedto.Proviences = provincelist; List <StoreSDTO> slist = temp1.ToList().ConvertAll(MongoToDto); storedto.Stroes = slist; return(storedto); }
/// <summary> /// 获取门店列表(按用户当前位置到门店的距离排序) /// <para>Service Url: http://testbtp.iuoooo.com/Jinher.AMP.BTP.SV.StoreSV.svc/GetStoreByLocation /// </para> /// </summary> /// <param name="slp">参数实体类</param> /// <returns></returns> public Jinher.AMP.BTP.Deploy.CustomDTO.NStoreSDTO GetStoreByLocationExt(StoreLocationParam slp) { if (slp == null) { return(null); } else if (slp.AppId == Guid.Empty) { return(null); } else if (slp.Longitude > 180 || slp.Longitude < -180) { return(null); } else if (slp.Latitude > 90 || slp.Latitude < -90) { return(null); } if (slp.CurrentPageIndex < 1) { slp.CurrentPageIndex = 1; } if (slp.PageSize <= 0) { slp.PageSize = 20; } //GeoNearOptions.SetSpherical var queryList = new List <IMongoQuery>(); queryList.Add(Query <StoreMgDTO> .Where(c => c.AppId == slp.AppId)); GeoNearResult <StoreMgDTO> ss = MongoCollections.Store.GeoNear(Query.And(queryList), (double)slp.Longitude, (double)slp.Latitude, int.MaxValue); var storeMgs = ss.Hits.Skip((slp.CurrentPageIndex - 1) * slp.PageSize).Take(slp.PageSize).ToList(); NStoreSDTO nsr = new NStoreSDTO(); if (storeMgs.Any()) { List <StoreSDTO> srList = storeMgs.ConvertAll <StoreSDTO>(MongoToDto2); List <string> proviences = srList.Select(s => s.Province).Distinct().ToList(); nsr.Proviences = proviences; nsr.Stroes = srList; } return(nsr); }