private void AddNearCircle()
        {
            var           db    = HWLDBContext.GetDBContext(ShareConfiguration.DBConnectionString);
            t_near_circle model = new t_near_circle()
            {
                user_id       = this.userId,
                content_info  = this.messageModel.Content,
                content_type  = CustomerEnumDesc.GetCircleContentType(this.messageModel.Content, null, null, this.messageModel.ImageUrls?.Count ?? 0),
                lat           = this.positionModel.Lat,
                lon           = this.positionModel.Lon,
                pos_desc      = this.positionModel.PosDetails,
                pos_id        = 0,
                image_urls    = CircleImageParser.GetImageString(this.messageModel.ImageUrls),
                comment_count = 0,
                image_count   = 0,
                like_count    = 0,
                publish_time  = DateTime.Now,
                update_time   = DateTime.Now
            };

            db.t_near_circle.Add(model);
            db.SaveChanges();

            NearCircleStore.CreateNearCirclePos(model.id, model.lon, model.lat);

            //send im message to near users
            //... ...
        }
Beispiel #2
0
        public override GetCircleDetailResponseBody ExecuteCore()
        {
            GetCircleDetailResponseBody res = new GetCircleDetailResponseBody();

            var model = db.t_circle.Where(c => c.id == this.request.CircleId).FirstOrDefault();

            if (model == null)
            {
                return(res);
            }
            if (this.request.UpdateTime != null && this.request.UpdateTime == GenericUtility.FormatDate2(model.update_time))
            {
                return(res);
            }

            res.CircleInfo = new CircleInfo()
            {
                CircleId      = model.id,
                CommentCount  = model.comment_count,
                CircleContent = model.content_info,
                ContentType   = model.content_type,
                PosDesc       = model.pos_desc,
                Images        = CircleImageParser.GetImages(model.image_urls),
                ImageCount    = model.image_count,
                LikeCount     = model.like_count,
                LinkImage     = model.link_image,
                LinkTitle     = model.link_title,
                LinkUrl       = model.link_url,
                PublishTime   = GenericUtility.FormatDate(model.publish_time),
                UpdateTime    = GenericUtility.FormatDate2(model.update_time),
                PublishUserId = model.user_id,
                CommentInfos  = CircleUtility.GetComments(db, this.request.UserId, model.id),
                LikeInfos     = CircleUtility.GetLikes(this.request.UserId, model.id)
            };

            BindInfo(res.CircleInfo);

            return(res);
        }
Beispiel #3
0
        public override GetNearCircleInfosResponseBody ExecuteCore()
        {
            GetNearCircleInfosResponseBody res = new GetNearCircleInfosResponseBody();

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

            List <int> geoIdList = Redis.NearCircleStore.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);
            }

            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        = CircleImageParser.GetImages(c.image_urls),
                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);
        }
Beispiel #4
0
        public override AddNearCircleInfoResponseBody ExecuteCore()
        {
            AddNearCircleInfoResponseBody res = new AddNearCircleInfoResponseBody();
            t_near_circle model = new t_near_circle()
            {
                user_id       = this.request.UserId,
                content_info  = this.request.Content,
                content_type  = CustomerEnumDesc.GetCircleContentType(this.request.Content, this.request.LinkUrl, this.request.LinkTitle, this.request.Images?.Count ?? 0),
                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,
                image_urls    = CircleImageParser.GetImageString(this.request.Images),
                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 = Redis.NearCircleStore.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);
        }
Beispiel #5
0
        public override GetUserCircleInfosResponseBody ExecuteCore()
        {
            GetUserCircleInfosResponseBody res = new GetUserCircleInfosResponseBody();

            var postUser = db.t_user.Where(u => u.id == this.request.ViewUserId).FirstOrDefault();

            if (postUser == null)
            {
                throw new Exception("用户不存在");
            }
            res.ViewUserId    = postUser.id;
            res.ViewUserImage = postUser.head_image;
            res.ViewUserName  = postUser.name;
            //res.CircleBackImage = postUser.circle_back_image;
            //res.LifeNotes = postUser.life_notes;

            IQueryable <t_circle> query = db.t_circle.OrderByDescending(r => r.id);

            if (this.request.ViewUserId > 0)
            {
                query = query.Where(q => q.user_id == this.request.ViewUserId);
            }
            if (this.request.MinCircleId > 0)
            {
                query = query.Where(q => q.id < this.request.MinCircleId).Take(this.request.Count);
            }
            if (this.request.Count > 0)
            {
                query = query.Take(this.request.Count);
            }

            var list = query.ToList();

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

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

            res.CircleInfos = list.ConvertAll(q => new CircleInfo
            {
                CircleId      = q.id,
                ContentType   = q.content_type,
                CircleContent = q.content_info,
                CommentCount  = q.comment_count,
                ImageCount    = q.image_count,
                Lat           = q.lat,
                LikeCount     = q.like_count,
                LinkImage     = q.link_image,
                LinkTitle     = q.link_title,
                LinkUrl       = q.link_url,
                Lon           = q.lon,
                Images        = CircleImageParser.GetImages(q.image_urls),
                PublishUserId = q.user_id,
                PublishTime   = GenericUtility.FormatDate(q.publish_time),
                UpdateTime    = GenericUtility.FormatDate2(q.update_time),

                //IsLike = false,
                //CommentInfos = null,
                //LikeUserInfos = null,
                //PostUserInfo = null,
            });

            GetCircleInfos.BindCircleInfos(db, this.request.ViewUserId, res.CircleInfos);

            return(res);
        }
Beispiel #6
0
        public override AddCircleInfoResponseBody ExecuteCore()
        {
            AddCircleInfoResponseBody res = new AddCircleInfoResponseBody();
            t_circle model = new t_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,
                image_urls    = CircleImageParser.GetImageString(this.request.Images),
                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_circle.Add(model);
            db.SaveChanges();

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

            //if (res.CircleId > 0)
            //{
            //    if (this.request.Images != null && this.request.Images.Count > 0)
            //    {
            //        List<t_circle_image> imgModels = new List<t_circle_image>();
            //        this.request.Images.ForEach((i) =>
            //        {
            //            if (string.IsNullOrEmpty(i.Url)) return;
            //            imgModels.Add(new t_circle_image()
            //            {
            //                circle_id = model.id,
            //                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_circle_image.AddRange(imgModels);
            //            db.SaveChanges();
            //        }
            //        catch (Exception)
            //        {
            //        }
            //    }
            //}
            return(res);
        }