/// <summary> /// 获取用户所有文章类型 /// </summary> /// <returns></returns> public static IQueryable <BlogTypes> GetAllType(string name) { BLL.BlogTypesBLL type = new BLL.BlogTypesBLL(); return(type.GetList(t => t.BlogUsersSet.UserName == name)); //.Select(t => new { Id = t.Id, TypeName = t.TypeName }) //.ToList() //.Select(t => new ModelDB.BlogTypes() { Id = t.Id, TypeName = t.TypeName }).ToList(); }
public ActionResult GetTypeBlogs(int id, string name, int?typeId) { Response.Cache.SetOmitVaryStar(true); BLL.BlogTypesBLL typebll = new BLL.BlogTypesBLL(); var type = typebll.GetList(t => t.Id == typeId && t.BlogUsersSet.UserName == name).FirstOrDefault(); Dictionary <string, object> dic = new Dictionary <string, object>(); if (type != null) { var listblog = type.Blogs.Where(t => t.IsDel == false).OrderByDescending(t => t.BlogCreateTime).Skip((id - 1) * sizePage).Take(sizePage) .Select(t => new { BlogCreateTime = t.BlogCreateTime, BlogContent = t.BlogContent, BlogTitle = t.BlogTitle, Id = t.Id, BlogReadNum = t.BlogReadNum, BlogCommentNum = t.BlogCommentNum }) .ToList() .Select(t => new ModelDB.Blogs() { Id = t.Id, BlogTitle = t.BlogTitle, BlogCreateTime = t.BlogCreateTime, BlogContent = MyHtmlHelper.GetHtmlText(t.BlogContent), BlogReadNum = t.BlogReadNum, BlogCommentNum = t.BlogCommentNum }) .ToList(); dic.Add("blog", listblog); dic.Add("type", type.TypeName); int mcount = type.Blogs.Count(); int total = (mcount / sizePage) + (mcount % sizePage > 0 ? 1 : 0); dic.Add("total", total); SetDic(dic, name); return(View(dic)); } return(View()); }
/// <summary> /// 转发 /// </summary> public void Forward() { Response.ContentType = "application/json"; var ResultValue = string.Empty; var data = Request.QueryString["mydata"]; string callback = Request.QueryString["callback"]; JavaScriptSerializer jss = new JavaScriptSerializer(); Dictionary <string, string> dic = jss.Deserialize <Dictionary <string, string> >(data); var name = dic["username"].Trim(); var pass = dic["password"].Trim(); var userinfo = CacheData.GetAllUserInfo().Where(t => t.UserName == name && t.UserPass == pass.MD5().MD5()).FirstOrDefault(); object tyeList = null; if (userinfo != null) { var tag = dic["tag"].Trim(); var type = dic["type"].Trim(); var url = dic["url"].Trim(); int typeint = -1; int.TryParse(type, out typeint); var tags = tag.Split(','); var jp = new JumonyParser(); var html = jp.LoadDocument(url); var titlehtml = html.Find(".postTitle a").FirstOrDefault().InnerHtml(); titlehtml = "【转】" + titlehtml; var bodyhtml = html.Find("#cnblogs_post_body").FirstOrDefault().InnerHtml(); bodyhtml += "</br><div class='div_zf'>==================================<a href='" + url + "' target='_blank'>原文链接</a>==================================</div>"; var mtag = BLL.Common.GetDataHelper.GetAllTag().Where(t => tags.Contains(t.TagName)).ToList(); var blogtagid = new List <int>(); for (int i = 0; i < tags.Length; i++) { blogtagid.Add(this.GetTagId(tags[i], userinfo.Id)); } //&& t.UsersId == userinfo.Id 理论是不用 加用户id 筛选 var myBlogTags = new BlogTagsBLL().GetList(t => blogtagid.Contains(t.Id), isAsNoTracking: false).ToList(); var myBlogTypes = new BLL.BlogTypesBLL().GetList(t => t.Id == typeint, isAsNoTracking: false).ToList(); object obj = null; string call = string.Empty; BLL.BlogsBLL blogbll = new BLL.BlogsBLL(); var blogtitle = blogbll.GetList(t => t.UsersId == userinfo.Id).OrderByDescending(t => t.Id).FirstOrDefault().BlogTitle; if (blogtitle == titlehtml) { obj = new { s = "no", m = "已存在相同标题博客文章~", u = GetSiteUrl() }; call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } var blogmode = new Blogs.ModelDB.Blogs() { UsersId = userinfo.Id, BlogTitle = titlehtml, BlogTypes = myBlogTypes, BlogTags = myBlogTags, BlogContent = bodyhtml, CreateTime = DateTime.Now, BlogCreateTime = DateTime.Now, BlogUpTime = DateTime.Now, IsShowMyHome = true }; blogbll.Add(blogmode); if (blogbll.save() > 0) { obj = new { s = "ok", m = "发布成功", u = GetSiteUrl() + "/" + userinfo.UserName + "/" + blogmode.Id + ".html" }; call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } obj = new { s = "no", m = "发布失败", u = GetSiteUrl() + "/" + userinfo.UserName + "/" + blogmode.Id + ".html" }; call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } else { var obj = new { s = "no", m = "发布失败", u = GetSiteUrl() + "/" }; var call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } //var cc = callback + "('ok')"; //Response.ContentType = "application/json"; //Response.Write(cc); }
/// <summary> /// 根据用户导入cnblog数据 /// </summary> /// <param name="userName"></param> /// <returns></returns> public string Import(string userName, string iszf, string isshowhome, string isshowmyhome) { userName = userName.Trim(); int blosNumber = 0; JavaScriptSerializer jss = new JavaScriptSerializer(); string url = "http://www.cnblogs.com/" + userName + @"/mvc/blog/sidecolumn.aspx"; HtmlAgilityPack.HtmlWeb htmlweb = new HtmlAgilityPack.HtmlWeb(); HtmlAgilityPack.HtmlDocument document = new HtmlDocument(); var docment = htmlweb.Load(url); string userid = GetCnblogUserId(userName); var liS = docment.DocumentNode.SelectNodes("//*[@id='sidebar_categories']/div[1]/ul/li"); foreach (var item in liS) { var tXPath = item.XPath; var href = item.SelectSingleNode(tXPath + "/a").Attributes["href"].Value; var blogtype = htmlweb.Load(href); //var entrylistItem = blogtype.DocumentNode.SelectNodes("//*[@id='mainContent']/div/div[2]/div[@class='entrylistItem']"); var entrylistItem = blogtype.DocumentNode.SelectNodes("//div[@class='entrylistItem']"); if (null == entrylistItem) //做兼容 { entrylistItem = blogtype.DocumentNode.SelectNodes("//div[@class='post post-list-item']"); // } if (null == entrylistItem) { continue; } foreach (var typeitem in entrylistItem) { var typeitemXPath = typeitem.XPath; var typeitemhrefObj = typeitem.SelectSingleNode(typeitemXPath + "/div/a"); if (null == typeitemhrefObj) //做兼容 { typeitemhrefObj = typeitem.SelectSingleNode(typeitemXPath + "/h2/a"); } var typeitemhref = typeitemhrefObj.Attributes["href"].Value; if (IsAreBlog(typeitemhref)) { continue;//说明这篇文章已经备份过了的 } var bloghtml = htmlweb.Load(typeitemhref); var blogcontextobj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='cnblogs_post_body']");//.InnerHtml; if (blogcontextobj == null) { continue; //有可能是加密文章 } var blogcontext = blogcontextobj.InnerHtml; var blogNameObj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='Header1_HeaderTitle']"); if (null == blogNameObj) { blogNameObj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='lnkBlogTitle']"); } try { blogName = blogNameObj.InnerText; } catch (Exception) { } var blogtitle = bloghtml.DocumentNode.SelectSingleNode("//*[@id='cb_post_title_url']").InnerText; var blogurl = bloghtml.DocumentNode.SelectSingleNode("//*[@id='cb_post_title_url']").Attributes["href"].Value; var blogtypetagurl = "http://www.cnblogs.com/mvc/blog/CategoriesTags.aspx?blogApp=" + userName + "&blogId=" + userid + "&postId=" + typeitemhref.Substring(typeitemhref.LastIndexOf('/') + 1, typeitemhref.LastIndexOf('.') - typeitemhref.LastIndexOf('/') - 1); var blogtag = Blogs.Common.Helper.MyHtmlHelper.GetRequest(blogtypetagurl); var jsonobj = jss.Deserialize <Dictionary <string, string> >(blogtag); if (null == jsonobj) { continue;//如果没有 则返回 (这里只能去 数字.html 不能取那种自定义的url) } var tagSplit = jsonobj["Tags"].Split(','); var blogtagid = new List <int>(); for (int i = 0; i < tagSplit.Length; i++) { if (tagSplit[i].Length >= 1 && tagSplit[i].LastIndexOf('<') >= 1) { var blogtagname = tagSplit[i].Substring(tagSplit[i].IndexOf('>') + 1, tagSplit[i].LastIndexOf('<') - tagSplit[i].IndexOf('>') - 1); blogtagid.Add(this.GetTagId(blogtagname, userName)); } } var categoriesSplit = jsonobj["Categories"].Split(','); var blogtypeid = new List <int>(); for (int i = 0; i < categoriesSplit.Length; i++) { if (categoriesSplit[i].Length >= 1 && categoriesSplit[i].LastIndexOf('<') >= 1) { var blogtypename = categoriesSplit[i].Substring(categoriesSplit[i].IndexOf('>') + 1, categoriesSplit[i].LastIndexOf('<') - categoriesSplit[i].IndexOf('>') - 1); blogtypeid.Add(this.GetTypeId(blogtypename, userName)); } } var blogtimeobj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='post-date']"); var blogtime = ""; if (null != blogtimeobj) { blogtime = blogtimeobj.InnerText; } DateTime?createtime = null; var Outcreatetime = DateTime.Now; if (DateTime.TryParse(blogtime, out Outcreatetime)) { createtime = Outcreatetime; } BlogsBLL blog = new BlogsBLL(); var myBlogTags = new BlogTagsBLL().GetList(t => blogtagid.Contains(t.Id), isAsNoTracking: false).ToList(); //.ToList(); var myBlogTypes = new BLL.BlogTypesBLL().GetList(t => blogtypeid.Contains(t.Id), isAsNoTracking: false).ToList(); //.ToList(); try { var modelMyBlogs = new ModelDB.Blogs() { BlogContent = blogcontext, BlogCreateTime = createtime, BlogTitle = blogtitle, BlogUrl = blogurl, IsDel = false, BlogTags = myBlogTags, BlogTypes = myBlogTypes, UsersId = GetUserId(userName), BlogForUrl = blogurl, IsForwarding = iszf == "true", IsShowMyHome = isshowmyhome == "true", IsShowHome = isshowhome == "true" }; blog.Add(modelMyBlogs); blog.save(); var newtag = string.Empty; try { modelMyBlogs.BlogTags.Where(t => true).ToList().ForEach(t => newtag += t.TagName + " "); var newblogurl = "/" + modelMyBlogs.BlogUsersSet.UserName + "/" + modelMyBlogs.Id + ".html"; SearchResult search = new SearchResult() { flag = modelMyBlogs.UsersId, id = modelMyBlogs.Id, title = blogtitle, clickQuantity = 0, blogTag = newtag, content = getText(blogcontext, document), url = newblogurl }; SafetyWriteHelper <SearchResult> .logWrite(search, PanGuLuceneHelper.instance.CreateIndex); } catch (Exception) { } var postid = blogurl.Substring(blogurl.LastIndexOf('/') + 1); postid = postid.Substring(0, postid.LastIndexOf('.')); testJumonyParser(modelMyBlogs.Id, postid, userName); blosNumber++; } catch (Exception) { throw; } } } if (blosNumber > 0) { Blogs.BLL.Common.GetDataHelper.GetAllTag(); Blogs.BLL.Common.CacheData.GetAllType(true); Blogs.BLL.Common.CacheData.GetAllUserInfo(true); return("成功导入" + blosNumber + "篇Blog"); } return("ok"); }
public string Release() { JSData jsdata = new JSData(); var content = Request.Form["content"]; //正文内容 var title = Request.Form["title"]; //标题 var oldtag = Request.Form["oldtag"]; //旧的标签 var newtag = Request.Form["newtag"]; //新的标签 var types = Request.Form["chk_type"]; //文章类型 var isshowhome = Request.Form["isshowhome"]; //是否显示在主页 var isshowmyhome = Request.Form["isshowmyhome"]; //是否显示在个人主页 var blogid = Request.Form["blogid"]; // int numblogid = -1; int.TryParse(blogid, out numblogid); #region 数据验证 if (null == BLL.Common.BLLSession.UserInfoSessioin) { jsdata.Messg = "您还未登录~"; } else if (BLL.Common.BLLSession.UserInfoSessioin.IsLock) { jsdata.Messg = "您的账户已经被锁定,请联系管理员~"; } else if (string.IsNullOrEmpty(content)) { jsdata.Messg = "内容不能为空~"; } else if (content.Length >= 80000) { jsdata.Messg = "发布内容过多~"; } else if (string.IsNullOrEmpty(title)) { jsdata.Messg = "标题不能为空~"; } else if (title.Length >= 100) { jsdata.Messg = "标题过长~"; } if (!string.IsNullOrEmpty(jsdata.Messg)) { jsdata.State = EnumState.失败; return(jsdata.ToJson()); } #endregion BLL.BlogsBLL blogbll = new BLL.BlogsBLL(); var blogtemp = blogbll.GetList(t => t.Id == numblogid, isAsNoTracking: false).FirstOrDefault(); var userid = numblogid > 0 ? blogtemp.UsersId : BLLSession.UserInfoSessioin.Id;//如果numblogid大于〇证明 是编辑修改 var sessionuserid = BLLSession.UserInfoSessioin.Id; //获取得 文章 类型集合 对象 var typelist = new List <int>(); foreach (string type in types.Split(',').ToList()) { if (!string.IsNullOrEmpty(type)) { typelist.Add(int.Parse(type)); } } // types.Split(',').ToList().ForEach(t => typelist.Add(int.Parse(t))); var myBlogTypes = new BLL.BlogTypesBLL().GetList(t => typelist.Contains(t.Id), isAsNoTracking: false).ToList(); //获取得 文章 tag标签集合 对象 //old var oldtaglist = oldtag.Split(',').ToList(); var myOldTagTypes = new BLL.BlogTagsBLL().GetList(t => t.UsersId == userid && oldtaglist.Contains(t.TagName), isAsNoTracking: false).ToList(); //new var newtaglist = newtag.Split(',').ToList(); AddTag(newtaglist, userid);//保存到数据库 var myNweTagTypes = new BLL.BlogTagsBLL().GetList(t => t.UsersId == userid && newtaglist.Contains(t.TagName), isAsNoTracking: false).ToList(); myNweTagTypes.ForEach(t => myOldTagTypes.Add(t)); //ModelDB.Blogs blogtemp = new ModelDB.Blogs(); if (numblogid > 0) //如果有 blogid 则修改 { //blog = blogbll.GetList(t => t.Id == numblogid, isAsNoTracking: false).FirstOrDefault(); if (sessionuserid == blogtemp.UsersId || BLLSession.UserInfoSessioin.UserName == admin) //一定要验证更新的博客是否是登陆的用户 { blogtemp.BlogContent = content; blogtemp.BlogTitle = title; //blog.BlogUpTime = DateTime.Now; //blog.BlogCreateTime = DateTime.Now; blogtemp.IsShowMyHome = isshowmyhome == "true"; blogtemp.IsShowHome = isshowhome == "true"; blogtemp.BlogTypes.Clear();//更新之前要清空 不如会存在主外键约束异常 blogtemp.BlogTypes = myBlogTypes; blogtemp.BlogTags.Clear(); blogtemp.BlogTags = myOldTagTypes; blogtemp.IsDel = false; blogtemp.IsForwarding = false; jsdata.Messg = "修改成功~"; } else { jsdata.Messg = "您没有编辑此博文的权限~"; jsdata.JSurl = "/"; jsdata.State = EnumState.失败; return(jsdata.ToJson()); } } else //否则 新增 { var blogfirst = blogbll.GetList(t => t.UsersId == sessionuserid).OrderByDescending(t => t.Id).FirstOrDefault(); //var blogtitle = blogtemp.BlogTitle; //if (blogfirst != null) // blogtitle = blogtemp.BlogTitle; if (null != blogfirst && blogfirst.BlogTitle == title) { jsdata.Messg = "不能同时发表两篇一样标题的文章~"; } else { blogtemp = new ModelDB.Blogs() { UsersId = sessionuserid, BlogContent = content, BlogTitle = title, BlogUpTime = DateTime.Now, BlogCreateTime = DateTime.Now, IsShowMyHome = isshowmyhome == "true", IsShowHome = isshowhome == "true", BlogTypes = myBlogTypes, BlogTags = myOldTagTypes, IsDel = false, IsForwarding = false }; blogbll.Add(blogtemp); jsdata.Messg = "发布成功~"; } } // if (blogbll.save(false) > 0) { #region 添加 或 修改搜索索引 try { var newtagList = string.Empty; blogtemp.BlogTags.Where(t => true).ToList().ForEach(t => newtagList += t.TagName + " "); var newblogurl = "/" + BLLSession.UserInfoSessioin.UserName + "/" + blogtemp.Id + ".html"; SearchResult search = new SearchResult() { flag = blogtemp.UsersId, id = blogtemp.Id, title = blogtemp.BlogTitle, clickQuantity = 0, blogTag = newtagList, content = Blogs.Common.Helper.MyHtmlHelper.GetHtmlText(blogtemp.BlogContent), url = newblogurl }; SafetyWriteHelper <SearchResult> .logWrite(search, PanGuLuceneHelper.instance.CreateIndex); } catch (Exception) { } #endregion jsdata.State = EnumState.成功; jsdata.JSurl = "/" + CacheData.GetAllUserInfo().Where(t => t.Id == blogtemp.UsersId).First().UserName + "/" + blogtemp.Id + ".html"; return(jsdata.ToJson()); } jsdata.Messg = string.IsNullOrEmpty(jsdata.Messg) ? "操作失败~" : jsdata.Messg; jsdata.State = EnumState.失败; return(jsdata.ToJson()); }
public string Release() { JSData jsdata = new JSData(); var content = Request.Form["content"]; //正文内容 var title = Request.Form["title"]; //标题 var oldtag = Request.Form["oldtag"]; //旧的标签(从checkbox中选取的) var newtag = Request.Form["newtag"]; //新的标签(在tag_text中输入的) var type = Request.Form["chk_type"]; //文章类型 var isshowhome = Request.Form["isshowhome"]; //是否显示在主页 var blogid = Request.Form["blogid"]; // int numblogid = -1; int.TryParse(blogid, out numblogid); #region 数据验证 if (null == BLL.Common.BLLSession.UserInfoSessioin) { jsdata.Message = "您还未登录~"; } /*else if (BLL.Common.BLLSession.UserInfoSessioin.IsLock) * jsdata.Message = "您的账户未激活,暂只能评论。~";*/ else if (string.IsNullOrEmpty(content)) { jsdata.Message = "内容不能为空~"; } else if (content.Length >= 300000) { jsdata.Message = "发布内容过多~"; } else if (string.IsNullOrEmpty(title)) { jsdata.Message = "标题不能为空~"; } else if (title.Length >= 100) { jsdata.Message = "标题过长~"; } if (!string.IsNullOrEmpty(jsdata.Message)) { jsdata.State = EnumState.失败; return(jsdata.ToJson()); } #endregion BLL.BlogsBLL blogbll = new BLL.BlogsBLL(); var blogtemp = blogbll.GetList(t => t.BlogId == numblogid, isAsNoTracking: false).FirstOrDefault(); var userid = numblogid > 0 ? blogtemp.UserId : BLLSession.UserInfoSessioin.UserId;//如果numblogid大于〇证明 是编辑修改 var sessionuserid = BLLSession.UserInfoSessioin.UserId; //获取得 文章 类型 BlogTypes myBlogType; if (type == null) { myBlogType = new BlogTypesBLL().GetList(t => (t.TypeName == "未分类" && t.UserId == BLLSession.UserInfoSessioin.UserId), isAsNoTracking: false).FirstOrDefault(); } else { var blogtype = int.Parse(type); myBlogType = new BLL.BlogTypesBLL().GetList(t => t.BlogTypeId == blogtype, isAsNoTracking: false).ToList().FirstOrDefault(); } //获取得 文章 tag标签集合 对象 //old var oldtaglist = oldtag.Split(',').ToList(); var myOldTag = new BLL.BlogTagsBLL().GetList(t => t.UserId == userid && oldtaglist.Contains(t.BlogTagName), isAsNoTracking: false).ToList(); //new var newtaglistname = newtag.Split(',').ToList(); //保存newtags到数据库 BlogTagsBLL tagBLL = new BlogTagsBLL(); List <string> distinctTemp = new List <string>(); foreach (string tagName in newtaglistname) { if (String.IsNullOrEmpty(tagName.Trim())) { continue; } if (distinctTemp.Contains(tagName.Trim())) { continue; } tagBLL.Add(new BlogTags { BlogTagName = tagName.Trim(), UserId = userid }); try { tagBLL.save(); } catch (Exception ex) { jsdata.Message = ex.ToString(); jsdata.State = EnumState.失败; return(jsdata.ToJson()); } distinctTemp.Add(tagName.Trim()); BLL.DataCache.GetAllTag(true); } ////////////////////// var myTags = new BLL.BlogTagsBLL().GetList(t => t.UserId == userid && newtaglistname.Contains(t.BlogTagName), isAsNoTracking: false).ToList(); myOldTag.ForEach(t => myTags.Add(t)); //ModelDB.Blogs blogtemp = new ModelDB.Blogs(); if (numblogid > 0) //如果有 blogid 则修改 { //blog = blogbll.GetList(t => t.Id == numblogid, isAsNoTracking: false).FirstOrDefault(); if (sessionuserid == blogtemp.UserId || BLLSession.UserInfoSessioin.UserName == admin) //一定要验证更新的博客是否是登陆的用户 { blogtemp.Content = content; blogtemp.BlogRemarks = MyHtmlHelper.GetHtmlText(content); blogtemp.Title = title; blogtemp.IsShowHome = isshowhome == "true"; blogtemp.BlogTypes = myBlogType; blogtemp.BlogTags.Clear();//更新之前要清空 否则会存在主外键约束异常 blogtemp.BlogTags = myTags; blogtemp.IsDel = false; blogtemp.IsForwarding = false; jsdata.Message = "修改成功~"; } else { jsdata.Message = "您没有编辑此博文的权限~"; jsdata.JSurl = "/"; jsdata.State = EnumState.失败; return(jsdata.ToJson()); } } else //否则是新发布 { var blogfirst = blogbll.GetList(t => t.UserId == sessionuserid).OrderByDescending(t => t.BlogId).FirstOrDefault(); //var blogtitle = blogtemp.BlogTitle; //if (blogfirst != null) // blogtitle = blogtemp.BlogTitle; if (null != blogfirst && blogfirst.Title == title) { jsdata.Message = "不能同时发表两篇一样标题的文章~"; } else { blogtemp = new Blogs() { UserId = sessionuserid, Content = content, BlogRemarks = MyHtmlHelper.GetHtmlText(content), Title = title, IsShowHome = isshowhome == "true", BlogTypes = myBlogType, BlogTags = myTags, IsDel = false, IsForwarding = false }; blogbll.Add(blogtemp); jsdata.Message = "发布成功~"; } } // try { if (blogbll.save(false) > 0) { blogtemp.BlogUrl = "/" + BLLSession.UserInfoSessioin.UserName + "/" + blogtemp.BlogId + ".html"; blogbll.save(); BLL.DataCache.GetAllType(true); #region 添加 或 修改搜索索引 var newtagList = string.Empty; blogtemp.BlogTags.Where(t => true).ToList().ForEach(t => newtagList += t.BlogTagName + " "); var newblogurl = "/" + BLLSession.UserInfoSessioin.UserName + "/" + blogtemp.BlogId + ".html"; // SearchResult search = new SearchResult() // { // flag = blogtemp.UsersId, // id = blogtemp.Id, // title = blogtemp.BlogTitle, // clickQuantity = 0, // blogTag = newtagList, // content = Blogs.Common.Helper.MyHtmlHelper.GetHtmlText(blogtemp.BlogContent), // url = newblogurl // }; // SafetyWriteHelper<SearchResult>.logWrite(search, PanGuLuceneHelper.instance.CreateIndex); // #endregion jsdata.State = EnumState.成功; jsdata.JSurl = "/" + DataCache.GetUsersInfo().Where(t => t.UserId == blogtemp.UserId).First().UserName + "/" + blogtemp.BlogId + ".html"; return(jsdata.ToJson()); } } catch (Exception ex) { jsdata.State = EnumState.失败; jsdata.Message = ex.ToString(); return(jsdata.ToJson()); } jsdata.State = EnumState.失败; return(jsdata.ToJson()); }
/// <summary> /// 获取用户所有文章类型 /// </summary> /// <returns></returns> public static IQueryable <BlogTypes> GetAllType(string name) { BLL.BlogTypesBLL type = new BLL.BlogTypesBLL(); return(type.GetList(t => t.BlogUsers.UserName == name)); }
public ActionResult GetTypeBlogs(int id, string name, int? typeId) { Response.Cache.SetOmitVaryStar(true); BLL.BlogTypesBLL typebll = new BLL.BlogTypesBLL(); var type = typebll.GetList(t => t.Id == typeId && t.BlogUsersSet.UserName == name).FirstOrDefault(); Dictionary<string, object> dic = new Dictionary<string, object>(); if (type != null) { var listblog = type.Blogs.Where(t => t.IsDel == false).OrderByDescending(t => t.BlogCreateTime).Skip((id - 1) * sizePage).Take(sizePage) .Select(t => new { BlogCreateTime = t.BlogCreateTime, BlogContent = t.BlogContent, BlogTitle = t.BlogTitle, Id = t.Id, BlogReadNum = t.BlogReadNum, BlogCommentNum = t.BlogCommentNum }) .ToList() .Select(t => new ModelDB.Blogs() { Id = t.Id, BlogTitle = t.BlogTitle, BlogCreateTime = t.BlogCreateTime, BlogContent = MyHtmlHelper.GetHtmlText(t.BlogContent), BlogReadNum = t.BlogReadNum, BlogCommentNum = t.BlogCommentNum }) .ToList(); dic.Add("blog", listblog); dic.Add("type", type.TypeName); int mcount = type.Blogs.Count(); int total = (mcount / sizePage) + (mcount % sizePage > 0 ? 1 : 0); dic.Add("total", total); SetDic(dic, name); return View(dic); } return View(); }
public string Release() { JSData jsdata = new JSData(); var content = Request.Form["content"];//正文内容 var title = Request.Form["title"];//标题 var oldtag = Request.Form["oldtag"];//旧的标签 var newtag = Request.Form["newtag"];//新的标签 var types = Request.Form["chk_type"];//文章类型 var isshowhome = Request.Form["isshowhome"];//是否显示在主页 var isshowmyhome = Request.Form["isshowmyhome"];//是否显示在个人主页 var blogid = Request.Form["blogid"];// int numblogid = -1; int.TryParse(blogid, out numblogid); #region 数据验证 if (null == BLL.Common.BLLSession.UserInfoSessioin) jsdata.Messg = "您还未登录~"; else if (BLL.Common.BLLSession.UserInfoSessioin.IsLock) jsdata.Messg = "您的账户已经被锁定,请联系管理员~"; else if (string.IsNullOrEmpty(content)) jsdata.Messg = "内容不能为空~"; else if (content.Length >= 80000) jsdata.Messg = "发布内容过多~"; else if (string.IsNullOrEmpty(title)) jsdata.Messg = "标题不能为空~"; else if (title.Length >= 100) jsdata.Messg = "标题过长~"; if (!string.IsNullOrEmpty(jsdata.Messg)) { jsdata.State = EnumState.失败; return jsdata.ToJson(); } #endregion BLL.BlogsBLL blogbll = new BLL.BlogsBLL(); var blogtemp = blogbll.GetList(t => t.Id == numblogid, isAsNoTracking: false).FirstOrDefault(); var userid = numblogid > 0 ? blogtemp.UsersId : BLLSession.UserInfoSessioin.Id;//如果numblogid大于〇证明 是编辑修改 var sessionuserid = BLLSession.UserInfoSessioin.Id; //获取得 文章 类型集合 对象 var typelist = new List<int>(); foreach (string type in types.Split(',').ToList()) { if (!string.IsNullOrEmpty(type)) typelist.Add(int.Parse(type)); } // types.Split(',').ToList().ForEach(t => typelist.Add(int.Parse(t))); var myBlogTypes = new BLL.BlogTypesBLL().GetList(t => typelist.Contains(t.Id), isAsNoTracking: false).ToList(); //获取得 文章 tag标签集合 对象 //old var oldtaglist = oldtag.Split(',').ToList(); var myOldTagTypes = new BLL.BlogTagsBLL().GetList(t => t.UsersId == userid && oldtaglist.Contains(t.TagName), isAsNoTracking: false).ToList(); //new var newtaglist = newtag.Split(',').ToList(); AddTag(newtaglist, userid);//保存到数据库 var myNweTagTypes = new BLL.BlogTagsBLL().GetList(t => t.UsersId == userid && newtaglist.Contains(t.TagName), isAsNoTracking: false).ToList(); myNweTagTypes.ForEach(t => myOldTagTypes.Add(t)); //ModelDB.Blogs blogtemp = new ModelDB.Blogs(); if (numblogid > 0) //如果有 blogid 则修改 { //blog = blogbll.GetList(t => t.Id == numblogid, isAsNoTracking: false).FirstOrDefault(); if (sessionuserid == blogtemp.UsersId || BLLSession.UserInfoSessioin.UserName == admin) //一定要验证更新的博客是否是登陆的用户 { blogtemp.BlogContent = content; blogtemp.BlogTitle = title; //blog.BlogUpTime = DateTime.Now; //blog.BlogCreateTime = DateTime.Now; blogtemp.IsShowMyHome = isshowmyhome == "true"; blogtemp.IsShowHome = isshowhome == "true"; blogtemp.BlogTypes.Clear();//更新之前要清空 不如会存在主外键约束异常 blogtemp.BlogTypes = myBlogTypes; blogtemp.BlogTags.Clear(); blogtemp.BlogTags = myOldTagTypes; blogtemp.IsDel = false; blogtemp.IsForwarding = false; jsdata.Messg = "修改成功~"; } else { jsdata.Messg = "您没有编辑此博文的权限~"; jsdata.JSurl = "/"; jsdata.State = EnumState.失败; return jsdata.ToJson(); } } else //否则 新增 { var blogfirst = blogbll.GetList(t => t.UsersId == sessionuserid).OrderByDescending(t => t.Id).FirstOrDefault(); //var blogtitle = blogtemp.BlogTitle; //if (blogfirst != null) // blogtitle = blogtemp.BlogTitle; if (null != blogfirst && blogfirst.BlogTitle == title) { jsdata.Messg = "不能同时发表两篇一样标题的文章~"; } else { blogtemp = new ModelDB.Blogs() { UsersId = sessionuserid, BlogContent = content, BlogTitle = title, BlogUpTime = DateTime.Now, BlogCreateTime = DateTime.Now, IsShowMyHome = isshowmyhome == "true", IsShowHome = isshowhome == "true", BlogTypes = myBlogTypes, BlogTags = myOldTagTypes, IsDel = false, IsForwarding = false }; blogbll.Add(blogtemp); jsdata.Messg = "发布成功~"; } } // if (blogbll.save(false) > 0) { #region 添加 或 修改搜索索引 try { var newtagList = string.Empty; blogtemp.BlogTags.Where(t => true).ToList().ForEach(t => newtagList += t.TagName + " "); var newblogurl = "/" + BLLSession.UserInfoSessioin.UserName + "/" + blogtemp.Id + ".html"; SearchResult search = new SearchResult() { flag = blogtemp.UsersId, id = blogtemp.Id, title = blogtemp.BlogTitle, clickQuantity = 0, blogTag = newtagList, content = Blogs.Common.Helper.MyHtmlHelper.GetHtmlText(blogtemp.BlogContent), url = newblogurl }; SafetyWriteHelper<SearchResult>.logWrite(search, PanGuLuceneHelper.instance.CreateIndex); } catch (Exception) { } #endregion jsdata.State = EnumState.成功; jsdata.JSurl = "/" + CacheData.GetAllUserInfo().Where(t => t.Id == blogtemp.UsersId).First().UserName + "/" + blogtemp.Id + ".html"; return jsdata.ToJson(); } jsdata.Messg = string.IsNullOrEmpty(jsdata.Messg) ? "操作失败~" : jsdata.Messg; jsdata.State = EnumState.失败; return jsdata.ToJson(); }
/// <summary> /// 根据用户导入cnblog数据 /// </summary> /// <param name="userName"></param> /// <returns></returns> public string Import(string userName, string iszf, string isshowhome, string isshowmyhome) { userName = userName.Trim(); int blosNumber = 0; JavaScriptSerializer jss = new JavaScriptSerializer(); string url = "http://www.cnblogs.com/" + userName + @"/mvc/blog/sidecolumn.aspx"; HtmlAgilityPack.HtmlWeb htmlweb = new HtmlAgilityPack.HtmlWeb(); HtmlAgilityPack.HtmlDocument document = new HtmlDocument(); var docment = htmlweb.Load(url); string userid = GetCnblogUserId(userName); var liS = docment.DocumentNode.SelectNodes("//*[@id='sidebar_categories']/div[1]/ul/li"); foreach (var item in liS) { var tXPath = item.XPath; var href = item.SelectSingleNode(tXPath + "/a").Attributes["href"].Value; var blogtype = htmlweb.Load(href); //var entrylistItem = blogtype.DocumentNode.SelectNodes("//*[@id='mainContent']/div/div[2]/div[@class='entrylistItem']"); var entrylistItem = blogtype.DocumentNode.SelectNodes("//div[@class='entrylistItem']"); if (null == entrylistItem)//做兼容 entrylistItem = blogtype.DocumentNode.SelectNodes("//div[@class='post post-list-item']"); // if (null == entrylistItem) { continue; } foreach (var typeitem in entrylistItem) { var typeitemXPath = typeitem.XPath; var typeitemhrefObj = typeitem.SelectSingleNode(typeitemXPath + "/div/a"); if (null == typeitemhrefObj) //做兼容 typeitemhrefObj = typeitem.SelectSingleNode(typeitemXPath + "/h2/a"); var typeitemhref = typeitemhrefObj.Attributes["href"].Value; if (IsAreBlog(typeitemhref)) continue;//说明这篇文章已经备份过了的 var bloghtml = htmlweb.Load(typeitemhref); var blogcontextobj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='cnblogs_post_body']");//.InnerHtml; if (blogcontextobj == null) continue;//有可能是加密文章 var blogcontext = blogcontextobj.InnerHtml; var blogNameObj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='Header1_HeaderTitle']"); if (null == blogNameObj) blogNameObj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='lnkBlogTitle']"); try { blogName = blogNameObj.InnerText; } catch (Exception) { } var blogtitle = bloghtml.DocumentNode.SelectSingleNode("//*[@id='cb_post_title_url']").InnerText; var blogurl = bloghtml.DocumentNode.SelectSingleNode("//*[@id='cb_post_title_url']").Attributes["href"].Value; var blogtypetagurl = "http://www.cnblogs.com/mvc/blog/CategoriesTags.aspx?blogApp=" + userName + "&blogId=" + userid + "&postId=" + typeitemhref.Substring(typeitemhref.LastIndexOf('/') + 1, typeitemhref.LastIndexOf('.') - typeitemhref.LastIndexOf('/') - 1); var blogtag = Blogs.Common.Helper.MyHtmlHelper.GetRequest(blogtypetagurl); var jsonobj = jss.Deserialize<Dictionary<string, string>>(blogtag); if (null == jsonobj) continue;//如果没有 则返回 (这里只能去 数字.html 不能取那种自定义的url) var tagSplit = jsonobj["Tags"].Split(','); var blogtagid = new List<int>(); for (int i = 0; i < tagSplit.Length; i++) { if (tagSplit[i].Length >= 1 && tagSplit[i].LastIndexOf('<') >= 1) { var blogtagname = tagSplit[i].Substring(tagSplit[i].IndexOf('>') + 1, tagSplit[i].LastIndexOf('<') - tagSplit[i].IndexOf('>') - 1); blogtagid.Add(this.GetTagId(blogtagname, userName)); } } var categoriesSplit = jsonobj["Categories"].Split(','); var blogtypeid = new List<int>(); for (int i = 0; i < categoriesSplit.Length; i++) { if (categoriesSplit[i].Length >= 1 && categoriesSplit[i].LastIndexOf('<') >= 1) { var blogtypename = categoriesSplit[i].Substring(categoriesSplit[i].IndexOf('>') + 1, categoriesSplit[i].LastIndexOf('<') - categoriesSplit[i].IndexOf('>') - 1); blogtypeid.Add(this.GetTypeId(blogtypename, userName)); } } var blogtimeobj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='post-date']"); var blogtime = ""; if (null != blogtimeobj) blogtime = blogtimeobj.InnerText; DateTime? createtime = null; var Outcreatetime = DateTime.Now; if (DateTime.TryParse(blogtime, out Outcreatetime)) createtime = Outcreatetime; BlogsBLL blog = new BlogsBLL(); var myBlogTags = new BlogTagsBLL().GetList(t => blogtagid.Contains(t.Id), isAsNoTracking: false).ToList();//.ToList(); var myBlogTypes = new BLL.BlogTypesBLL().GetList(t => blogtypeid.Contains(t.Id), isAsNoTracking: false).ToList();//.ToList(); try { var modelMyBlogs = new ModelDB.Blogs() { BlogContent = blogcontext, BlogCreateTime = createtime, BlogTitle = blogtitle, BlogUrl = blogurl, IsDel = false, BlogTags = myBlogTags, BlogTypes = myBlogTypes, UsersId = GetUserId(userName), BlogForUrl = blogurl, IsForwarding = iszf == "true", IsShowMyHome = isshowmyhome == "true", IsShowHome = isshowhome == "true" }; blog.Add(modelMyBlogs); blog.save(); var newtag = string.Empty; try { modelMyBlogs.BlogTags.Where(t => true).ToList().ForEach(t => newtag += t.TagName + " "); var newblogurl = "/" + modelMyBlogs.BlogUsersSet.UserName + "/" + modelMyBlogs.Id + ".html"; SearchResult search = new SearchResult() { flag = modelMyBlogs.UsersId, id = modelMyBlogs.Id, title = blogtitle, clickQuantity = 0, blogTag = newtag, content = getText(blogcontext, document), url = newblogurl }; SafetyWriteHelper<SearchResult>.logWrite(search, PanGuLuceneHelper.instance.CreateIndex); } catch (Exception) { } var postid = blogurl.Substring(blogurl.LastIndexOf('/') + 1); postid = postid.Substring(0, postid.LastIndexOf('.')); testJumonyParser(modelMyBlogs.Id, postid, userName); blosNumber++; } catch (Exception) { throw; } } } if (blosNumber > 0) { Blogs.BLL.Common.GetDataHelper.GetAllTag(); Blogs.BLL.Common.CacheData.GetAllType(true); Blogs.BLL.Common.CacheData.GetAllUserInfo(true); return "成功导入" + blosNumber + "篇Blog"; } return "ok"; }
static string siteUrl = string.Empty; // "blog.haojima.net"; #endregion Fields #region Methods /// <summary> /// 转发 /// </summary> public void Forward() { Response.ContentType = "application/json"; var ResultValue = string.Empty; var data = Request.QueryString["mydata"]; string callback = Request.QueryString["callback"]; JavaScriptSerializer jss = new JavaScriptSerializer(); Dictionary<string, string> dic = jss.Deserialize<Dictionary<string, string>>(data); var name = dic["username"].Trim(); var pass = dic["password"].Trim(); var userinfo = CacheData.GetAllUserInfo().Where(t => t.UserName == name && t.UserPass == pass.MD5().MD5()).FirstOrDefault(); object tyeList = null; if (userinfo != null) { var tag = dic["tag"].Trim(); var type = dic["type"].Trim(); var url = dic["url"].Trim(); int typeint = -1; int.TryParse(type, out typeint); var tags = tag.Split(','); var jp = new JumonyParser(); var html = jp.LoadDocument(url); var titlehtml = html.Find(".postTitle a").FirstOrDefault().InnerHtml(); titlehtml = "【转】" + titlehtml; var bodyhtml = html.Find("#cnblogs_post_body").FirstOrDefault().InnerHtml(); bodyhtml += "</br><div class='div_zf'>==================================<a href='" + url + "' target='_blank'>原文链接</a>==================================</div>"; var mtag = BLL.Common.GetDataHelper.GetAllTag().Where(t => tags.Contains(t.TagName)).ToList(); var blogtagid = new List<int>(); for (int i = 0; i < tags.Length; i++) { blogtagid.Add(this.GetTagId(tags[i], userinfo.Id)); } //&& t.UsersId == userinfo.Id 理论是不用 加用户id 筛选 var myBlogTags = new BlogTagsBLL().GetList(t => blogtagid.Contains(t.Id), isAsNoTracking: false).ToList(); var myBlogTypes = new BLL.BlogTypesBLL().GetList(t => t.Id == typeint, isAsNoTracking: false).ToList(); object obj = null; string call = string.Empty; BLL.BlogsBLL blogbll = new BLL.BlogsBLL(); var blogtitle = blogbll.GetList(t => t.UsersId == userinfo.Id).OrderByDescending(t => t.Id).FirstOrDefault().BlogTitle; if (blogtitle == titlehtml) { obj = new { s = "no", m = "已存在相同标题博客文章~", u = GetSiteUrl() }; call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } var blogmode = new Blogs.ModelDB.Blogs() { UsersId = userinfo.Id, BlogTitle = titlehtml, BlogTypes = myBlogTypes, BlogTags = myBlogTags, BlogContent = bodyhtml, CreateTime = DateTime.Now, BlogCreateTime = DateTime.Now, BlogUpTime = DateTime.Now, IsShowMyHome = true }; blogbll.Add(blogmode); if (blogbll.save() > 0) { obj = new { s = "ok", m = "发布成功", u = GetSiteUrl() + "/" + userinfo.UserName + "/" + blogmode.Id + ".html" }; call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } obj = new { s = "no", m = "发布失败", u = GetSiteUrl() + "/" + userinfo.UserName + "/" + blogmode.Id + ".html" }; call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } else { var obj = new { s = "no", m = "发布失败", u = GetSiteUrl() + "/" }; var call = callback + "('" + obj.ToJson() + "')"; Response.Write(call); return; } //var cc = callback + "('ok')"; //Response.ContentType = "application/json"; //Response.Write(cc); }