Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        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;
 }
Esempio n. 4
0
 /// <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();
     }
 }
Esempio n. 5
0
 /// <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();
     }
 }
Esempio n. 6
0
        /// <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();
            }
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        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));
        }
Esempio n. 9
0
        /// <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);
            }
        }
Esempio n. 10
0
        //
        // 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));
        }
Esempio n. 11
0
        //
        // 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));
        }
Esempio n. 12
0
        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;
        }
Esempio n. 13
0
        /// <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);
        }