예제 #1
0
 public SearchUser(HWLEntities db, SearchUserRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #2
0
        public override GetCircleCommentsResponseBody ExecuteCore()
        {
            GetCircleCommentsResponseBody res = new GetCircleCommentsResponseBody();

            using (HWLEntities db = new HWLEntities())
            {
                var comments = db.t_circle_comment.Where(c => c.circle_id == this.request.CircleId && c.id > this.request.LastCommentId)
                               .Take(this.request.Count)
                               .Select(c => new
                {
                    Id            = c.id,
                    CircleId      = c.circle_id,
                    CommentUserId = c.com_user_id,
                    ReplyUserId   = c.reply_user_id,
                    Content       = c.com_content,
                    CommentTime   = c.comment_time
                }).OrderBy(c => c.Id).ToList();
                if (comments == null || comments.Count <= 0)
                {
                    return(res);
                }
                res.CircleCommentInfos = new List <CircleCommentInfo>();

                var userIds    = comments.Select(c => c.CommentUserId).Union(comments.Select(c => c.ReplyUserId)).ToList();
                var userList   = db.t_user.Where(i => userIds.Contains(i.id)).Select(i => new { i.id, i.name, i.symbol, i.head_image }).ToList();
                var friendList = db.t_user_friend.Where(f => f.user_id == this.request.UserId && userIds.Contains(f.friend_user_id)).Select(f => new { f.friend_user_id, f.friend_user_remark }).ToList();

                comments.ForEach(f =>
                {
                    CircleCommentInfo model = new CircleCommentInfo()
                    {
                        CommentId        = f.Id,
                        Content          = f.Content,
                        CircleId         = f.CircleId,
                        CommentTime      = f.CommentTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        CommentUserId    = f.CommentUserId,
                        CommentUserImage = null,
                        CommentUserName  = null,
                        ReplyUserId      = f.ReplyUserId,
                        ReplyUserName    = null,
                        ReplyUserImage   = null,
                    };

                    if (userList != null && userList.Count > 0)
                    {
                        if (f.CommentUserId > 0)
                        {
                            var comUser            = userList.Where(u => u.id == f.CommentUserId).FirstOrDefault();
                            string friendRemark    = friendList != null ? friendList.Where(r => r.friend_user_id == f.CommentUserId).Select(r => r.friend_user_remark).FirstOrDefault() : null;
                            model.CommentUserName  = UserUtility.GetShowName(friendRemark, comUser.name);
                            model.CommentUserImage = comUser.head_image;
                        }

                        if (f.ReplyUserId > 0)
                        {
                            var repUser          = userList.Where(u => u.id == f.ReplyUserId).FirstOrDefault();
                            string friendRemark  = friendList != null ? friendList.Where(r => r.friend_user_id == f.ReplyUserId).Select(r => r.friend_user_remark).FirstOrDefault() : null;
                            model.ReplyUserName  = UserUtility.GetShowName(friendRemark, repUser.name);
                            model.ReplyUserImage = repUser.head_image;
                        }
                    }
                    res.CircleCommentInfos.Add(model);
                });
            }

            return(res);
        }
예제 #3
0
        public override UserLoginResponseBody ExecuteCore()
        {
            UserLoginResponseBody res = new UserLoginResponseBody();

            using (HWLEntities db = new HWLEntities())
            {
                IQueryable <t_user> query = db.t_user;

                if (!string.IsNullOrEmpty(this.request.Mobile))
                {
                    query = query.Where(u => u.mobile == this.request.Mobile);
                }
                else
                {
                    query = query.Where(u => u.email == this.request.Email);
                }

                t_user user = query.FirstOrDefault();
                if (user == null)
                {
                    throw new Exception("用户不存在");
                }
                if (user.status != UserStatus.Normal)
                {
                    throw new Exception("用户被禁用");
                }
                if (user.password != this.request.Password)
                {
                    throw new Exception("密码错误");                                        //CommonCs.GetMd5Str32(this.request.Password)
                }
                Redis.UserAction userAction = new Redis.UserAction();
                ////获取用户之前是否已经登录过,如果登录过则需要发送消息通知用户在其它位置登录
                //string oldToken = userAction.GetUserToken(user.id);
                //if (!string.IsNullOrEmpty(oldToken))
                //{
                //    //AndroidChatMessage.SendLogoutMessage(user.id, oldToken, "您的帐号已经在其它位置登录,如果不是您本人操作,建议重新登录后立即更换密码!");
                //}

                //清除用户之前登录用过的TOKEN
                userAction.RemoveUserToken(user.id);
                string userToken = UserUtility.BuildToken(user.id);
                bool   succ      = userAction.SaveUserToken(user.id, userToken);
                if (!succ)
                {
                    throw new Exception("用户登录token生成失败");
                }

                //获取地址信息
                var pos = (from country in db.t_country
                           join province in db.t_province on country.id equals province.country_id
                           join city in db.t_city on province.id equals city.province_id
                           join dist in db.t_district on city.id equals dist.city_id
                           where country.id == user.register_country && province.id == user.register_province && city.id == user.register_city && dist.id == user.register_district
                           select new
                {
                    CountryName = country.name,
                    ProvinceName = province.name,
                    CityName = city.name,
                    DistName = dist.name,
                }).FirstOrDefault();

                List <int> posIdList = new List <int>()
                {
                    user.register_country,
                    user.register_province,
                    user.register_city,
                    user.register_district,
                };

                List <string> posList = new List <string>()
                {
                    pos != null?pos.CountryName:string.Empty,
                    pos != null?pos.ProvinceName:string.Empty,
                    pos != null?pos.CityName:string.Empty,
                    pos != null?pos.DistName:string.Empty,
                };

                //输出
                res.UserInfo = new Entity.Extends.UserBaseInfo()
                {
                    Id                = user.id,
                    Symbol            = user.symbol,
                    Email             = user.email,
                    Mobile            = user.mobile,
                    Name              = user.name,
                    Token             = userToken,
                    HeadImage         = user.head_image,
                    CircleBackImage   = user.circle_back_image,
                    UserSex           = user.sex,
                    LifeNotes         = user.life_notes,
                    RegisterPosIdList = posIdList,
                    RegisterPosList   = posList,
                    FriendCount       = db.t_user_friend.Where(f => f.user_id == user.id).Count(),
                    GroupCount        = db.t_group_user.Where(f => f.user_id == user.id).Count()
                };

                //new Redis.ImMessageAction().AddWelcomeImMessage(user.id,, pos != null ? pos.DistName : string.Empty);
            }

            return(res);
        }
예제 #4
0
 public SetGroupNote(HWLEntities db, SetGroupNoteRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #5
0
 public ResetUserPassword(HWLEntities db, ResetUserPasswordRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #6
0
 public HomeController(HWLEntities db)
 {
     this.db = db;
 }
예제 #7
0
 public GetNearLikes(HWLEntities db, GetNearLikesRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #8
0
 public SetUserHeadImage(HWLEntities db, SetUserHeadImageRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #9
0
        public static UserLoginResponseBody UserLogin(HWLEntities dbContext, UserLoginRequestBody request)
        {
            IService <UserLoginResponseBody> service = new UserLogin(dbContext, request);

            return(service.Execute());
        }
예제 #10
0
        public static Response <DeleteNearCircleInfoResponseBody> DeleteNearCircleInfo(HWLEntities dbContext, Request <DeleteNearCircleInfoRequestBody> request)
        {
            var context = new ServiceContext <DeleteNearCircleInfoRequestBody>(request, new RequestValidate());

            return(ContextProcessor.Execute(context, r =>
            {
                return new DeleteNearCircleInfo(dbContext, r.Body).Execute();
            }));
        }
예제 #11
0
 public DeleteGroupUser(HWLEntities db, DeleteGroupUserRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #12
0
 public UserService(HWLEntities db) : base(db)
 {
 }
예제 #13
0
 public GetGroupAndUsers(HWLEntities db, GetGroupAndUsersRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #14
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);
        }
예제 #15
0
 public UserRegister(HWLEntities db, UserRegisterRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #16
0
        public static Response <SetUserCircleBackImageResponseBody> SetUserCircleBackImage(HWLEntities dbContext, Request <SetUserCircleBackImageRequestBody> request)
        {
            var context = new ServiceContext <SetUserCircleBackImageRequestBody>(request, new RequestValidate());

            return(ContextProcessor.Execute(context, r =>
            {
                return new SetUserCircleBackImage(dbContext, r.Body).Execute();
            }));
        }
예제 #17
0
 public SetUserName(HWLEntities db, SetUserNameRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #18
0
        public static Response <UserLoginAndRegisterResponseBody> UserLoginAndRegister(HWLEntities dbContext, Request <UserLoginAndRegisterRequestBody> request)
        {
            var context = new ServiceContext <UserLoginAndRegisterRequestBody>(request, new RequestValidate(false, false));

            return(ContextProcessor.Execute(context, r =>
            {
                return new UserLoginAndRegister(dbContext, r.Body).Execute();
            }));
        }
예제 #19
0
 public DeleteFriend(HWLEntities db, DeleteFriendRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #20
0
 public AddGroup(HWLEntities db, AddGroupRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #21
0
 public DeleteNearCircleInfo(HWLEntities db, DeleteNearCircleInfoRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #22
0
 public AppController(HWLEntities dbContext, IHostingEnvironment hostingEnvironment)
 {
     this.dbContext          = dbContext;
     this.hostingEnvironment = hostingEnvironment;
     this.appService         = new AppService(dbContext);
 }
예제 #23
0
 public SetUserSymbol(HWLEntities db, SetUserSymbolRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #24
0
 public GetCircleDetail(HWLEntities dbContext, GetCircleDetailRequestBody request) : base(request)
 {
     this.db = dbContext;
 }
예제 #25
0
 public SetFriendRemark(HWLEntities db, SetFriendRemarkRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #26
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);
        }
예제 #27
0
 public GetUserDetails(HWLEntities db, GetUserDetailsRequestBody request) : base(request)
 {
     this.db = db;
 }
예제 #28
0
 public UserController(HWLEntities dbContext)
 {
     this.dbContext   = dbContext;
     this.userService = new UserService(dbContext);
 }
예제 #29
0
 public DeleteCommentInfo(HWLEntities dbContext, DeleteCommentInfoRequestBody request) : base(request)
 {
     this.db = dbContext;
 }
예제 #30
0
 public AddNearComment(HWLEntities db, AddNearCommentRequestBody request) : base(request)
 {
     this.db = db;
 }