/// <summary> /// 通过json创建影人 /// </summary> /// <param name="json">json</param> /// <param name="mappath">影人海报保存地址</param> /// <param name="create">影人创建者</param> /// <returns></returns> public static string CreateJson(JObject json, string mappath, string create) { using (MR_DataClassesDataContext _db = new MR_DataClassesDataContext()) { var createCeleb = new tbl_Celebrity(); createCeleb = CelebManager.JsonToCeleb(json, mappath); string guid; do { guid = Guid.NewGuid().ToString("N").ToUpper(); } while (_db.tbl_Celebrity.Where(p => p.celeb_Id == guid).Count() != 0); createCeleb.celeb_Id = guid; createCeleb.celeb_Create = create; if ((bool)_db.tbl_UserAccount.SingleOrDefault(u => u.user_Id == create).user_IsAdmin) { createCeleb.celeb_Status = 2; } else { createCeleb.celeb_Status = 0; } _db.tbl_Celebrity.InsertOnSubmit(createCeleb); _db.SubmitChanges(); _db.SetCelebTime(guid); if (!string.IsNullOrEmpty(createCeleb.celeb_DoubanID)) { MovieManager.RefreshCeleb(createCeleb.celeb_Id, createCeleb.celeb_DoubanID); } return(createCeleb.celeb_Id); } }
public ActionResult Refresh(string id) { if (!CelebManager.Exist(id)) { return(RedirectToAction("NotFound", "Error")); } RefreshCelebViewModel refresh = new RefreshCelebViewModel(); tbl_Celebrity tblceleb = _db.tbl_Celebrity.SingleOrDefault(s => s.celeb_Id == id); refresh.Old = new ManageCelebViewModel(tblceleb); JObject json = HtmlDecoder.GetJson("https://api.douban.com/v2/movie/celebrity/" + tblceleb.celeb_DoubanID); JToken msg; if (json.TryGetValue("msg", out msg)) { refresh.New = new ManageCelebViewModel(); refresh.New.Id = refresh.Old.Id; } else { tblceleb = CelebManager.JsonToCeleb(json, Server.MapPath("~/Content/Celeb/")); refresh.New = new ManageCelebViewModel(tblceleb); refresh.New.Id = refresh.Old.Id; } TempData["NewCeleb"] = refresh.New; return(View(refresh)); }
public ManageCelebViewModel(tbl_Celebrity celeb) { Id = celeb.celeb_Id; Name = celeb.celeb_Name; Aka = celeb.celeb_Aka; NameEn = celeb.celeb_NameEn; AkaEn = celeb.celeb_AkaEn; Gender = Translator.GenderToTitle(celeb.celeb_Gender); Birthday = celeb.celeb_Birthday; Deathday = celeb.celeb_Deathday; BornPlace = celeb.celeb_BornPlace; Pro = celeb.celeb_Pro; Family = celeb.celeb_Family; DoubanID = celeb.celeb_DoubanID; IMDbID = celeb.celeb_IMDbID; Summary = celeb.celeb_Summary; Avatar = celeb.celeb_Avatar; Create = celeb.celeb_Create; CreateAccount = AccountManager.GetAccount(celeb.celeb_Create); if (celeb.celeb_Status != null) { Status = (byte)celeb.celeb_Status; } Note = celeb.celeb_Note; }
/// <summary> /// 删除影人 /// </summary> /// <param name="id"></param> public static void Delete(string id) { using (MR_DataClassesDataContext _db = new MR_DataClassesDataContext()) { tbl_Celebrity celeb = _db.tbl_Celebrity.SingleOrDefault(s => s.celeb_Id == id); _db.tbl_Celebrity.DeleteOnSubmit(celeb); _db.SubmitChanges(); } }
/// <summary> /// 审核影人不通过 /// </summary> /// <param name="model"></param> public static void Reject(RejectViewModel model) { using (MR_DataClassesDataContext _db = new MR_DataClassesDataContext()) { tbl_Celebrity celeb = _db.tbl_Celebrity.SingleOrDefault(m => m.celeb_Id == model.Id); celeb.celeb_Status = 1; celeb.celeb_Note = model.Note; _db.SubmitChanges(); } }
/// <summary> /// 审核影人通过 /// </summary> /// <param name="id">影人id</param> public static void Audit(string id) { using (MR_DataClassesDataContext _db = new MR_DataClassesDataContext()) { tbl_Celebrity celeb = _db.tbl_Celebrity.SingleOrDefault(m => m.celeb_Id == id); celeb.celeb_Status = 2; _db.SubmitChanges(); } }
public ActionResult Delete(string id) { if (!CelebManager.Exist(id)) { return(RedirectToAction("NotFound", "Error")); } tbl_Celebrity tblceleb = _db.tbl_Celebrity.SingleOrDefault(s => s.celeb_Id == id); ManageCelebViewModel celeb = new ManageCelebViewModel(tblceleb); return(View(celeb)); }
public ActionResult Delete(string id, string returnurl) { if (!CelebManager.Exist(id)) { return(RedirectToAction("NotFound", "Error")); } //if (id == null) //{ // return new HttpStatusCodeResult(HttpStatusCode.BadRequest); // return HttpNotFound(); //} tbl_Celebrity tblceleb = _db.tbl_Celebrity.SingleOrDefault(s => s.celeb_Id == id); ManageCelebViewModel celeb = new ManageCelebViewModel(tblceleb); ViewBag.ReturnUrl = returnurl; return(View(celeb)); }
/// <summary> /// 创建影人 /// </summary> /// <param name="celeb"></param> /// <returns></returns> public static string CreateCeleb(ManageCelebViewModel celeb) { //using (MR_DataClassesDataContext _db = new MR_DataClassesDataContext()) using (MRDataEntities _db = new MRDataEntities()) { string guid; do { guid = Guid.NewGuid().ToString("N").ToUpper(); } while (_db.tbl_Celebrity.Where(p => p.celeb_Id == guid).Count() != 0); celeb.Gender = Translator.GenderToId(celeb.Gender); var createCeleb = new tbl_Celebrity() { celeb_Id = guid, celeb_Name = celeb.Name, celeb_NameEn = celeb.NameEn, celeb_Aka = celeb.Aka, celeb_AkaEn = celeb.AkaEn, celeb_Gender = celeb.Gender, celeb_Birthday = celeb.Birthday, celeb_Deathday = celeb.Deathday, celeb_BornPlace = celeb.BornPlace, celeb_Pro = celeb.Pro, celeb_Family = celeb.Family, celeb_Summary = celeb.Summary, celeb_DoubanID = celeb.DoubanID, celeb_IMDbID = celeb.IMDbID, celeb_Create = celeb.Create, celeb_Status = celeb.Status, celeb_Avatar = celeb.Avatar == null ? "Celeb_1.jpg" : celeb.Avatar }; //_db.tbl_Celebrity.InsertOnSubmit(createCeleb); //_db.SubmitChanges(); //_db.SetCelebTime(guid); _db.tbl_Celebrity.Add(createCeleb); _db.SaveChanges(); return(createCeleb.celeb_Id); } }
// // GET: /Celeb/Work/ public ActionResult Work(string id) { if (!CelebManager.Exist(id)) { return(RedirectToAction("NotFound", "Error")); } tbl_Celebrity tblCeleb = _db.tbl_Celebrity.SingleOrDefault(s => s.celeb_Id == id); CelebViewModel celeb = new CelebViewModel(tblCeleb); if (User.Identity.IsAuthenticated) { for (int i = 0; i < celeb.Works.Count(); i++) { MovieViewModel movie = celeb.Works[i].Work; celeb.Works[i].Work.IsPlan = MarkManager.Validate(celeb.Works[i].Work.Id, AccountManager.GetId(User.Identity.Name), 1); celeb.Works[i].Work.IsFinish = MarkManager.Validate(celeb.Works[i].Work.Id, AccountManager.GetId(User.Identity.Name), 2); celeb.Works[i].Work.IsFavor = MarkManager.Validate(celeb.Works[i].Work.Id, AccountManager.GetId(User.Identity.Name), 3); } } return(View(celeb)); }
// // GET: /Celeb/Index/ //public ActionResult Index(string id) //{ // if (!CelebManager.Exist(id)) // { // return RedirectToAction("NotFound", "Error"); // } // tbl_Celebrity tblCeleb = _db.tbl_Celebrity.SingleOrDefault(s => s.celeb_Id == id); // CelebViewModel celeb = new CelebViewModel(tblCeleb); // if (User.Identity.IsAuthenticated) // { // celeb.IsCollect = MarkManager.Validate(tblCeleb.celeb_Id, AccountManager.GetId(User.Identity.Name), 4); // celeb.CollectCount = _db.tbl_Mark.Where(m => m.mark_Target == id && m.mark_Type == 4).Count(); // if (tblCeleb.celeb_Create == AccountManager.GetId(User.Identity.Name) || (bool)_db.tbl_UserAccount.SingleOrDefault(a => a.user_Account == User.Identity.Name).user_IsAdmin) // { // celeb.IsCreate = true; // } // } // return View(celeb); //} public ActionResult Index(string id) { if (!CelebManager.Exist(id)) { return(RedirectToAction("NotFound", "Error")); } tbl_Celebrity tblCeleb = _db.tbl_Celebrity.SingleOrDefault(s => s.celeb_Id == id); CelebViewModel celeb = new CelebViewModel(tblCeleb); if (User.Identity.IsAuthenticated) { celeb.IsCollect = MarkManager.Validate(tblCeleb.celeb_Id, AccountManager.GetId(User.Identity.Name), 4); celeb.CollectCount = _db.tbl_Mark.Where(m => m.mark_Target == id && m.mark_Type == 4).Count(); if (tblCeleb.celeb_Create == AccountManager.GetId(User.Identity.Name) || (bool)_db.tbl_UserAccount.SingleOrDefault(a => a.user_Account == User.Identity.Name).user_IsAdmin) { celeb.IsCreate = true; } } return(View(celeb)); }
public CelebViewModel(tbl_Celebrity celeb) { Id = celeb.celeb_Id; Name = celeb.celeb_Name; Aka = celeb.celeb_Aka; NameEn = celeb.celeb_NameEn; AkaEn = celeb.celeb_AkaEn; Gender = Translator.GenderToTitle(celeb.celeb_Gender); Birthday = celeb.celeb_Birthday; Deathday = celeb.celeb_Deathday; BornPlace = celeb.celeb_BornPlace; Pro = celeb.celeb_Pro; Family = celeb.celeb_Family; DoubanID = celeb.celeb_DoubanID; IMDbID = celeb.celeb_IMDbID; Summary = celeb.celeb_Summary; Avatar = celeb.celeb_Avatar; Create = celeb.celeb_Create; Status = (byte)celeb.celeb_Status; Note = celeb.celeb_Note; if (celeb.celeb_Summary != null && celeb.celeb_Summary.Length > 250) { SummaryShort = celeb.celeb_Summary.Substring(0, 247) + "..."; } else { SummaryShort = celeb.celeb_Summary; } if (celeb.celeb_Summary != null) { if (SummaryShort.LastIndexOfAny(new char[] { ',', '.', ',', '。', '\n' }) > 0) { SummaryShort = SummaryShort.Substring(0, SummaryShort.LastIndexOfAny(new char[] { ',', '.', ',', '。', '\n' })) + "..."; } else { SummaryShort = SummaryShort.Replace("\n", "<br/>") + "..."; } SummaryPara = celeb.celeb_Summary.Split('\n'); } else { SummaryPara = null; } Works = new List <CelebWorkItem>(); if (DoubanID != null) { //MR_DataClassesDataContext _db = new MR_DataClassesDataContext(); MRDataEntities _db = new MRDataEntities(); var works = _db.tbl_Movie.Where( m => m.movie_DirectorsId.Contains(celeb.celeb_DoubanID) || m.movie_DirectorsId.Contains(celeb.celeb_Id) || m.movie_WritersId.Contains(celeb.celeb_DoubanID) || m.movie_WritersId.Contains(celeb.celeb_Id) || m.movie_CastsId.Contains(celeb.celeb_DoubanID) || m.movie_CastsId.Contains(celeb.celeb_Id)).OrderBy(m => m.movie_Rating).Take(10); foreach (var item in works) { MovieViewModel work = new MovieViewModel(item); System.Text.StringBuilder temp = new System.Text.StringBuilder(); temp.Append("["); if (item.movie_DirectorsId.Contains(celeb.celeb_DoubanID) || item.movie_DirectorsId.Contains(celeb.celeb_Id)) { temp.Append(" 导演 "); } if (item.movie_WritersId.Contains(celeb.celeb_DoubanID) || item.movie_WritersId.Contains(celeb.celeb_Id)) { temp.Append(" 编剧 "); } if (item.movie_CastsId.Contains(celeb.celeb_DoubanID) || item.movie_CastsId.Contains(celeb.celeb_Id)) { temp.Append(" 演员 "); } temp.Append("]"); Works.Add(new CelebWorkItem() { Work = work, Pro = temp.ToString() }); } } IsCreate = false; }
/// <summary> /// 从豆瓣返回的json中提取影人信息 /// </summary> /// <param name="json">豆瓣影人json</param> /// <param name="mappath">影人海报保存地址</param> /// <returns></returns> public static tbl_Celebrity JsonToCeleb(JObject json, string mappath) { tbl_Celebrity celeb = new tbl_Celebrity(); celeb.celeb_Name = json["name"].ToString(); //中文名 celeb.celeb_NameEn = json["name_en"].ToString(); //外文名 celeb.celeb_Gender = Translator.GenderToId(json["gender"].ToString()); //性别 celeb.celeb_DoubanID = json["id"].ToString(); //豆瓣编号 celeb.celeb_BornPlace = json["born_place"].ToString(); //出生地 //更多中文名 System.Text.StringBuilder temp = new System.Text.StringBuilder(); var aka = json["aka"].Children().Values(); foreach (var item in aka) { temp.Append(item.ToString()).Append("/"); } if (temp.Length > 0) { celeb.celeb_Aka = temp.Remove(temp.Length - 1, 1).ToString(); } //更多外文名 temp = new System.Text.StringBuilder(); var akaen = json["aka_en"].Children().Values(); foreach (var item in akaen) { temp.Append(item.ToString()).Append("/"); } if (temp.Length > 0) { celeb.celeb_AkaEn = temp.Remove(temp.Length - 1, 1).ToString(); } //照片 string imgurl = json["avatars"]["large"].ToString(); System.IO.MemoryStream ms = new System.IO.MemoryStream(HtmlDecoder.GetImage(imgurl)); System.Drawing.Image img = System.Drawing.Image.FromStream(ms); Uri uri = new Uri(imgurl); string filePath = mappath + uri.Segments[uri.Segments.Length - 1]; img.Save(filePath); celeb.celeb_Avatar = uri.Segments[uri.Segments.Length - 1]; //生卒日期 string sHtmlCode = HtmlDecoder.GetHtmlCode(string.Format("{0}{1}{2}", "https://movie.douban.com/celebrity/", celeb.celeb_DoubanID, "/")); string sDivInfo = HtmlDecoder.CutString(sHtmlCode, "<div id=\"headline\" class=\"item\">", "<div id=\"opt-bar\" class=\"mod\">"); sDivInfo = HtmlDecoder.CutString(sDivInfo, "<div class=\"info\">", "</div>"); if (sDivInfo.Contains("<span>出生日期")) { celeb.celeb_Birthday = HtmlDecoder.CutString(sDivInfo, "<span>出生日期</span>:", "</li>"); } else if (sDivInfo.Contains("<span>生卒日期")) { celeb.celeb_Birthday = HtmlDecoder.CutString(sDivInfo, "<span>生卒日期</span>:", "</li>").Split('至')[0].Trim(); celeb.celeb_Deathday = HtmlDecoder.CutString(sDivInfo, "<span>生卒日期</span>:", "</li>").Split('至')[1].Trim(); } //职业 if (sDivInfo.Contains("<span>职业")) { string pros = HtmlDecoder.CutString(sDivInfo, "<span>职业</span>:", "</li>"); temp.Clear(); foreach (var item in pros.Split('/')) { temp.Append(item.Trim()).Append("/"); } if (temp.Length > 0) { celeb.celeb_Pro = temp.Remove(temp.Length - 1, 1).ToString(); } } //家庭成员 if (sDivInfo.Contains("<span>家庭成员")) { string families = HtmlDecoder.CutString(sDivInfo, "<span>家庭成员</span>:", "</li>"); temp.Clear(); foreach (var item in families.Split('/')) { temp.Append(item.Trim()).Append("/"); } if (temp.Length > 0) { celeb.celeb_Family = temp.Remove(temp.Length - 1, 1).ToString(); } } //imdb编号 http://www.imdb.com/name/nm0000701 if (sDivInfo.Contains("<span>imdb编号")) { celeb.celeb_IMDbID = HtmlDecoder.CutString(HtmlDecoder.CutString(sDivInfo, "<span>imdb编号</span>:", "</li>"), "target=\"_self\">", "</a>"); } //影人简介 sDivInfo = HtmlDecoder.CutString(sHtmlCode, "<div id=\"intro\" class=\"mod\">", "<div class=\"mod\">"); if (sDivInfo.Contains("<span class=\"all hidden\">")) { celeb.celeb_Summary = HtmlDecoder.CutString(sDivInfo, "<span class=\"all hidden\">", "</span>").Replace("<br/>", "$").Trim(); } else { celeb.celeb_Summary = HtmlDecoder.CutString(sDivInfo, "<div class=\"bd\">", "</div>").Replace("<br/>", "$").Trim(); } string[] summarys = celeb.celeb_Summary.Split('$'); temp.Clear(); foreach (var item in summarys) { if (string.IsNullOrEmpty(item) || string.IsNullOrWhiteSpace(item)) { continue; } temp.Append(" ").Append(item.Trim()).Append('\n'); } celeb.celeb_Summary = temp.ToString(); return(celeb); }