⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 core.cs

📁 c#编的CSDN离线助手
💻 CS
📖 第 1 页 / 共 2 页
字号:
/// <Copyright>
/// This Program Written By Luyan(5drush)
/// 2002/4/23
/// Email:nluyan@163.net
/// QQ:5743345
/// </Copyright>

using System;
using System.Data;
using System.Collections;
using System.Text;
using System.Collections.Specialized;

namespace CSDN
{
	/// <summary>
	/// Core 的摘要说明。
	/// </summary>
	public class Core
	{

		private LDA lda = new LDA();
		private RDA rda = new RDA();
		private string aspsessionid;
		private bool hasLogin;

		public Core()
		{

		}

		public bool HasLogin
		{
			get
			{
				return hasLogin;
			}
		}

		public DataView GetTopicIndexDataView(int RoomId, int Block)
		{
			DataView dv = lda.GetTopicIndexDataView(RoomId, Block);
			dv.AllowEdit = false;
			dv.AllowNew = false;
			return dv;
		}

		public DataView dvTopicIndex
		{
			get
			{
				return lda.dvTopicIndex;
			}
		}

		public DataView dvIssue
		{
			get
			{
				return lda.dvIssue;
			}
		}

		public DataView dvReply
		{
			get
			{
				return lda.dvReply;
			}
		}

		public  void UpdateTopicIndex(int RoomId, int Block)
		{
			TopicItemIndex rdaTopicItemIndex = rda.GetTopicItemIndex(RoomId,Block);
			string TopicMaxId = lda.GetTopicMaxId(RoomId, Block);
			DateTime ReplyMaxTime = lda.GetReplyMaxTime(RoomId,Block);
			for(int i = 0; i < rdaTopicItemIndex.Length; i++)
			{
				if(Int32.Parse(rdaTopicItemIndex[i].TopicId) > Int32.Parse(TopicMaxId))
				{
					lda.AddTopicIndex(
						rdaTopicItemIndex[i].TopicId,
						rdaTopicItemIndex[i].TopicName,
						rdaTopicItemIndex[i].PostUserName,
						rdaTopicItemIndex[i].ReplyNum,
						rdaTopicItemIndex[i].ReplyDateTime,
						rdaTopicItemIndex[i].Point,
						rdaTopicItemIndex[i].EndState,
						1,
						RoomId.ToString(),
						Block.ToString()
					);
				}
				else if(rdaTopicItemIndex[i].ReplyDateTime > ReplyMaxTime)
				{
					if(lda.HasTopicIndex(rdaTopicItemIndex[i].TopicId))
					{
						if(rdaTopicItemIndex[i].ReplyNum > lda.GetTopicIndexReplyNum(rdaTopicItemIndex[i].TopicId))
						{
							if(lda.GetTopicIndexStatus(rdaTopicItemIndex[i].TopicId) == 0)
							{
								lda.SetTopicIndexStatus(rdaTopicItemIndex[i].TopicId,2);
							}
							lda.SetTopicIndexReplyNum(rdaTopicItemIndex[i].TopicId,rdaTopicItemIndex[i].ReplyNum);
							lda.SetTopicIndexReplyDateTime(rdaTopicItemIndex[i].TopicId,rdaTopicItemIndex[i].ReplyDateTime.ToString());
						}
					}
					else
						lda.AddTopicIndex(
							rdaTopicItemIndex[i].TopicId,
							rdaTopicItemIndex[i].TopicName,
							rdaTopicItemIndex[i].PostUserName,
							rdaTopicItemIndex[i].ReplyNum,
							rdaTopicItemIndex[i].ReplyDateTime,
							rdaTopicItemIndex[i].Point,
							rdaTopicItemIndex[i].EndState,
							1,
							RoomId.ToString(),
							Block.ToString()
							);
				}
				else
				{
					continue;
				}
			}
		}

		/// <summary>
		/// 获取帖子的细节,如果数据库中不存在,则从网上下载该帖子,并更新数据库
		/// </summary>
		/// <param name="TopicId"></param>
		/// <returns></returns>
		public Topic GetTopic(string TopicId)
		{
			Topic topic;
			switch(lda.GetTopicIndexStatus(TopicId))
			{
				case 1 ://完全更新
					try
					{
						topic = rda.GetTopic(TopicId);
					}
					catch(Exception ex)
					{
						if(ex.Message != "基础连接已经关闭:无法连接到远程服务器。")
						{
							lda.SetTopicIndexStatus(TopicId,3);
							return null;
						}
						else
						{
							throw ex;
						}
					}
					lda.AddIssue(
						topic.TopicId,
						topic.TopicName,
						topic.TopicPoster.PostUserId,
						topic.TopicPoster.PostUserName,
						topic.TopicPoster.PostUserNickName,
						topic.TopicPoster.Rank,
						topic.TopicPoster.RankNum,
						topic.TopicPoster.Credit,
						topic.RoomName,
						topic.ReplyNum,
						topic.PostDateTime,
						topic.Point,
						topic.ReadNum,
						topic.RoomId.ToString(),
						topic.EndState,
						topic.Content
						);
					for(int i = 0; i < topic.ReplyIndex.Length; i++)
					{
						lda.AddReply(
							topic.ReplyIndex[i].ReplyId,
							topic.ReplyIndex[i].ReplyPoster.PostUserId,
							topic.ReplyIndex[i].ReplyPoster.PostUserName,
							topic.ReplyIndex[i].ReplyPoster.PostUserNickName,
							topic.ReplyIndex[i].ReplyPoster.Rank,
							topic.ReplyIndex[i].ReplyPoster.RankNum,
							topic.ReplyIndex[i].ReplyPoster.Credit,
							topic.ReplyIndex[i].TopicId,
							topic.ReplyIndex[i].Point,
							topic.ReplyIndex[i].PostDateTime,
							topic.ReplyIndex[i].Content
							);
					}
					lda.SetTopicIndexStatus(TopicId,0);
					break;
				case 2 ://回复更新
					try
					{
						topic = rda.GetTopic(TopicId);
					}
					catch
					{
						lda.SetTopicIndexStatus(TopicId,3);
						return null;
					}
					for(int i = lda.GetTopic(TopicId).ReplyIndex.Length; i < topic.ReplyIndex.Length; i++)
					{
						lda.AddReply(
							topic.ReplyIndex[i].ReplyId,
							topic.ReplyIndex[i].ReplyPoster.PostUserId,
							topic.ReplyIndex[i].ReplyPoster.PostUserName,
							topic.ReplyIndex[i].ReplyPoster.PostUserNickName,
							topic.ReplyIndex[i].ReplyPoster.Rank,
							topic.ReplyIndex[i].ReplyPoster.RankNum,
							topic.ReplyIndex[i].ReplyPoster.Credit,
							topic.ReplyIndex[i].TopicId,
							topic.ReplyIndex[i].Point,
							topic.ReplyIndex[i].PostDateTime,
							topic.ReplyIndex[i].Content
							);
					}
					lda.SetTopicIndexReplyNum(topic.TopicId,topic.ReplyNum);
					lda.SetTopicIndexReplyDateTime(topic.TopicId,topic.ReplyIndex[topic.ReplyIndex.Length - 1].PostDateTime.ToString());
					lda.SetTopicIndexStatus(TopicId,0);
					break;
				case 3 :
					return null;
				default:
					topic = lda.GetTopic(TopicId);
					break;
			}
			return topic;
		}

		/// <summary>
		/// 检查该帖子是否被更新
		/// </summary>
		/// <param name="TopicId"></param>
		/// <returns></returns>
		public bool TopicHasUpdated(String TopicId)
		{
			Topic localTopic = lda.GetTopic(TopicId);
			Topic remoteTopic = rda.GetTopic(TopicId);
			if(remoteTopic.ReplyNum > localTopic.ReplyNum)
				return true;
			else
				return false;
		}

		public void UpdataDataSet()
		{
			lda.FillDataSet();
		}

		public void SaveDate()
		{
			lda.SaveDataSet("TopicIndex");
			lda.SaveDataSet("Issue");
			lda.SaveDataSet("Reply");
		}

		public DataView GetForumUpdateView(string RoomId, string Block)
		{
			return lda.GetForumUpdateView(RoomId,Block);
		}

		public DataView Seach(int room, int block, string begintime, string endtime, bool seachall, bool seachreply, int seachtype, string keyword)
		{
			string filter;
			DataView dataView;
			switch(seachtype)
			{
				case 1 ://标题
					DataView dv = lda.dvTopicIndex;
					filter = "TopicName LIKE '*" + keyword + "*' and ReplyDateTime >= '" + begintime + "' and ReplyDateTime <= '" + endtime + "'";
					if(!seachall)
						filter += " and RoomId = '" + room.ToString() + "' and Block = '" + block.ToString() + "'";
					dv.RowFilter = filter;
					dataView = dv;
					break;
				case 2 ://全文
					DataView dvissue = lda.dvIssue;
					DataView dvreply = lda.dvReply;
					DataView dvtopic = lda.dvTopicIndex;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -