using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Text; using CB.Entity; using CB.Interface.Infrastructure; using System.Data; using CB.Common; namespace CB.Data.SqlServer { public class TopicManage : Repository, ITopicService { public TopicManage(string interfaceId) : base(interfaceId) { } public override bool Save(TopicInfo entity) { DbParameter[] pars ={ DbHelper.MakeInParam(InterfaceId,"@Cid",(DbType)SqlDbType.Int,4,entity.Cid), DbHelper.MakeInParam(InterfaceId,"@Title",(DbType)SqlDbType.NVarChar,300,entity.Title), DbHelper.MakeInParam(InterfaceId,"@Context",(DbType)SqlDbType.NVarChar,0,entity.Context), DbHelper.MakeInParam(InterfaceId,"@Status",(DbType)SqlDbType.Int,2,entity.Status), DbHelper.MakeInParam(InterfaceId,"@Uid",(DbType)SqlDbType.Int,4,entity.Uid), DbHelper.MakeInParam(InterfaceId,"@UserName",(DbType)SqlDbType.NVarChar,20,entity.UserName), DbHelper.MakeInParam(InterfaceId,"@thumbsURL",(DbType)SqlDbType.NVarChar,2000,entity.thumbsURL), DbHelper.MakeInParam(InterfaceId,"@thumbsSize",(DbType)SqlDbType.NVarChar,1000,entity.thumbsSize), DbHelper.MakeInParam(InterfaceId,"@FileName",(DbType)SqlDbType.NVarChar,2000,entity.FileName), DbHelper.MakeInParam(InterfaceId,"@FilteType",(DbType)SqlDbType.NVarChar,500,entity.FilteType), DbHelper.MakeInParam(InterfaceId,"@FileURL",(DbType)SqlDbType.NVarChar,2000,entity.FileURL), DbHelper.MakeInParam(InterfaceId,"@FileSize",(DbType)SqlDbType.NVarChar,1000,entity.FileSize) }; return DbHelper.ExecuteNonQuery(InterfaceId, CommandType.Text, @"INSERT INTO [DT_Topic] ([Cid],[Title],[Context],[Status],[Uid],[UserName], [LastUpDateTime],[Addtime],[thumbsURL],[thumbsSize],[FileName],[FilteType],[FileURL],[FileSize]) VALUES (@Cid,@Title,@Context,@Status,@Uid,@UserName,GETDATE(),GETDATE(),@thumbsURL,@thumbsSize,@FileName,@FilteType,@FileURL,@FileSize)", pars) > 0; } public override bool Update(TopicInfo entity) { DbParameter[] pars ={ DbHelper.MakeInParam(InterfaceId,"@Tid",(DbType)SqlDbType.Int,4,entity.Tid), DbHelper.MakeInParam(InterfaceId,"@Cid",(DbType)SqlDbType.Int,4,entity.Cid), DbHelper.MakeInParam(InterfaceId,"@Title",(DbType)SqlDbType.NVarChar,300,entity.Title), DbHelper.MakeInParam(InterfaceId,"@Context",(DbType)SqlDbType.NVarChar,0,entity.Context), DbHelper.MakeInParam(InterfaceId,"@Status",(DbType)SqlDbType.Int,2,entity.Status), DbHelper.MakeInParam(InterfaceId,"@thumbsURL",(DbType)SqlDbType.NVarChar,2000,entity.thumbsURL), DbHelper.MakeInParam(InterfaceId,"@thumbsSize",(DbType)SqlDbType.NVarChar,1000,entity.thumbsSize), DbHelper.MakeInParam(InterfaceId,"@FileName",(DbType)SqlDbType.NVarChar,2000,entity.FileName), DbHelper.MakeInParam(InterfaceId,"@FilteType",(DbType)SqlDbType.NVarChar,500,entity.FilteType), DbHelper.MakeInParam(InterfaceId,"@FileURL",(DbType)SqlDbType.NVarChar,2000,entity.FileURL), DbHelper.MakeInParam(InterfaceId,"@FileSize",(DbType)SqlDbType.NVarChar,1000,entity.FileSize) }; return DbHelper.ExecuteNonQuery(InterfaceId, CommandType.Text, @"UPDATE [DT_Topic] SET [Cid]=@Cid,[Title]=@Title,[Context]=@Context, [Status]=@Status,[LastUpDateTime]=GETDATE(),[thumbsURL]=@thumbsURL,[thumbsSize]=@thumbsSize,[FileName]=@FileName, [FilteType]=@FilteType,[FileURL]=@FileURL,[FileSize]=@FileSize WHERE [Tid]=@Tid", pars) > 0; } public override bool Delete(int id) { return DbHelper.ExecuteNonQuery(InterfaceId, CommandType.Text, "DELETE FROM [DT_Topic] WHERE [Tid]=" + id) > 0; } public override TopicInfo Get(TKey key) { TopicInfo Entity = null; DbParameter[] para = { DbHelper.MakeInParam(InterfaceId,"@Tid",(DbType)SqlDbType.Int,4,key) }; using (IDataReader reader = DbHelper.ExecuteReader(InterfaceId, CommandType.Text, @"SELECT TOP 1 [Tid],[Cid] ,[Title],[Context],[Status],[Uid],[UserName],[Hits],[LastUpDateTime],[Addtime] ,[thumbsURL],[thumbsSize],[FileName],[FilteType],[FileURL],[FileSize] FROM [DT_Topic] WHERE Tid= @Tid", para)) { if (reader.Read()) { Entity = LoadEntity(reader); } reader.Dispose(); } return Entity; } public override IList ToList() { IList list = new List(); using (DataTable dt = DbHelper.ExecuteDatatable(InterfaceId, @"SELECT [Tid],[Cid],[Title],[Context],[Status],[Uid],[UserName],[Hits], [LastUpDateTime],[Addtime],[thumbsURL],[thumbsSize],[FileName],[FilteType],[FileURL],[FileSize] FROM [DT_Topic]")) { if (null != dt && 0 < dt.Rows.Count) { foreach (DataRow dr in dt.Rows) { list.Add(LoadEntity(dr)); } } dt.Dispose(); } return list; } public override IList ToList(TopicInfo entity) { IList list = new List(); DbParameter[] para = { DbHelper.MakeInParam(InterfaceId,"@cid",(DbType)SqlDbType.Int,4,entity.Cid) }; using (DataTable dt = DbHelper.ExecuteDatatable(InterfaceId, CommandType.Text, @"SELECT [Tid],[Cid],[Title],[Context],[Status],[Uid],[UserName],[Hits], [LastUpDateTime],[Addtime],[thumbsURL],[thumbsSize],[FileName],[FilteType],[FileURL],[FileSize] FROM [DT_Topic] WHERE [Cid]=@cid", para)) { if (null != dt && 0 < dt.Rows.Count) { foreach (DataRow dr in dt.Rows) { list.Add(LoadEntity(dr)); } } dt.Dispose(); } return list; } public override IList ToPaging(TopicInfo entity, int pageSize, int pageIndex, out int recordCount) { string where = "1=1 "; if (null != entity) { if (!string.IsNullOrEmpty(entity.Title)) where += " AND [Title] Like '%" + entity.Title + "%'"; if (0 < entity.ParentId) where += " AND [Cid] IN (SELECT [Cid] FROM [DT_TopicClass] WHERE [ParentId]=" + entity.ParentId + ")"; if (0 < entity.Cid) where += " AND [Cid]=" + entity.Cid; } recordCount = 0; string field = "[Tid],[Cid],[Title],[Context],[Status],[Uid],[UserName],[Hits],[LastUpDateTime],[Addtime],[thumbsURL],[thumbsSize],[FileName],[FilteType],[FileURL],[FileSize]" , orderField = "[Tid] DESC" , tableName = "[DT_Topic]"; DbParameter[] para = { DbHelper.MakeInParam(InterfaceId,"@pageSize",(DbType)SqlDbType.Int,4,pageSize), DbHelper.MakeInParam(InterfaceId,"@page",(DbType)SqlDbType.Int,4,pageIndex), DbHelper.MakeInParam(InterfaceId,"@tableName",(DbType)SqlDbType.NVarChar,500,tableName), DbHelper.MakeInParam(InterfaceId,"@field",(DbType)SqlDbType.NVarChar,1000,field), DbHelper.MakeInParam(InterfaceId,"@orderField",(DbType)SqlDbType.NVarChar,50,orderField), DbHelper.MakeInParam(InterfaceId,"@where",(DbType)SqlDbType.NVarChar,2000,where) }; IList list = new List(); using (IDataReader reader = DbHelper.ExecuteReader(InterfaceId, CommandType.StoredProcedure, "usp_st_page", para)) { while (reader.Read()) { list.Add(LoadEntity(reader)); } if (reader.NextResult() && reader.Read()) { recordCount = reader.GetInt32(0); } reader.Dispose(); } return list; } public IList ToPaging(string cids, int pageSize, int pageIndex, out int recordCount, string orderStr) { string where = "1=1 "; if (cids != "") where += " AND cid in(" + cids + ")"; recordCount = 0; string field = "Tid, Cid, Title, Context, Status, Uid, UserName, Hits, LastUpDateTime, Addtime,thumbsURL, thumbsSize, FileName, FilteType, FileURL, FileSize" , orderField = orderStr//"Tid DESC" , tableName = "[DT_Topic]"; DbParameter[] para = { DbHelper.MakeInParam(InterfaceId,"@pageSize",(DbType)SqlDbType.Int,4,pageSize), DbHelper.MakeInParam(InterfaceId,"@page",(DbType)SqlDbType.Int,4,pageIndex), DbHelper.MakeInParam(InterfaceId,"@tableName",(DbType)SqlDbType.NVarChar,500,tableName), DbHelper.MakeInParam(InterfaceId,"@field",(DbType)SqlDbType.NVarChar,1000,field), DbHelper.MakeInParam(InterfaceId,"@orderField",(DbType)SqlDbType.NVarChar,50,orderField), DbHelper.MakeInParam(InterfaceId,"@where",(DbType)SqlDbType.NVarChar,2000,where) }; IList list = new List(); using (IDataReader reader = DbHelper.ExecuteReader(InterfaceId, CommandType.StoredProcedure, "usp_st_page", para)) { while (reader.Read()) { list.Add(LoadEntity(reader)); } if (reader.NextResult() && reader.Read()) { recordCount = reader.GetInt32(0); } reader.Dispose(); } return list; } protected override TopicInfo LoadEntity(DataRow dr) { TopicInfo info = new TopicInfo { Id = TypeConverter.ObjectToInt(dr["Tid"]), Tid = TypeConverter.ObjectToInt(dr["Tid"]), LastUpDateTime = TypeConverter.ObjectToDateTime(dr["LastUpDateTime"], DateTime.MinValue), Addtime = TypeConverter.ObjectToDateTime(dr["Addtime"], DateTime.MinValue), Cid = TypeConverter.ObjectToInt(dr["Cid"]), Title = dr["Title"].ToString(), Context = dr["Context"].ToString(), Status = TypeConverter.ObjectToInt(dr["Status"]), Uid = TypeConverter.ObjectToInt(dr["Uid"]), UserName = dr["UserName"].ToString(), Hits = TypeConverter.ObjectToInt(dr["Hits"]), thumbsURL = dr["thumbsURL"].ToString(), thumbsSize = dr["thumbsSize"].ToString(), FileName = dr["FileName"].ToString(), FilteType = dr["FilteType"].ToString(), FileURL = dr["FileURL"].ToString(), FileSize = dr["FileSize"].ToString(), }; LoadFileInfo(ref info); return info; } protected override TopicInfo LoadEntity(IDataReader reader) { TopicInfo info = new TopicInfo { Id = TypeConverter.ObjectToInt(reader["Tid"]), Tid = TypeConverter.ObjectToInt(reader["Tid"]), LastUpDateTime = TypeConverter.ObjectToDateTime(reader["LastUpDateTime"], DateTime.MinValue), Addtime = TypeConverter.ObjectToDateTime(reader["Addtime"], DateTime.MinValue), Cid = TypeConverter.ObjectToInt(reader["Cid"]), Title = reader["Title"].ToString(), Context = reader["Context"].ToString(), Status = TypeConverter.ObjectToInt(reader["Status"]), Uid = TypeConverter.ObjectToInt(reader["Uid"]), UserName = reader["UserName"].ToString(), Hits = TypeConverter.ObjectToInt(reader["Hits"]), thumbsURL = reader["thumbsURL"].ToString(), thumbsSize = reader["thumbsSize"].ToString(), FileName = reader["FileName"].ToString(), FilteType = reader["FilteType"].ToString(), FileURL = reader["FileURL"].ToString(), FileSize = reader["FileSize"].ToString(), }; LoadFileInfo(ref info); return info; } private void LoadFileInfo(ref TopicInfo info) { if (!string.IsNullOrEmpty(info.thumbsURL)) { info.ListThumbsURL = new List(info.thumbsURL.Split(';')); } if (!string.IsNullOrEmpty(info.thumbsSize)) { info.ListThumbsSize = new List(info.thumbsSize.Split(';')); } if (!string.IsNullOrEmpty(info.FileName)) { info.ListFileName = new List(info.FileName.Split(';')); } if (!string.IsNullOrEmpty(info.FilteType)) { info.ListFilteType = new List(info.FilteType.Split(';')); } if (!string.IsNullOrEmpty(info.FileURL)) { info.ListFileURL = new List(info.FileURL.Split(';')); } if (!string.IsNullOrEmpty(info.FileSize)) { info.ListFileSize = new List(info.FileSize.Split(';')); } } } }