public static UserQuickViewModel QuickView(this IPrincipalUser principal) { if (principal.Id == 0) { return(new UserQuickViewModel()); } return((UserQuickViewModel)principal.Cache().GetOrAdd(nameof(UserQuickViewModel), key => { using var scope = principal.ServiceProvider.CreateScope(); var db = scope.ServiceProvider.GetRequiredService <IUsersDbContext>(); var quickView = db.Users .AsNoTracking() .Where(x => x.Id == principal.Id) .Select(x => new UserQuickViewModel { PhotoUrl = x.PhotoUrl ?? (x.WeChat == null ? null : x.WeChat.HeadImageUrl), PhoneNumber = x.Phone == null ? null : x.Phone.Number, EmailAddress = x.Email == null ? null : x.Email.EmailAddress, RegisteredTime = x.RegisteredTime, AwaitChangePassword = Todo.NoNeed }) .SingleOrDefault(); if (quickView == null) { principal.Auth().SignOut(); } return quickView ?? new UserQuickViewModel(); })); }
internal DateTime GetTimer() { return((DateTime)_me.Cache().GetOrAdd(nameof(AntiViolenceDefender), _ => DateTime.MinValue)); }