Example #1
0
        public async Task <UserRepositoryModel> GetApplyFriendsAsync(EaUser user, int s, int t)
        {
            var uss   = NonTrackingAsyncEnum.Where(u => u.IsEnable && u.Status == Friend.Applying && u.Target == user.Id);
            var count = await uss.Count();

            var datas = await uss.Skip(s).Take(t).ToArray();

            var ucol    = datas.Select(d => d.Target);
            var usdatas = new RelFriend[datas.Count()];
            var users   = await _userManager.Users.AsNoTracking().ToAsyncEnumerable()
                          .Where(u => ucol.Contains(u.Id))
                          .ToDictionary(u => u.Id, u => u.UserName);

            for (int i = 0; i < datas.Count(); i++)
            {
                var odata = datas[i];
                usdatas[i] = new RelFriend()
                {
                    Id         = odata.Id,
                    CreateTime = odata.CreateTime,
                    Target     = odata.Target,
                    Creator    = odata.Creator,
                    Status     = odata.Status,
                    TargetName = users[odata.Target]
                };
            }
            var upm = new UserRepositoryModel(count, s, t, usdatas);

            return(upm);
        }
        public async Task <IActionResult> Register([FromForm] ApiRegisterModel model)
        {
            if (model == null || model.GetType().GetProperties().Any(p => string.IsNullOrEmpty(p.GetValue(model).ToString())))
            {
                return(BadRequest("模型验证失败"));
            }
            if (_dbContext.Users.Where(u => u.Email == model.Email).Any())
            {
                return(BadRequest("邮箱已注册"));
            }
            if (_dbContext.Users.Where(u => u.UserName == model.UserName).Any())
            {
                return(BadRequest("用户名已注册"));
            }
            var user = new EaUser {
                UserName = model.UserName, Email = model.Email, CreateTime = DateTime.Now, Type = "default"
            };
            var result = await _userManager.CreateAsync(user, model.Pwd);

            if (result.Succeeded)
            {
                //_logger.LogInformation("User created a new account with password.");
                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

#warning 这里没改
                //var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme);
                var res = await _emailSender.SendEmailConfirmationAsync(model.Email, "");

                return(Ok());
            }
            return(BadRequest(result.Errors));
        }
Example #3
0
        public async Task <MsgDetailRepositoryModel> GetMsgDetailsAsync(EaUser user, uint mid, int s, int t, bool isdes = false)
        {
            var msgs = await NonTrackingAsyncEnum.SingleOrDefault(m => m.IsEnable && m.Id == mid && m.Creator == user.Id || m.Target == user.Id);

            if (msgs == null)
            {
                return(new MsgDetailRepositoryModel(false));
            }
            var mds = _msgDetailRepository.Where(m => m.MsgId == msgs.Id && m.IsEnable);

            if (isdes)
            {
                mds = mds.OrderBy(m => m.Id);
            }
            else
            {
                mds = mds.OrderByDescending(m => m.Id);
            }
            var count = await mds.Count();

            var datas = await mds.Skip(s).Take(t).ToArray();

            await _msgDetailRepository.AutoFillAsync(datas);

            var mdpm = new MsgDetailRepositoryModel(count, s, t, datas);

            return(mdpm);
        }
        public async Task <bool> SendCommentAsync(EaUser user, uint cid, string cstring)
        {
            var content = await DbSet.ToAsyncEnumerable().SingleOrDefault(c => c.Id == cid && c.IsEnable);

            Console.WriteLine($"cid={cid} hascontent={content!=null}");
            if (content == null)
            {
                Console.WriteLine("content null");
                return(false);
            }
            if (string.IsNullOrEmpty(cstring))
            {
                return(false);
            }
            _commentRepository.DbSet.Add(new Comment()
            {
                ContentId   = content.Id,
                CreateTime  = DateTime.Now,
                HtmlContent = cstring,
                EaUserId    = user.Id
            });
            await DbContext.SaveChangesAsync();

            return(true);
        }
        public async Task <IActionResult> ExternalLoginConfirmation(ExternalLoginViewModel model, string returnUrl = null)
        {
            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await _signInManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    throw new ApplicationException("Error loading external login information during confirmation.");
                }
                var user = new EaUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(RedirectToLocal(returnUrl));
                    }
                }
                AddErrors(result);
            }

            ViewData["ReturnUrl"] = returnUrl;
            return(View(nameof(ExternalLogin), model));
        }
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var email = model.Email.ToLower();
                if (_dbContext.Users.Any(u => u.Email.ToLower() == email))
                {
                    ModelState.AddModelError(string.Empty, "该邮箱已注册!");
                    return(View(model));
                }
                var user = new EaUser {
                    UserName = model.Name, Email = model.Email, CreateTime = DateTime.Now, Type = "default"
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    //_logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme);
                    var res         = await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl);

                    //await _signInManager.SignInAsync(user, isPersistent: true);
                    //_logger.LogInformation("User created a new account with password.");
                    return(RedirectToLocal(returnUrl));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Example #7
0
        public async Task <MsgRepositoryModel> GetMsgAsync(EaUser user, int s, int t)
        {
            var msgs  = NonTrackingAsyncEnum.Where(m => m.Creator == user.Id || m.Target == user.Id && m.IsEnable);
            var count = await msgs.Count();

            var datas = await msgs.Skip(s).Take(t).ToArray();

            var mpm = new MsgRepositoryModel(count, s, t, datas);

            return(mpm);
        }
Example #8
0
        public async Task <FriendRepositoryModel> GetFriendsAsync(EaUser user, int skip, int take)
        {
            var fs    = NonTrackingAsyncEnum.Where(f => f.Status == Friend.Applied && f.IsEnable && f.Creator == user.Id || f.Target == user.Id);
            var count = await fs.Count();

            var datas = await fs.Skip(skip).Take(take).ToArray();

            var fpm = new FriendRepositoryModel(count, skip, take, datas);

            return(fpm);
        }
        public async Task <ContentRepositoryModel> GetUserContentsAsync(EaUser user, int s, int t)
        {
            var us    = NonTrackingAsyncEnum.Where(c => c.EaUserId == user.Id && c.IsEnable);
            var count = await us.Count();

            var datas = await us.Skip(s).Take(t).ToArray();

            var crm = new ContentRepositoryModel(count, s, t, datas);

            return(crm);
        }
        public async Task <bool> UnLikeContentAsync(EaUser user, uint cid)
        {
            var like = await _likeRepository.SingleOrDefault(l => l.ContentId == cid && l.EaUserId == user.Id);

            if (like != null)
            {
                like.IsEnable = false;
                _likeRepository.DbSet.Update(like);
                DbContext.SaveChanges();
            }
            return(false);
        }
        public async Task <string> SendContentAsync(EaUser user, IFormCollection files)
        {
            var content = files["Content"].FirstOrDefault();
            var title   = files["Title"].FirstOrDefault();
            var label   = files["Label"].FirstOrDefault();
            var res     = await SendContentAsync(user.Id, content, title, label, -1, files.Files.Select(f => new FormFileModel(f)));

            if (res != null)
            {
                return(res);
            }
            return(null);
        }
Example #12
0
        public async Task <bool> DeleteFirendAsync(EaUser user, string fuid)
        {
            var fuser = await DbSet.ToAsyncEnumerable().SingleOrDefault(f => f.IsEnable && f.Creator == user.Id && f.Target == fuid && f.Status == Friend.Applied);

            if (fuser == null)
            {
                return(false);
            }
            fuser.IsEnable = false;
            DbSet.Update(fuser);
            var res = DbContext.SaveChanges();

            return(res > 0);
        }
Example #13
0
        public async Task <bool> DeleteMsgAsync(EaUser user, uint mid)
        {
            var msg = await NonTrackingAsyncEnum.SingleOrDefault(m => m.IsEnable && m.Id == mid && m.Creator == user.Id);

            if (msg == null)
            {
                return(false);
            }
            msg.IsEnable = false;
            DbSet.Update(msg);
            var res = DbContext.SaveChanges();

            return(res > 0);
        }
        private async Task LoadSharedKeyAndQrCodeUriAsync(EaUser user, EnableAuthenticatorViewModel model)
        {
            var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);

            if (string.IsNullOrEmpty(unformattedKey))
            {
                await _userManager.ResetAuthenticatorKeyAsync(user);

                unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);
            }

            model.SharedKey        = FormatKey(unformattedKey);
            model.AuthenticatorUri = GenerateQrCodeUri(user.Email, unformattedKey);
        }
Example #15
0
        public async Task <ShopItemRepositoryModel> GetUserItemsAsync(EaUser user, int s, int t, bool searchUnEnable = false)
        {
            var sis = _buyRepository.Where(b => (!searchUnEnable && b.IsEnable) && b.EaUserId == user.Id)
                      .Skip(s)
                      .Take(t);
            var count = await sis.Count();

            var sisid = await sis.Select(d => d.ShopItemId).ToArray();//已购买的商品id

            var datas = await _shopItemRepository.Where(si => sisid.Contains(si.Id)).ToArray();

            var model = new ShopItemRepositoryModel(count, s, t, datas);

            return(model);
        }
Example #16
0
        public async Task <bool> AcceptFriendApplyAsync(EaUser user, uint fid)
        {
            var friend = await DbSet.ToAsyncEnumerable().SingleOrDefault(f => f.Id == fid && f.IsEnable);

            Console.WriteLine($"accept f.creator={friend.Creator} f.target={friend.Target} locid={user.Id} fid={fid}");
            if (friend == null || friend.Target != user.Id)
            {
                return(false);
            }
            friend.Status = Friend.Applied;
            DbSet.Update(friend);
            var res = await DbContext.SaveChangesAsync();

            return(res > 0);
        }
Example #17
0
        public async Task <IActionResult> GetUserById(string id)
        {
            var user = await _userManager.FindByIdAsync(id);

            EaUser u = new EaUser();

            if (user != null)
            {
                u.Id       = user.Id;
                u.UserName = user.UserName;
                u.Type     = user.Type;
                u.Email    = user.Email;
            }
            return(Json(u));
        }
        public async Task <ContentRepositoryModel> GetLikeContentAsync(EaUser user, int t, int s)
        {
            var cs = _likeRepository.Where(c => c.EaUserId == user.Id && c.IsEnable)
                     .Skip(s)
                     .Take(t)
                     .Select(c => c.ContentId);               //喜欢的内容页
            var count = await cs.Count();

            var lcs = await cs.ToList();

            var datas = await NonTrackingAsyncEnum.Where(c => lcs.Contains(c.Id) && c.IsEnable).ToArray();

            var cpm = new ContentRepositoryModel(count, s, t, datas);

            return(cpm);
        }
        public async Task <bool> LikeContentAsync(EaUser user, uint cid)
        {
            var islike = await IsLikeAsync(user.Id, cid);

            if (!islike)
            {
                _likeRepository.DbSet.Add(new Like()
                {
                    EaUserId  = user.Id,
                    ContentId = cid
                });
                var res = DbContext.SaveChanges();
                return(res > 0);
            }
            return(false);
        }
Example #20
0
        public async Task <bool> SendMsgAsync(EaUser user, MsgSendModel model)
        {
            var msg = await NonTrackingAsyncEnum.SingleOrDefault(s => s.Id == model.Mid);

            if (msg == null)
            {
                return(false);
            }
            _msgDetailRepository.DbSet.Add(new MsgDetail()
            {
                Content = model.Text,
                MsgId   = model.Mid,
                Cmds    = model.Cmd
            });
            var res = DbContext.SaveChanges();

            return(res > 0);
        }
Example #21
0
        public async Task <bool> QuireNeedUpdateAsync(EaUser user, uint mid, uint lmid)
        {
            var msg = await NonTrackingAsyncEnum.SingleOrDefault(s => s.Id == mid);

            if (msg == null)
            {
                return(false);
            }
            var rlmid = await _msgDetailRepository.Where(md => md.MsgId == msg.Id)
                        .OrderBy(md => md.Id)
                        .LastOrDefault();

            if (rlmid == null)//没有消息具体
            {
                return(true);
            }
            return(rlmid.Id > lmid);
        }
Example #22
0
        public async Task <bool> CreatMsgAsync(EaUser user, string fid)
        {
            if (user.Id == fid)
            {
                return(false);
            }
            var hasFriend = await _friendRepository.NonTrackingAsyncEnum.Any(f => f.IsEnable && f.Status == Friend.Applied && f.Creator == user.Id && f.Target == fid);

            if (!hasFriend)
            {
                return(false);
            }
            DbSet.Add(new Msg()
            {
                Creator = user.Id,
                Target  = fid
            });
            var res = await DbContext.SaveChangesAsync();

            return(res > 0);
        }
Example #23
0
        public async Task <bool> BuyAsync(EaUser user, uint itemId)
        {
            var ic = await _shopItemRepository.DbSet.SingleOrDefaultAsync(i => i.Id == itemId);

            if (ic == null)
            {
                return(false);
            }
            if (user.Money - ic.Price <= 0)
            {
                return(false);
            }
            user.Money -= ic.Price;
            await _userManager.UpdateAsync(user);

            DbSet.Add(new Buy()//添加记录
            {
                ShopItemId = itemId,
                EaUserId   = user.Id
            });
            return(true);
        }
Example #24
0
        public async Task <bool> ApplyFriendAsync(EaUser user, string fid)
        {
            var fuser = await _userManager.FindByIdAsync(fid);

            if (fuser == null)
            {
                return(false);//失败
            }
            var has = await AsyncEnumerable.Any(f => f.IsEnable && f.Target == user.Id || f.Creator == user.Id);

            if (fuser.Id == user.Id || has)
            {
                return(false);
            }
            DbSet.Add(new Friend()
            {
                Creator = user.Id,
                Target  = fid
            });
            var res = await DbContext.SaveChangesAsync();

            return(res > 0);
        }
        public async Task <bool> IsLikeContentAsync(EaUser user, uint cid)
        {
            var islike = await IsLikeAsync(user.Id, cid);

            return(islike);
        }
Example #26
0
        public async Task <bool> BuyAsync(EaUser user, uint iid)
        {
            var buyres = await _buyRepository.BuyAsync(user, iid);

            return(buyres);
        }
        public async Task <bool> DeleteCommentAsync(EaUser user, uint cid)
        {
            var res = await _commentRepository.DeleteCommentAsync(user.Id, cid);

            return(res);
        }
        public async Task <bool> DeleteContentAsync(EaUser user, uint cid)
        {
            var res = await _DeleteContentAsync(user.Id, cid);

            return(res);
        }