Esempio n. 1
0
        public override AddNearCircleInfoResponseBody ExecuteCore()
        {
            AddNearCircleInfoResponseBody res = new AddNearCircleInfoResponseBody();

            using (HWLEntities db = new HWLEntities())
            {
                t_near_circle model = new t_near_circle()
                {
                    user_id       = this.request.UserId,
                    content_info  = this.request.Content,
                    content_type  = GetContentType(),
                    link_image    = this.request.LinkImage,
                    link_title    = this.request.LinkTitle,
                    link_url      = this.request.LinkUrl,
                    lat           = this.request.Lat,
                    lon           = this.request.Lon,
                    id            = 0,
                    pos_id        = this.request.PosId,
                    pos_desc      = this.request.PosDesc,
                    comment_count = 0,
                    image_count   = this.request.Images != null ? this.request.Images.Count : 0,
                    like_count    = 0,
                    publish_time  = DateTime.Now,
                    update_time   = DateTime.Now
                };
                db.t_near_circle.Add(model);
                db.SaveChanges();

                res.NearCircleId = model.id;
                res.ContentType  = model.content_type;
                res.PublishTime  = model.publish_time;

                //向redis中添加信息的位置数据
                if (res.NearCircleId > 0)
                {
                    bool succ = new NearCircleAction().CreateNearCirclePos(res.NearCircleId, this.request.Lon, this.request.Lat);
                    if (!succ)//如果添加失败,则将数据库中已经添加的数据删除
                    {
                        db.t_near_circle.Remove(model);
                        db.SaveChanges();
                        throw new Exception("发布附近信息失败");
                    }
                    else
                    {
                        if (this.request.Images != null && this.request.Images.Count > 0)
                        {
                            //添加图片
                            List <t_near_circle_image> imgModels = new List <t_near_circle_image>();
                            this.request.Images.ForEach((i) =>
                            {
                                if (string.IsNullOrEmpty(i.Url))
                                {
                                    return;
                                }
                                imgModels.Add(new t_near_circle_image()
                                {
                                    near_circle_id      = model.id,
                                    near_circle_user_id = model.user_id,
                                    image_url           = i.Url,
                                    height = i.Height,
                                    width  = i.Width
                                });
                            });

                            if (imgModels == null || imgModels.Count <= 0)
                            {
                                return(res);
                            }

                            try
                            {
                                db.t_near_circle_image.AddRange(imgModels);
                                db.SaveChanges();
                            }
                            catch (Exception)
                            {
                                //可以忽略这个错误
                            }
                        }
                    }
                }
            }
            return(res);
        }
Esempio n. 2
0
        public override GetNearCircleInfosResponseBody ExecuteCore()
        {
            GetNearCircleInfosResponseBody res = new GetNearCircleInfosResponseBody();

            if (this.request.Lat < 0 && this.request.Lon < 0)
            {
                return(res);
            }

            List <int> geoIdList = new NearCircleAction().GetNearCircleIds(this.request.Lon, this.request.Lat);

            if (geoIdList == null || geoIdList.Count <= 0)
            {
                return(res);
            }

            List <int> ids = null;

            if (this.request.MinNearCircleId > 0)
            {
                ids = geoIdList.Where(g => g < this.request.MinNearCircleId).Take(this.request.Count).ToList();
            }
            else
            {
                ids = geoIdList.Take(this.request.Count).ToList();
                //ids = geoIdList.Skip((this.request.PageIndex - 1) * this.request.Count).Take(this.request.Count).ToList();
            }
            //if (this.request.MaxNearCircleId > 0)
            //{
            //    ids = geoIdList.Where(g => g > this.request.MaxNearCircleId).Take(this.request.Count).ToList();
            //}
            //else if (this.request.MinNearCircleId > 0)
            //{
            //    ids = geoIdList.Where(g => g < this.request.MinNearCircleId).Take(this.request.Count).ToList();
            //}
            //else
            //{
            //    ids = geoIdList.Take(this.request.Count).ToList();
            //}
            if (ids == null || ids.Count <= 0)
            {
                return(res);
            }

            db = new HWLEntities();

            var list = db.t_near_circle.Where(c => ids.Contains(c.id)).OrderByDescending(c => c.id).ToList();

            if (list == null || list.Count <= 0)
            {
                return(res);
            }

            if (this.request.NearCircleMatchInfos != null && this.request.NearCircleMatchInfos.Count > 0)
            {
                list.RemoveAll(r => this.request.NearCircleMatchInfos.Exists(c => c.NearCircleId == r.id && c.UpdateTime == GenericUtility.FormatDate2(r.update_time)));
            }

            res.NearCircleInfos = list.ConvertAll(c => new NearCircleInfo
            {
                NearCircleId = c.id,
                CommentCount = c.comment_count,
                Content      = c.content_info,
                ContentType  = c.content_type,
                PosDesc      = c.pos_desc,
                //Images = null,
                LikeCount     = c.like_count,
                LinkImage     = c.link_image,
                LinkTitle     = c.link_title,
                LinkUrl       = c.link_url,
                PublishTime   = GenericUtility.FormatDate(c.publish_time),
                UpdateTime    = GenericUtility.FormatDate2(c.update_time),
                PublishUserId = c.user_id,
            });

            BindInfo(res.NearCircleInfos);

            return(res);
        }