public async Task <ActionResult> EditAsync(int id, BangumiEdit bangumiEdit) { try { if (_DBServices.HasAnimeID(id)) { Anime Anime = bangumiEdit.Anime; var NewTag = bangumiEdit.AddTag; Anime anime = await _DBServices.GetDateOneAsync <Anime>(db => db.Where(a => a.AnimeID == id).Include(a => a.Tags)); anime.AnimeInfo = Anime.AnimeInfo; anime.AnimeName = Anime.AnimeName; anime.AnimeNum = Anime.AnimeNum; anime.AnimePic = Anime.AnimePic; anime.AnimeType = Anime.AnimeType; anime.IsEnd = Anime.IsEnd; anime.AnimePlayTime = Anime.AnimePlayTime; if (!string.IsNullOrEmpty(NewTag) && !string.IsNullOrWhiteSpace(NewTag)) { anime.Tags.Add(new AnimeTag { TagName = bangumiEdit.AddTag }); } await _DBServices.UpdateAsync(anime); //清除旧缓存 _DBServices.Remove(new KEY { Key = CacheKey.Anime_One(id).ToCharArray() }); return(RedirectToRoute(Final.Route_Bangumi_Details, id)); } return(NotFound()); } catch { throw; } }
public async Task <ActionResult> EditAsync(int id) { if (_DBServices.HasAnimeID(id)) { var key = new KEY { Key = CacheKey.Anime_One(id).ToCharArray() }; if (!_DBServices.GetDate(key, out Anime Anime)) { //如果缓存中没有就临时读取一下,因为提交后会删除缓存,所以不保存了 Anime = await _DBServices.GetDateOneAsync <Anime>(db => db.Where(a => a.AnimeID == id) .Include(a => a.Tags)); } return(View( viewName: "BangumiEdit", model: new BangumiEdit { Anime = Anime } )); } return(NotFound()); }
public async Task <ActionResult> DetailsAsync(int id = -1) { //从数据库中读取数据 if (!_DBServices.HasAnimeID(id)) { return(NotFound()); } var key = new KEY { Key = CacheKey.Anime_One(id).ToCharArray() }; if (!_DBServices.GetDate(key, out Anime Anime)) { Anime = await _DBServices.GetDateOneAsync <Anime>(db => db.Where(a => a.AnimeID == id) .Include(a => a.Souce) .Include(a => a.Tags) .Include(a => a.AnimeComms)); _DBServices.SetCache(key, Anime); } key = new KEY { Key = CacheKey.Blog_One_ByAnimeID(id).ToCharArray() }; if (!_DBServices.GetDate(key, out ICollection <Blog> blogs)) { blogs = await _DBServices.GetDateToListAsync <Blog>(db => db.Where(b => b.AnimeID == id).OrderByDescending(a => a.Time).Take(10)); _DBServices.SetCache(key, blogs); } //初始化数据 var userAnimeNumber = 0; //动画观看集数 var IsSignIn = false; //用户是否登录 var IsSub = false; //用户是否订阅某动画 var IsShowEdit = false; //用户是否可以编辑 ICollection <AnimeMemo> memo = new List <AnimeMemo>(); //用户写下的MEMO //未登录也可以显示: ICollection <Blog> blog = blogs.GetListDate(); //用户对该动画的长评短评 ICollection <AnimeTag> animeTags = new List <AnimeTag>(); //动画的标签 ICollection <AnimeSouce> animeSouces = new List <AnimeSouce>(); //动画的播放源 ICollection <AnimeComm> animeComms = new List <AnimeComm>(); //动画的评论 //var SubNum = 0; //用户订阅量(暂时用不到呢) animeTags = Anime.Tags; animeSouces = Anime.Souce; animeComms = Anime.AnimeComms; if (Anime.AnimeNumUpdata())//计算动画集数 { //需要更新动画信息 _DBServices.SetCache(key, Anime);//全部的数据读取好之后,缓存一下 await _DBServices.UpdateAsync(Anime); } //动画集数列表的相关计算 AnimeNumberInfo animeNumberInfo = Anime.AnimeNumPage(); if (!(IsSignIn = _signInManager.IsSignedIn(HttpContext.User))) //如果没登陆,后面的就不需要处理了 { return(View( viewName: "Bangumi_OneAnime", model: new Bangumi_OneAnime { Anime = Anime, UserAnimeNumber = userAnimeNumber, Memos = memo, IsSub = IsSub, IsSignIn = IsSignIn, IsShowEdit = IsShowEdit, Page = animeNumberInfo } )); } //如果没有登陆,返回Null var userID = _userManager.GetUserId(HttpContext.User); //尝试读取缓存 key = new KEY { Key = CacheKey.Anime_User_Info(userID, id).ToCharArray() }; if (!_DBServices.GetDate(key, out AnimeUserInfo Infos)) { Infos = await _DBServices.GetDateOneAsync <AnimeUserInfo>(db => db.Where(info => info.Users.Id == userID && info.SubAnime.AnimeID == id) .Include(info => info.Memos)); _DBServices.SetCache(key, Infos); } if (Infos != null)//没有订阅 { IsSub = true; memo = Infos.Memos; userAnimeNumber = Infos.NowAnimeNum; } //检查权限 var EditAnime = await _authorizationService.AuthorizeAsync(HttpContext.User, Final.Yuri_Yuri4); IsShowEdit = EditAnime.Succeeded; return(View( viewName: "Bangumi_OneAnime", model: new Bangumi_OneAnime { Anime = Anime, UserAnimeNumber = userAnimeNumber, Memos = memo, IsSub = IsSub, IsSignIn = IsSignIn, IsShowEdit = IsShowEdit, Page = animeNumberInfo } )); }