Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        // 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);
        }
Ejemplo n.º 3
0
        /// <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);
        }