public string TryRateBlog(int id, int rating) { string credential = ExpUtil.GetIPAddress(Context); bool rated = false; if (RateWithAccount) { if (!Context.User.Identity.IsAuthenticated) { return("login"); } credential = Context.User.Identity.Name; rated = _db.BlogRatings.Any(r => r.BlogID == id && r.credential == credential); } else { rated = _db.BlogRatings.Any(r => r.BlogID == id && r.credential == credential && DbFunctions.DiffDays(r.ratetime, DateTime.Today) < 1); } if (rated) { return("rated" + (RateWithAccount ? "" : "_today")); } var Rate = AddBlogRating(id, rating, credential); if (Rate == null) { return("error"); } TriggerRateBlog(Rate); return("ok"); }
public UsersRating GetUsersRating(int blogid) { var credential = RateWithAccount ? Context.User.Identity.Name : ExpUtil.GetIPAddress(Context); BlogRating rating = null; if (RateWithAccount) { rating = _db.BlogRatings.FirstOrDefault(r => r.BlogID == blogid && r.credential == credential); } else { rating = _db.BlogRatings.FirstOrDefault(r => r.BlogID == blogid && r.credential == credential && DbFunctions.DiffDays(r.ratetime, DateTime.Today) == 0); } var self = new UsersRating { BlogID = blogid, credential = credential, RateWithAccount = RateWithAccount }; if (rating != null) { self.Rating = rating; self.HasPost = rating.PostId.HasValue; } return(self); }
private void WeeklyRewardTask() { using (var scope = _scopeFactory.CreateScope()) { var db = scope.ServiceProvider.GetRequiredService <BlogContext>(); // today should be first day of new week var firstday = DateTime.Today.AddDays(-7); var rankings = GetRankingSinceDate(db, firstday, firstday.AddDays(6), HistoryRanking.Type.RankWeekly); db.HistoryRankings.RemoveRange(db.HistoryRankings.Where(h => h.RankType == HistoryRanking.Type.RankWeekly && firstday <= h.RankDate)); db.HistoryRankings.AddRange(rankings); db.SaveChanges(); ExpUtil expUtil = scope.ServiceProvider.GetService <ExpUtil>(); expUtil.addRankExp(rankings, WeeklyReward, "周榜奖励"); } }
public Dictionary <int, int> GetUsersRatingValues(IEnumerable <int> blogids) { var credential = RateWithAccount ? Context.User.Identity.Name : ExpUtil.GetIPAddress(Context); IQueryable <BlogRating> ratings = null; if (RateWithAccount) { ratings = _db.BlogRatings.Where(r => blogids.Contains(r.BlogID) && r.credential == credential); } else { ratings = _db.BlogRatings.Where(r => blogids.Contains(r.BlogID) && r.credential == credential && DbFunctions.DiffDays(r.ratetime, DateTime.Today) == 0); } return(ratings.ToDictionary(v => v.BlogID, v => v.value)); }
public BlogUtil( BlogContext db, UsersContext udb, IMemoryCache cache, IHttpContextAccessor contextAccessor, IUrlHelper urlHelper, MessageUtil msgUtil, AdminUtil adminUtil, UploadUtil uploadUtil, ExpUtil expUtil, IVisitCounter visitCounter, INickNameProvider nicknameProvider) : base(db, udb, cache, visitCounter, nicknameProvider) { _msgUtil = msgUtil; _adminUtil = adminUtil; _contextAccessor = contextAccessor; _urlHelper = urlHelper; _uploadUtil = uploadUtil; _expUtil = expUtil; _visitCounter = visitCounter; }
private void MonthlyRewardTask() { using (var scope = _scopeFactory.CreateScope()) { var db = scope.ServiceProvider.GetRequiredService <BlogContext>(); // today should be first day of new month DateTime firstday = DateTime.Today.AddMonths(-1); DateTime lastDay = new DateTime(firstday.Year, firstday.Month, DateTime.DaysInMonth(firstday.Year, firstday.Month)); var rankings = GetRankingSinceDate(db, firstday, lastDay, HistoryRanking.Type.RankMonthly); db.HistoryRankings.RemoveRange(db.HistoryRankings.Where(h => h.RankType == HistoryRanking.Type.RankMonthly && DbFunctions.DiffMonths(h.RankDate, firstday) == 0)); db.HistoryRankings.AddRange(rankings); db.SaveChanges(); // Remove any key at rankdate as we just updated. IDictionary <DateTime, MonthRanking> cache = _cache.Get <System.Collections.Concurrent.ConcurrentDictionary <DateTime, MonthRanking> >("~MonthRanking"); if (cache != null && cache.ContainsKey(firstday)) { cache.Remove(firstday); } ExpUtil expUtil = scope.ServiceProvider.GetService <ExpUtil>(); expUtil.addRankExp(rankings, MonthlyReward, "月榜奖励"); } }
private void DailyRewardTask() { using (var scope = _scopeFactory.CreateScope()) { var db = scope.ServiceProvider.GetRequiredService <BlogContext>(); var rankings = db.Blogs.Where(b => DbFunctions.DiffMinutes(b.BlogDate, DateTime.Now) < 1440 && b.isApproved == true && !NoRankCategories.Contains(b.CategoryID)) .Join(db.BlogRatings.GroupBy(r => r.BlogID).Select(g => new { blogId = g.Key, rating = g.Sum(r => r.value) }) , b => b.BlogID, r => r.blogId, (b, r) => new { blog = b, Rating = r.rating, PostCount = db.Posts.Count(p => p.IdType == ItemType.Blog && p.ItemId == b.BlogID) }) .OrderByDescending(r => r.Rating) .ThenByDescending(r => r.blog.BlogDate) .Take(RankSize) .ToArray() .Select(rank => new HistoryRanking { BlogID = rank.blog.BlogID, RankDate = DateTime.Now.Date, Rating = rank.Rating, Author = rank.blog.Author, BlogDate = rank.blog.BlogDate, BlogThumb = BlogHelper.firstImgPath(rank.blog, true), BlogTitle = rank.blog.BlogTitle, BlogVisit = rank.blog.BlogVisit, PostCount = rank.PostCount, RankType = HistoryRanking.Type.RankDaily, }); db.HistoryRankings.AddRange(rankings); db.SaveChanges(); ExpUtil expUtil = scope.ServiceProvider.GetService <ExpUtil>(); expUtil.addRankExp(rankings, DailyReward, "日榜奖励"); } }
public void ApplyBonus(UserProfile u, ExpUtil expUtil) { expUtil.AddPoint(u, Points); expUtil.addExp(u, Exp); }
public GachaBonusService(UsersContext db, IHttpContextAccessor accessor, ExpUtil expUtil) { db_ = db; context_ = accessor.HttpContext; expUtil_ = expUtil; }