BBS.cs
上传用户:cha0314
上传日期:2014-03-02
资源大小:12522k
文件大小:32k
源码类别:

C#编程

开发平台:

C#

  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using System.IO;
  5. using System.Collections ;
  6. using System.Configuration;
  7. using System.Web;
  8. namespace UDS.Components
  9. {
  10. /// <summary>
  11. /// BBS 的摘要说明。
  12. /// </summary>
  13. public class BBSClass
  14. {
  15. #region 判断是否有BBS管理权限
  16. /// <summary>
  17. /// 判断是否有管理权限
  18. /// </summary>
  19. /// <param name="username">用户名</param>
  20. /// <returns>bool</returns>
  21. public bool AdminBBS(string username,int classid)
  22. {
  23. if(classid!=0)
  24. {
  25. int actid = 8;
  26. Database db = new Database();
  27. SqlParameter[] prams = {
  28.    db.MakeInParam("@Class_ID",SqlDbType.Int,4,classid),
  29.    db.MakeInParam("@Username",SqlDbType.VarChar,100,username),
  30.    db.MakeInParam("@Act_ID",SqlDbType.Int,4,actid),
  31.    db.MakeOutParam("@ReturnValue",SqlDbType.Int,4)
  32.    };
  33. try
  34. {
  35. db.RunProc("sp_GetAccessPermission",prams);
  36. // 仅做测试用
  37. // return(true);
  38. return((Int32.Parse(prams[3].Value.ToString())==1)?true:false);
  39. }
  40. catch(Exception ex)
  41. {
  42. Error.Log(ex.Message);
  43. throw new Exception("BBS权限判断错误!",ex);
  44. }
  45. }
  46. else
  47. return(false);
  48. }
  49. #endregion
  50. #region 判断是否有发布系统公告权限
  51. /// <summary>
  52. /// 判断是否有发布系统公告权限
  53. /// </summary>
  54. /// <param name="username">用户名</param>
  55. /// <returns>bool</returns>
  56. public bool AdminSysBulletin(string username,int classid)
  57. {
  58. if(classid!=0)
  59. {
  60. int actid = 9;
  61. Database db = new Database();
  62. SqlParameter[] prams = {
  63.    db.MakeInParam("@Class_ID",SqlDbType.Int,4,classid),
  64.    db.MakeInParam("@Username",SqlDbType.VarChar,100,username),
  65.    db.MakeInParam("@Act_ID",SqlDbType.Int,4,actid),
  66.    db.MakeOutParam("@ReturnValue",SqlDbType.Int,4)
  67.    };
  68. try
  69. {
  70. db.RunProc("sp_GetAccessPermission",prams);
  71. // 仅做测试用
  72. // return(true);
  73. return((Int32.Parse(prams[3].Value.ToString())==1)?true:false);
  74. }
  75. catch(Exception ex)
  76. {
  77. Error.Log(ex.Message);
  78. throw new Exception("BBS权限判断错误!",ex);
  79. }
  80. }
  81. else
  82. return(false);
  83. }
  84. #endregion
  85. #region 判断是否是板块斑竹
  86. /// <summary>
  87. /// 判断是否是板块斑竹
  88. /// </summary>
  89. /// <param name="boardid">板块ID</param>
  90. /// <param name="username">用户名</param>
  91. /// <returns></returns>
  92. public bool IsBoardMaster(int boardid,string username)
  93. {
  94. Database db = new Database();
  95. SqlParameter[] prams = {
  96.    db.MakeInParam("@board_id",SqlDbType.Int,4,boardid),
  97.    db.MakeInParam("@staff_name",SqlDbType.VarChar,100,username)
  98.    };
  99. try
  100. {
  101. if(db.RunProc("sp_BBSISBoardMaster",prams)==1)
  102. return(true);
  103. else
  104. return(false);
  105. }
  106. catch(Exception ex)
  107. {
  108. Error.Log(ex.Message);
  109. throw new Exception("BBS斑竹权限判断错误!",ex);
  110. }
  111. }
  112. #endregion
  113.         #region 新增分栏信息
  114. //给uds_bbs_catalog表,新增记录
  115. public bool AddBBSCatalog (BBSCatalog BBSCatalog)  //string CatalogName,string CatalogDescription
  116. {
  117. //参数 CatalogName 表示BBS中的title , 参数 CatalogDescription 表示BBS中的content
  118. //给存储过程传递参数
  119. Database data = new Database();
  120. SqlParameter[] prams = {
  121.    data.MakeInParam("@title",  SqlDbType.VarChar, 300, BBSCatalog.CatalogName),
  122.    data.MakeInParam("@content", SqlDbType.NText, 16, BBSCatalog.CatalogDescription),
  123. };
  124. data.RunProc ("sp_BBS_AddCatalog",prams);
  125. return true;
  126. }
  127. #endregion 
  128. #region 查询BBS贴子
  129. public SqlDataReader Find(string key,BBSSearchOption option,DataTable boards)
  130. {
  131. string boardids = "";
  132. string sql = "select * from UDS_Bbs_ForumItem";
  133. SqlDataReader dr = null;
  134. if(option.searchtype==BBSSearchType.author)
  135. {
  136. sql += " where sender like '%"+key+"%'";
  137. }
  138. else if(option.searchtype==BBSSearchType.title)
  139. {
  140. sql += " where title like '%"+key+"%'";
  141. }
  142. if(option.BoardID!=0)
  143. {
  144. sql += " and board_id="+option.BoardID;
  145. }
  146. else
  147. {
  148. foreach(DataRow row in boards.Rows)
  149. {
  150. boardids += row["board_id"].ToString() + ",";
  151. }
  152. if(boardids!="")
  153. boardids = boardids.Substring(0,boardids.Length-1);
  154. sql += " and board_id in ("+boardids+")";
  155. }
  156. if(option.TimeBound!=TimeSpan.MaxValue)
  157. {
  158. //计算时间段
  159. sql += " and datediff(d,send_time,getdate())< "+option.TimeBound.Days.ToString();
  160. }
  161. UDS.Components.Database db = new UDS.Components.Database();
  162. SqlParameter[] prams = {
  163.    db.MakeInParam("@SQL",  SqlDbType.NText, 5000, sql),
  164. };
  165. db.RunProc("sp_RunSQL",prams,out dr);
  166. return dr;
  167. }
  168. #endregion
  169. #region 修改分栏信息时根据CatalogID显示数据
  170. public SqlDataReader GetModifyBBSCatalog (int m_CatalogID)
  171. {
  172. //参数CatalogID表示存储过程中的@catalog_id int 分栏ID
  173. SqlDataReader dataReader = null;
  174. Database data = new Database();
  175. SqlParameter[] prams = {
  176.    data.MakeInParam("@catalog_id",  SqlDbType.Int, 4, m_CatalogID),
  177. };
  178. try
  179. {
  180. data.RunProc ("sp_BBS_GetCatalogInfo",prams,out dataReader);
  181. return dataReader;
  182. }
  183. catch (Exception ex)
  184. {
  185. Error.Log(ex.ToString());
  186. // throw new Exception("BBS类别增加错误!",ex);
  187. return null;
  188. }
  189. }
  190. #endregion
  191. #region 修改(编缉分栏信息)
  192. //更新分类栏信息
  193. public bool EditBBSCatalog (BBSCatalog BBSCatalog)
  194. {
  195. // @catalog_id int, : 分栏ID
  196. // @catalog_name varchar(300), : 分栏名称
  197. // @catalog_description varchar(300) : 分栏介绍
  198. // 给存储过程传递参数
  199. Database data = new Database();
  200. SqlParameter[] prams = {
  201.    data.MakeInParam("@catalog_id",  SqlDbType.Int, 4, BBSCatalog.CatalogID),
  202.    data.MakeInParam("@catalog_name", SqlDbType.VarChar, 300, BBSCatalog.CatalogName),
  203.    data.MakeInParam("@catalog_description", SqlDbType.VarChar ,300, BBSCatalog.CatalogDescription),
  204. };
  205. try
  206. {
  207. data.RunProc ("sp_BBS_UpdateCatalogInfo",prams);
  208. return true;
  209. }
  210. catch (Exception ex)
  211. {
  212. Error.Log(ex.ToString());
  213. throw new Exception("BBS类别编缉错误!",ex);
  214. }
  215. }
  216. #endregion
  217. #region 删除分栏(分栏信息)
  218. public int DelBBSCatalog(int catalog_id)
  219. {
  220. Database db = new Database();
  221. SqlParameter[] prams = {
  222.    db.MakeInParam("@catalog_id ",SqlDbType.Int,4,catalog_id)
  223.    };
  224. return(db.RunProc("sp_BBS_DeleteCatalog",prams));
  225. }
  226.     #endregion
  227.         #region 在分类中新增一个板块(添加板块)
  228. //在BBS大类中 添加板块
  229. public bool BBSAddBoard(BBSBoard BBSBoard)
  230. {
  231. //需向存储过程传递的参数如下
  232. //@catalog_id (int) 分类ID号, @title (varchar(300)) 抬头的名称, @content ntext 板块内容, @boardtype bit 板块类型
  233. Database data = new Database();
  234. SqlParameter[] prams = { 
  235.    data.MakeInParam ("@catalog_id", SqlDbType.Int, 4, BBSBoard.CatalogID ),
  236.    data.MakeInParam ("@title", SqlDbType.VarChar, 300, BBSBoard.BoardName ),
  237.    data.MakeInParam ("@content", SqlDbType.NText, 16, BBSBoard.BoardDescription ),
  238.    data.MakeInParam ("@boardtype", SqlDbType.Bit, 1, BBSBoard.BoardType ),
  239. };
  240. data.RunProc ("sp_BBS_AddBoard",prams);
  241. return true;
  242. }
  243.         #endregion 
  244. #region 修改板块时根据BoardID显示数据
  245. public SqlDataReader GetModifyBBSBoard (int m_BoardID)
  246. {
  247. //参数m_BoardID表示存储过程中的@board_id int : 板块ID
  248. SqlDataReader dataReader = null;
  249. Database data = new Database();
  250. SqlParameter[] prams = {
  251.    data.MakeInParam("@board_id",  SqlDbType.Int, 4, m_BoardID),
  252. };
  253. try
  254. {
  255. data.RunProc ("sp_BBS_GetBoardInfo",prams,out dataReader);
  256. return dataReader;
  257. }
  258. catch (Exception ex)
  259. {
  260. Error.Log(ex.ToString());
  261. // throw new Exception("BBS类别增加错误!",ex);
  262. return null;
  263. }
  264. }
  265. #endregion
  266. #region 修改(编缉板块)
  267. //更新板块信息
  268. public bool EditBBSBoard (BBSBoard BBSBoard)
  269. {
  270. //@board_id int, : 被更新的板块ID
  271. //@board_name varchar(300) : 板块名称
  272. //@board_description varchar(300), : 板块介绍
  273. //@board_type bit : 板块类型(公共型,私有型)
  274. // 给存储过程传递参数
  275. Database data = new Database();
  276. SqlParameter[] prams = {
  277.    data.MakeInParam("@board_id",  SqlDbType.Int, 4, BBSBoard.BoardID),
  278.    data.MakeInParam("@board_name", SqlDbType.VarChar, 300, BBSBoard.BoardName),
  279.    data.MakeInParam("@board_description", SqlDbType.VarChar ,300, BBSBoard.BoardDescription),
  280.    data.MakeInParam("@board_type", SqlDbType.Bit, 1 ,BBSBoard.BoardType),
  281. };
  282. //try
  283. {
  284. data.RunProc ("sp_BBS_UpdateBoardInfo",prams);
  285. return true;
  286. }
  287. //catch (Exception ex)
  288. {
  289. // Error.Log(ex.ToString());
  290. // throw new Exception("BBS板块编缉错误!",ex);
  291. }
  292. }    
  293. #endregion
  294. #region 删除(删除板块)
  295. public int DelBBSBoard(int board_id)
  296. {
  297. //@board_id  : 板块ID
  298. Database db = new Database();
  299. SqlParameter[] prams = {
  300.    db.MakeInParam("@board_id ",SqlDbType.Int,4,board_id)
  301.    };
  302. return(db.RunProc("sp_BBS_DeleteBoard",prams));
  303. }
  304. #endregion
  305. #region 斑竹操作
  306. //得到版块版主
  307. public SqlDataReader GetBoardMaster ()
  308. {
  309. SqlDataReader dataReader = null;
  310. Database data = new Database();
  311. //SqlParameter[] prams = {
  312. //    data.MakeInParam("@board_id",  SqlDbType.Int, 4, master.BoardID),
  313. //};
  314. try
  315. {
  316. data.RunProc ("sp_BBS_GetAllBoardMaster",out dataReader);
  317. return dataReader;
  318. }
  319. catch (Exception ex)
  320. {
  321. Error.Log(ex.ToString());
  322. return null;
  323. }
  324. }
  325. //删除版主
  326. public int DeleteBoardMaster (BBSBoardmaster master)
  327. {
  328. //参数:
  329. //      @BoardID  : 版块ID
  330. //    @StaffID  : 员工ID
  331. Database data = new Database();
  332. SqlParameter[] prams = {
  333.    data.MakeInParam("@BoardID", SqlDbType.Int, 4, master.BoardID),
  334.    data.MakeInParam("@StaffID", SqlDbType.Int, 4, master.StaffID), 
  335. };
  336. return(data.RunProc ("sp_BBS_DeleteBoardMaster",prams));
  337. }
  338. //设置版主
  339. public bool SetupBoardMaster (BBSBoardmaster master)
  340. {
  341. //参数:
  342. //       @BoardID int : 板块ID
  343. //      @StaffID int : 员工ID
  344. Database data = new Database();
  345. SqlParameter[] prams = {
  346.    data.MakeInParam("@BoardID", SqlDbType.Int, 4, master.BoardID),
  347.    data.MakeInParam("@StaffID", SqlDbType.Int, 4, master.StaffID), 
  348. };
  349. try
  350. {
  351. data.RunProc ("sp_BBS_SetupBoardMaster",prams);
  352. return true;
  353. }
  354. catch (Exception ex)
  355. {
  356. Error.Log(ex.ToString());
  357. return false;
  358. }
  359. }
  360. //取所有在职的用户名称
  361. public SqlDataReader GetAllStaff()
  362. {
  363. //参数  无   默认取在职的所有人员名称
  364. SqlDataReader dataReader = null;
  365. Database data = new Database();
  366. try
  367. {
  368. data.RunProc ("sp_getallstaff",out dataReader);
  369. return dataReader;
  370. }
  371. catch (Exception ex)
  372. {
  373. Error.Log(ex.ToString());
  374. return null;
  375. }
  376. }
  377. #endregion
  378. #region 私有板块成员操作
  379. //得到版块成员
  380. public SqlDataReader GetBoardMember ()
  381. {
  382. SqlDataReader dataReader = null;
  383. Database data = new Database();
  384. try
  385. {
  386. data.RunProc ("sp_BBS_GetAllBoardMember",out dataReader);
  387. return dataReader;
  388. }
  389. catch (Exception ex)
  390. {
  391. Error.Log(ex.ToString());
  392. return null;
  393. }
  394. }
  395. //删除成员
  396. public int DeleteBoardMember (BBSBoardmember member)
  397. {
  398. //参数:
  399. //      @BoardID  : 版块ID
  400. //    @StaffID  : 员工ID
  401. Database data = new Database();
  402. SqlParameter[] prams = {
  403.    data.MakeInParam("@StaffID", SqlDbType.Int, 4, member.StaffID)
  404. };
  405. return(data.RunProc ("sp_BBS_DeleteBoardMember",prams));
  406. }
  407. //设置成员
  408. public bool SetupBoardMember (int boardid,int staffid)
  409. {
  410. //参数:
  411. //       @BoardID int : 板块ID
  412. //      @StaffID int : 员工ID
  413. Database data = new Database();
  414. SqlParameter[] prams = {
  415.    data.MakeInParam("@BoardID", SqlDbType.Int, 4, boardid),
  416.    data.MakeInParam("@StaffID", SqlDbType.Int, 4, staffid), 
  417. };
  418. try
  419. {
  420. data.RunProc ("sp_BBS_SetupBoardMember",prams);
  421. return true;
  422. }
  423. catch (Exception ex)
  424. {
  425. Error.Log(ex.ToString());
  426. return false;
  427. }
  428. }
  429. #endregion
  430. #region 显示所有分栏信息
  431. public SqlDataReader GetBBSCatalog()
  432. {
  433. //参数: 无
  434. SqlDataReader dataReader = null;
  435. Database data = new Database();
  436. try
  437. {
  438. data.RunProc ("sp_GetBBSCatalog",out dataReader);
  439. return dataReader;
  440. }
  441. catch (Exception ex)
  442. {
  443. Error.Log(ex.ToString());
  444. return null;
  445. }
  446. }
  447. #endregion
  448. #region 显示个人的分类栏的版块
  449. public SqlDataReader GetBBSBoard(string m_StaffName)  
  450. {
  451. //参数:  m_StaffName        :   员工姓名
  452. //@catalog_id int : 分类栏ID
  453. // @staff_name varchar(50)='' : 员工姓名
  454. SqlDataReader dataReader = null;
  455. Database data = new Database ();
  456. SqlParameter[] prams = {
  457.    data.MakeInParam("@staff_name",  SqlDbType.VarChar, 50, m_StaffName)
  458. };
  459. try 
  460. {
  461. data.RunProc ("sp_BBS_GetAllBoardByStaff",prams,out dataReader);
  462. return dataReader;
  463. }
  464. catch (Exception ex)
  465. {
  466. Error.Log(ex.ToString());
  467. return null;
  468. }
  469. }
  470.         #endregion
  471. #region 显示所有板块
  472. public SqlDataReader GetAllBBSBoard()  
  473. {
  474. SqlDataReader dataReader = null;
  475. Database data = new Database ();
  476. try 
  477. {
  478. data.RunProc ("sp_BBS_GetAllBoard",out dataReader);
  479. return dataReader;
  480. }
  481. catch (Exception ex)
  482. {
  483. Error.Log(ex.ToString());
  484. return null;
  485. }
  486. }
  487. #endregion
  488. #region 显示该版块的所有帖子
  489. public SqlDataReader GetBBSForumItem(BBSForumItem item)
  490. {
  491. //参数: @board_id int : 该版块ID
  492. SqlDataReader dataReader = null;
  493. Database data = new Database ();
  494. SqlParameter[] prams = {
  495.    data.MakeInParam("@board_id",  SqlDbType.Int, 4, item.BoardID),
  496. };
  497. try
  498. {
  499. data.RunProc ("sp_GetBBSForumItem",prams,out dataReader);
  500. return dataReader;
  501. }
  502. catch (Exception ex)
  503. {
  504. Error.Log(ex.ToString());
  505. return null;
  506. }
  507. }
  508.         #endregion
  509. #region 得到所有系统公告
  510. /// <summary>
  511. /// 得到所有系统公告
  512. /// </summary>
  513. /// <returns></returns>
  514. public SqlDataReader GetSysBulletin()
  515. {
  516. SqlDataReader dataReader = null;
  517. Database data = new Database ();
  518. try
  519. {
  520. SqlParameter[] prams = {
  521.    data.MakeInParam("@type",  SqlDbType.Int, 4, -1),
  522. };
  523. data.RunProc ("sp_BBS_GetBulletin",prams,out dataReader);
  524. return dataReader;
  525. }
  526. catch (Exception ex)
  527. {
  528. Error.Log(ex.ToString());
  529. return null;
  530. }
  531. }
  532. #endregion
  533. #region 得到所有桌面公告
  534. /// <summary>
  535. /// 得到所有桌面公告
  536. /// </summary>
  537. /// <returns></returns>
  538. public SqlDataReader GetDeskTopBulletin()
  539. {
  540. SqlDataReader dataReader = null;
  541. Database data = new Database ();
  542. try
  543. {
  544. SqlParameter[] prams = {
  545.    data.MakeInParam("@type",  SqlDbType.Int, 4, -2),
  546. };
  547. data.RunProc ("sp_BBS_GetBulletin",prams,out dataReader);
  548. return dataReader;
  549. }
  550. catch (Exception ex)
  551. {
  552. Error.Log(ex.ToString());
  553. return null;
  554. }
  555. }
  556. #endregion
  557. #region 得到板块公告
  558. /// <summary>
  559. /// 得到板块公告
  560. /// </summary>
  561. /// <param name="boardid">板块id,=0则取出所有板块的公告</param>
  562. /// <returns></returns>
  563. public SqlDataReader GetBulletin(int boardid)
  564. {
  565. SqlDataReader dataReader = null;
  566. Database data = new Database ();
  567. try
  568. {
  569. SqlParameter[] prams = {
  570.    data.MakeInParam("@type",  SqlDbType.Int, 4, boardid),
  571. };
  572. data.RunProc ("sp_BBS_GetBulletin",prams,out dataReader);
  573. return dataReader;
  574. }
  575. catch (Exception ex)
  576. {
  577. Error.Log(ex.ToString());
  578. return null;
  579. }
  580. }
  581. #endregion
  582. #region 读取论坛帖子
  583. public SqlDataReader ReadBBSForumItem(BBSForumItem item)
  584. {
  585. //参数: @item_id int : 帖子ID
  586. SqlDataReader dataReader = null;
  587. Database data = new Database ();
  588. SqlParameter[] prams = {
  589.    data.MakeInParam("@item_id",  SqlDbType.Int, 4, item.ItemID),
  590. };
  591. try 
  592. {
  593. data.RunProc ("sp_ReadBBSForumItem",prams,out dataReader);
  594. return dataReader;
  595. }
  596. catch (Exception ex)
  597. {
  598. Error.Log(ex.ToString());
  599. return null;
  600. }
  601. }
  602. public void ReadBBSForumItemStruct(BBSForumItem item)
  603. {
  604. //参数: @item_id int : 帖子ID
  605. SqlDataReader dataReader = null;
  606. Database data = new Database ();
  607. SqlParameter[] prams = {
  608.    data.MakeInParam("@item_id",  SqlDbType.Int, 4, item.ItemID),
  609. };
  610. try 
  611. {
  612. data.RunProc ("sp_ReadBBSForumItem",prams,out dataReader);
  613. while(dataReader.Read())
  614. {
  615. item.BoardID = Int32.Parse(dataReader["board_id"].ToString());
  616. item.Title = dataReader["title"].ToString();
  617. item.Content = dataReader["content"].ToString();
  618. item.Sender = dataReader["sender"].ToString();
  619. item.SendTime = DateTime.Parse(dataReader["send_time"].ToString());
  620. item.HitTimes = Int32.Parse(dataReader["hit_times"].ToString());
  621. item.ReplayTimes = Int32.Parse(dataReader["replay_times"].ToString());
  622. item.LastReplayer = dataReader["last_replayer"].ToString();
  623. item.LastReplayTime = dataReader["last_replay_time"].ToString();
  624. item.IP = dataReader["ip"].ToString();
  625. item.Bulletin = Convert.ToBoolean(dataReader["bulletin"]);
  626. item.SysBulletin = Convert.ToBoolean(dataReader["sysbulletin"]);
  627. item.DeskTop = Convert.ToBoolean(dataReader["desktop"]);
  628. }
  629. }
  630. catch (Exception ex)
  631. {
  632. Error.Log(ex.ToString());
  633. }
  634. }
  635. #endregion
  636. #region 修改论坛帖子
  637. public void ModBBSForumItem(BBSForumItem item)
  638. {
  639. //参数: @item_id int : 帖子ID
  640. Database data = new Database ();
  641. SqlParameter[] prams = {
  642.     data.MakeInParam("@item_id",  SqlDbType.Int, 4, item.ItemID),
  643. data.MakeInParam("@board_id",  SqlDbType.Int, 4, item.BoardID),
  644. data.MakeInParam("@title",  SqlDbType.VarChar, 300, item.Title),
  645. data.MakeInParam("@content",  SqlDbType.NText, 5000, item.Content),
  646. data.MakeInParam("@sender",  SqlDbType.VarChar, 50, item.Sender),
  647. data.MakeInParam("@send_time",  SqlDbType.DateTime, 8, item.SendTime),
  648. data.MakeInParam("@hit_times",  SqlDbType.Int, 4, item.HitTimes),
  649. data.MakeInParam("@replay_times",  SqlDbType.Int, 4, item.ReplayTimes),
  650. data.MakeInParam("@last_replayer",  SqlDbType.VarChar, 50, item.LastReplayer),
  651. data.MakeInParam("@last_replay_time",  SqlDbType.DateTime, 8, item.LastReplayTime==""?Convert.DBNull:item.LastReplayTime),
  652. data.MakeInParam("@ip",  SqlDbType.VarChar, 50, item.IP),
  653. data.MakeInParam("@bulletin",  SqlDbType.Bit, 4, item.Bulletin),
  654. data.MakeInParam("@sysbulletin",  SqlDbType.Bit, 4, item.SysBulletin),
  655. data.MakeInParam("@desktop",  SqlDbType.Bit, 4, item.DeskTop),
  656. };
  657. try 
  658. {
  659. data.RunProc ("sp_BBS_UpdateItemInfo",prams);
  660. }
  661. catch (Exception ex)
  662. {
  663. Error.Log(ex.ToString());
  664. }
  665. }
  666. #endregion
  667. #region 读取帖子回复
  668. public SqlDataReader ReadBBSForumItemReplay(BBSForumItem item)
  669. {
  670. //参数: @item_id int : 帖子ID
  671. SqlDataReader dataReader = null;
  672. Database data = new Database ();
  673. SqlParameter[] prams = {
  674.    data.MakeInParam("@item_id",  SqlDbType.Int, 4, item.ItemID),
  675. };
  676. try
  677. {
  678. data.RunProc ("sp_ReadBBSForumItemReplay",prams,out dataReader);
  679. return dataReader;
  680. }
  681. catch (Exception ex)
  682. {
  683. Error.Log(ex.ToString ());
  684. return null;
  685. }
  686. }
  687.         #endregion
  688. #region 删除回复
  689. public void DelReplay(BBSReplay replay)
  690. {
  691. Database data = new Database ();
  692. SqlParameter[] prams = {
  693.     data.MakeInParam("@replayid",  SqlDbType.Int, 4,replay.ReplayId),
  694. data.MakeInParam("@itemid",SqlDbType.Int,4,replay.ItemID)
  695. };
  696. data.RunProc ("sp_BBS_DeleteReplay",prams);
  697. }
  698. #endregion
  699. #region 回复贴子
  700. public int ReplayItem(BBSReplay replay)
  701. {
  702. Database data = new Database ();
  703. SqlParameter[] prams = {
  704.     data.MakeInParam("@item_id",  SqlDbType.Int, 4, replay.ItemID),
  705. data.MakeInParam("@content",  SqlDbType.NText,5000, replay.Content),
  706. data.MakeInParam("@replayer",  SqlDbType.VarChar,300, replay.Replayer),
  707. data.MakeInParam("@replay_ip",  SqlDbType.VarChar,50, replay.ReplayId)
  708. };
  709. try
  710. {
  711. return(data.RunProc ("sp_BBSReplay",prams));
  712. }
  713. catch (Exception ex)
  714. {
  715. Error.Log(ex.ToString ());
  716. throw new Exception("回复出错!");
  717. }
  718. }
  719. #endregion
  720. #region 发布贴子
  721. public int SendItem(BBSForumItem item)
  722. {
  723. Database data = new Database ();
  724. SqlParameter[] prams = {
  725.    data.MakeInParam("@board_id",  SqlDbType.Int, 4,item.BoardID),
  726.    data.MakeInParam("@title",  SqlDbType.VarChar,300,item.Title),
  727.    data.MakeInParam("@content",  SqlDbType.NText,5000,item.Content),
  728.    data.MakeInParam("@sender",  SqlDbType.VarChar,100,item.Sender),
  729.    data.MakeInParam("@ip",  SqlDbType.VarChar,50,item.IP ),
  730.    data.MakeInParam("@bulletin",SqlDbType.Bit,1,item.Bulletin),
  731.    data.MakeInParam("@sysbulletin",SqlDbType.Bit,1,item.SysBulletin),
  732.    data.MakeInParam("@desktop",SqlDbType.Bit,1,item.DeskTop)
  733.    };
  734. try
  735. {
  736. return(data.RunProc ("sp_BBSAddItem",prams));
  737. }
  738. catch (Exception ex)
  739. {
  740. Error.Log(ex.ToString ());
  741. throw new Exception("发布出错!");
  742. }
  743. }
  744. #endregion
  745. #region 增加板主
  746. public void AddBoardMaster(int boardid,int staffid)
  747. {
  748. Database data = new Database ();
  749. SqlParameter[] prams = {
  750.    data.MakeInParam("@BoardID",  SqlDbType.Int, 4,boardid),
  751.    data.MakeInParam("@StaffID",  SqlDbType.Int, 4,staffid)
  752.    };
  753. data.RunProc ("sp_BBS_SetupBoardMaster",prams);
  754. }
  755. #endregion
  756. #region 删除板主
  757. public void DelBoardMaster(int boardid,int staffid)
  758. {
  759. Database data = new Database ();
  760. SqlParameter[] prams = {
  761.    data.MakeInParam("@BoardID",  SqlDbType.Int, 4,boardid),
  762.    data.MakeInParam("@StaffID",  SqlDbType.Int, 4,staffid)
  763.    };
  764. data.RunProc ("sp_BBS_DeleteBoardMaster",prams);
  765. }
  766. #endregion
  767. #region 移动论坛贴子
  768. public void MoveBoardItem(BBSForumItem olditem,BBSForumItem newitem)
  769. {
  770. Database data = new Database ();
  771. SqlParameter[] prams = {
  772.    data.MakeInParam("@item_id",  SqlDbType.Int, 4,olditem.ItemID),
  773.    data.MakeInParam("@to_board_id",  SqlDbType.Int, 4,newitem.BoardID)
  774.    };
  775. data.RunProc ("sp_BBSMoveItem",prams);
  776. }
  777. #endregion
  778. #region 删除论坛贴子
  779. public void DelItem(BBSForumItem item)
  780. {
  781. Database data = new Database ();
  782. SqlParameter[] prams = {
  783.    data.MakeInParam("@item_id",  SqlDbType.Int, 4,item.ItemID)
  784.   
  785.    };
  786. data.RunProc ("sp_BBSDeleteItem",prams);
  787. }
  788. #endregion
  789. #region 得到所有论坛
  790. public SqlDataReader GetAllBoard()
  791. {
  792. Database data = new Database ();
  793. SqlDataReader dr = null;
  794. data.RunProc ("sp_BBSGetMoveToBoard",out dr);
  795. return(dr);
  796. }
  797. #endregion
  798. #region 上传一个文件得到id号
  799. public int InsertFile(string name,string extension)
  800. {
  801. Database data = new Database();
  802. SqlParameter[] prams = {
  803.    data.MakeInParam("@name",SqlDbType.VarChar,200,name),
  804.    data.MakeInParam("@extension",SqlDbType.VarChar,100,extension)
  805.    };
  806. return(data.RunProc ("sp_BBS_AddFile",prams));
  807. }
  808. #endregion
  809. #region 根据id得到上传附件信息
  810. public SqlDataReader GetAttachmentByID(int id)
  811. {
  812. Database data = new Database();
  813. SqlDataReader dr = null;
  814. SqlParameter[] prams = {
  815.    data.MakeInParam("@id",SqlDbType.Int,4,id)
  816.    };
  817. data.RunProc ("sp_BBS_GetAttachmentByID",prams,out dr);
  818. return(dr);
  819. }
  820. #endregion
  821. }
  822. }
  823. public class BBSBoard
  824. {
  825. private int m_BoardID;
  826. private int m_CatalogID;
  827. private string m_BoardName;
  828. private string m_BoardDescription;
  829. private int m_BoardType;
  830. public int BoardID
  831. {
  832. //
  833. get { return m_BoardID; }
  834. set { m_BoardID = value; }
  835. }
  836.  
  837. public int CatalogID
  838. {
  839. //
  840. get { return m_CatalogID; }
  841. set { m_CatalogID = value; }
  842. }
  843. public string BoardName
  844. {
  845. //
  846. get { return m_BoardName; }
  847. set { m_BoardName = value; }
  848. }
  849. public string BoardDescription
  850. {
  851. //
  852. get { return m_BoardDescription; }
  853. set { m_BoardDescription = value; }
  854. }
  855. public int BoardType
  856. {
  857. //
  858. get { return m_BoardType; }
  859. set { m_BoardType = value; }
  860. }
  861. public class BBSBoardmaster
  862. {
  863. // 板主信息
  864. private int m_BoardID;
  865. private int m_StaffID;
  866. public int BoardID 
  867. {
  868. //
  869. get { return m_BoardID; }
  870. set { m_BoardID = value; }
  871. }
  872. public int StaffID
  873. {
  874. //
  875. get { return m_StaffID; }
  876. set { m_StaffID = value; } 
  877. }   
  878. }
  879. public class BBSBoardmember
  880. {
  881. //BBS里的会员
  882. private int m_StaffID;
  883. private int m_BoardID;
  884. public int StaffID 
  885. {
  886. //
  887. get { return m_StaffID; } 
  888. set { m_StaffID = value; }
  889. }
  890. public int BoardID
  891. {
  892. //
  893. get { return m_BoardID; }
  894. set { m_BoardID = value; }
  895. }
  896. }
  897. public class BBSCatalog 
  898. {
  899. //BBS 类别
  900. private int m_CatalogID;
  901. private string m_CatalogName; 
  902. private string m_CatalogDescription;
  903. public int CatalogID
  904. {
  905. //类别ID号
  906. get { return m_CatalogID; }
  907. set { m_CatalogID = value; }
  908. }
  909. public string CatalogName
  910. {
  911. // 类别名称
  912. get { return m_CatalogName; } 
  913. set { m_CatalogName = value; }
  914. }
  915. public string CatalogDescription
  916. {
  917. // 类别备注
  918. get { return m_CatalogDescription; }
  919. set { m_CatalogDescription = value; } 
  920. }
  921. }
  922. public class BBSForumItem
  923. {
  924. //
  925. private int m_ItemID;
  926. private int m_BoardID;
  927. private string m_Title;
  928. private string m_Content;
  929. private string m_Sender;
  930. private DateTime m_SendTime;
  931. private int m_HitTimes;
  932. private int m_ReplayTimes;
  933. private string m_LastReplayer;
  934. private string m_LastReplayTime;
  935. private string m_IP;
  936. private bool m_Bulletin;
  937. private bool m_SysBulletin;
  938. private bool m_DeskTop;
  939. public int ItemID
  940. {
  941. //
  942. get { return m_ItemID;}
  943. set {m_ItemID = value;}
  944. }
  945. public int BoardID
  946. {
  947. //
  948. get { return m_BoardID; }
  949. set { m_BoardID = value; }
  950. }
  951. public string Title
  952. {
  953. //
  954. get { return m_Title; }
  955. set { m_Title = value; }
  956. }
  957. public string Content
  958. {
  959. //
  960. get { return m_Content; }
  961. set { m_Content = value; }
  962. }
  963. public string Sender 
  964. {
  965. //
  966. get { return m_Sender; }
  967. set { m_Sender = value; }
  968. }
  969. public DateTime SendTime
  970. {
  971. //发送时间
  972. get { return m_SendTime; }
  973. set { m_SendTime = value; }
  974. }
  975. public int HitTimes
  976. {
  977. //
  978. get { return m_HitTimes; }
  979. set { m_HitTimes = value; }
  980. }
  981. public int ReplayTimes
  982. {
  983. //回复次数
  984. get { return m_ReplayTimes; }
  985. set { m_ReplayTimes = value; }
  986. }
  987. public string LastReplayer
  988. {
  989. //
  990. get { return m_LastReplayer; }
  991. set { m_LastReplayer = value; }
  992. }
  993. public string LastReplayTime
  994. {
  995. //
  996. get { return m_LastReplayTime; }
  997. set { m_LastReplayTime = value; }
  998. }
  999. public string IP 
  1000. {
  1001. //
  1002. get { return m_IP; }
  1003. set { m_IP = value; }
  1004. }
  1005. /// <summary>
  1006. /// 版面公告
  1007. /// </summary>
  1008. public bool Bulletin
  1009. {
  1010. get{return m_Bulletin;}
  1011. set{m_Bulletin = value;}
  1012. }
  1013. /// <summary>
  1014. /// 系统公告
  1015. /// </summary>
  1016. public bool SysBulletin
  1017. {
  1018. get{return m_SysBulletin;}
  1019. set{m_SysBulletin = value;}
  1020. }
  1021. /// <summary>
  1022. /// 公告桌面显示
  1023. /// </summary>
  1024. public bool DeskTop
  1025. {
  1026. get{return m_DeskTop;}
  1027. set{m_DeskTop = value;}
  1028. }
  1029. /// <summary>
  1030. /// 将贴子附件与自身绑定
  1031. /// </summary>
  1032. /// <param name="filenames">文件名(多个文件名用 , 分开)</param>
  1033. public void Attach(string filenames)
  1034. {
  1035. UDS.Components.Database data = new UDS.Components.Database ();
  1036. string[] arrfilename = filenames.Split(',');
  1037. for(int i=0;i<arrfilename.Length;i++)
  1038. {
  1039. if(arrfilename[i].Trim()!="")
  1040. {
  1041. SqlParameter[] prams = {
  1042.    data.MakeInParam("@itemid",  SqlDbType.Int, 4,this.ItemID),
  1043.    data.MakeInParam("@filename",  SqlDbType.VarChar, 500,arrfilename[i])
  1044.    };
  1045. data.RunProc ("sp_BBS_AttachmentToItem",prams);
  1046. }
  1047. }
  1048. }
  1049. /// <summary>
  1050. /// 删除附件
  1051. /// </summary>
  1052. public void DelAttachment(string attachmentmd)
  1053. {
  1054. UDS.Components.Database data = new UDS.Components.Database ();
  1055. //删除所有回复附件
  1056. //得到所有回复
  1057. UDS.Components.BBSClass bbs = new UDS.Components.BBSClass();
  1058. SqlDataReader dr1 = null;
  1059. dr1 = bbs.ReadBBSForumItemReplay(this);
  1060. while(dr1.Read())
  1061. {
  1062. BBSReplay replay = new BBSReplay();
  1063. replay.ReplayId = Int32.Parse(dr1["replay_id"].ToString());
  1064. replay.DelAttachment(attachmentmd);
  1065. }
  1066. //删除贴子本身附件
  1067. SqlParameter[] prams = {
  1068.    data.MakeInParam("@itemid",  SqlDbType.Int, 4,this.ItemID),
  1069. };
  1070. SqlDataReader dr = null;
  1071. data.RunProc ("sp_BBS_GetItemAttachment",prams,out dr);
  1072. while(dr.Read())
  1073. {
  1074. System.IO.File.Delete(attachmentmd+"\"+dr["filename"].ToString());
  1075. }
  1076. data.Close();
  1077. SqlParameter[] prams1 = {
  1078. data.MakeInParam("@itemid",  SqlDbType.Int, 4,this.ItemID),
  1079. };
  1080. data.RunProc("sp_BBS_DelAttachmentToItem",prams1);
  1081. }
  1082.         
  1083. }
  1084. public class BBSReplay
  1085. {
  1086. private int m_ReplayId;
  1087. private int m_ItemId;
  1088. private string m_Content;
  1089. private string m_Replayer;
  1090. private string m_ReplayTime;
  1091. private string m_ReplayIP;
  1092.         
  1093. public int ReplayId
  1094. {
  1095. //
  1096. get { return m_ReplayId; }
  1097. set { m_ReplayId = value; }
  1098. }
  1099. public int ItemID
  1100. {
  1101. //
  1102. get { return m_ItemId; }
  1103. set { m_ItemId = value; }
  1104. }
  1105. public string Content
  1106. {
  1107. //
  1108. get { return m_Content; }
  1109. set { m_Content = value;}
  1110. }
  1111. public string Replayer
  1112. {
  1113. //
  1114. get { return m_Replayer; }
  1115. set { m_Replayer = value; }
  1116. }
  1117. public string ReplayTime
  1118. {
  1119. //
  1120. get { return m_ReplayTime; }
  1121. set { m_ReplayTime = value; }
  1122. }
  1123. public string ReplayIP
  1124. {
  1125. //
  1126. get { return m_ReplayIP; }
  1127. set { m_ReplayIP = value; }
  1128. }
  1129. /// <summary>
  1130. /// 将附件和回复绑定
  1131. /// </summary>
  1132. /// <param name="filenames">文件名,多个文件名用 , 分开</param>
  1133. public void Attach(string filenames)
  1134. {
  1135. UDS.Components.Database data = new UDS.Components.Database ();
  1136. string[] arrfilename = filenames.Split(',');
  1137. for(int i=0;i<arrfilename.Length;i++)
  1138. {
  1139. if(arrfilename[i].Trim()!="")
  1140. {
  1141. SqlParameter[] prams = {
  1142.    data.MakeInParam("@replayid",  SqlDbType.Int, 4,this.ReplayId),
  1143.    data.MakeInParam("@filename",  SqlDbType.VarChar, 500,arrfilename[i])
  1144.    };
  1145. data.RunProc ("sp_BBS_AttachmentToReplay",prams);
  1146. }
  1147. }
  1148. }
  1149. /// <summary>
  1150. /// 删除附件
  1151. /// </summary>
  1152. public void DelAttachment(string attachmentmd)
  1153. {
  1154. UDS.Components.Database data = new UDS.Components.Database ();
  1155. SqlParameter[] prams = {
  1156.    data.MakeInParam("@replayid",  SqlDbType.Int, 4,this.ReplayId),
  1157.    };
  1158. SqlDataReader dr = null;
  1159. data.RunProc ("sp_BBS_GetReplayAttachment",prams,out dr);
  1160. while(dr.Read())
  1161. {
  1162. System.IO.File.Delete(attachmentmd+"\"+dr["filename"].ToString());
  1163. }
  1164. data.Close();
  1165. SqlParameter[] prams1 = {
  1166.    data.MakeInParam("@replayid",  SqlDbType.Int, 4,this.ReplayId),
  1167. };
  1168. data.RunProc("sp_BBS_DelAttachmentToReplay",prams1);
  1169. }
  1170. }
  1171. public class BBSSearchOption
  1172. {
  1173. private int _boardid;
  1174. private TimeSpan _time;
  1175. private BBSSearchType _searchtype;
  1176. public int BoardID
  1177. {
  1178. get
  1179. {
  1180. return _boardid;
  1181. }
  1182. set
  1183. {
  1184. _boardid = value;
  1185. }
  1186. }
  1187. public TimeSpan TimeBound
  1188. {
  1189. get
  1190. {
  1191. return _time;
  1192. }
  1193. set
  1194. {
  1195. _time = value;
  1196. }
  1197. }
  1198. public BBSSearchType searchtype
  1199. {
  1200. get
  1201. {
  1202. return _searchtype;
  1203. }
  1204. set
  1205. {
  1206. _searchtype = value;
  1207. }
  1208. }
  1209. }
  1210. public enum BBSSearchType{author,title}