📄 core.cs
字号:
/// <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 + -