温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:MyShop网络商城源码(mvc开发)
当前文件:
MyShop/BLL/Article.cs,打开代码结构图
MyShop/BLL/Article.cs,打开代码结构图
using System;
using System.Collections.Generic;
using System.Data;
using MyShop.DALFactory;
using MyShop.IDAL;
using MyShop.Model;
namespace MyShop.BLL
{
public class Article
{
ConfigInfo configInfo = new ConfigInfo();
Config config = new Config();
private int _id;
private IArticle dal = DataAccess.CreateArticle();
public Article()
{
configInfo = config.GetModel();
}
private int _articleId;
public Article(int articleId)
{
this._id = articleId;
}
#region IArticle
/// <summary>
///
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
protected int Add(ArticleInfo model)
{
if (model == null)
{
return 0;
}
return dal.Add(model);
}
protected int Delete(string filter)
{
if (string.IsNullOrEmpty(filter))
return 0;
return dal.Delete(filter);
}
public bool Exist(string filter)
{
filter = filter.Trim();
if (string.IsNullOrEmpty(filter))
return false;
return dal.Exist(filter);
}
public DataSet GetDataSet()
{
return dal.GetDataSet();
}
public DataSet GetDataSet(string filter)
{
filter = filter.Trim();
if (string.IsNullOrEmpty(filter))
return null;
return dal.GetDataSet(filter);
}
public ArticleInfo GetModel(DataRow dr)
{
if (dr == null)
return null;
return dal.GetModel(dr);
}
private DataSet Query(string sql)
{
sql = sql.Trim();
if (string.IsNullOrEmpty(sql))
return null;
return dal.Query(sql);
}
public int Update(ArticleInfo model, string filter)
{
if (model == null)
return 0;
filter = filter.Trim();
if (string.IsNullOrEmpty(filter))
return 0;
return dal.Update(model, filter);
}
#endregion
#region common
/// <summary>
///
/// </summary>
/// <param name="model"></param>
/// <param name="msg"></param>
/// <returns></returns>
public int Add(ArticleInfo model, out string msg)
{
msg = "";
if (model == null)
{
msg = msg + "<li>数据不能为空</li>";
return 0;
}
bool isErr = false;
if (isErr)
return 0;
int count = 0;
count = Add(model);
if (count == 0)
msg = "<li>系统发生错误,请重新添加!</li>";
if (count == 1)
msg = "<li>添加成功!</li>";
return count;
}
/// <summary>
/// 真正从数据库中删除,注意使用时要分清是不是只放到回收站
/// </summary>
/// <param name="articleId"></param>
/// <returns></returns>
public int Delete(int articleId)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model == null)
return 0;
string filer;
filer = " articleId =" + articleId;
return Delete(filer);
}
public int Update(ArticleInfo model)
{
if (model == null)
{
return 0;
}
string filter;
filter = " articleId=" + model.ArticleID;
return Update(model, filter);
}
public ArticleInfo GetModel(int articleId)
{
DataSet dataset = new DataSet();
dataset = GetDataSet(" articleId=" + articleId);
if (dataset != null && dataset.Tables[0].Rows.Count > 0)
return GetModel(dataset.Tables[0].Rows[0]);
return null;
}
public ArticleInfo GetModel(string title)
{
title = Utils.ReplaceBadSQL(title.Trim());
if (string.IsNullOrEmpty(title.ToString()))
return null;
DataSet dataset = new DataSet();
dataset = GetDataSet(" title='" + title + "'");
if (dataset != null && dataset.Tables[0].Rows.Count > 0)
return GetModel(dataset.Tables[0].Rows[0]);
return null;
}
#endregion
#region 得到文章列表
/// <summary>
/// 得到文章列表(前台用)
/// </summary>
/// <param name="channelId">频道ID。如果是所有频道,参数值应为-1</param>
/// <param name="classId">栏目ID。如果是所有栏目,参数值应为-1</param>
/// <returns></returns>
public DataSet GetArticlList(int channelId, int classId)
{
bool status = true;
bool deleted = false;
int isDeleted = deleted ? 1 : 0;
int _status = (status == true) ? 1 : 0;
string filter = "";
filter = (channelId == -1) ? filter : filter + " and [channelId] = " + channelId;
filter = (classId == -1) ? filter : filter + " and [classId] = " + classId;
filter = filter + " and [Status] = " + _status + " and [deleted] =" + isDeleted;
filter = " [articleId] > 0 " + filter + " order by onTop desc, articleId desc ";
return GetDataSet(filter);
}
/// <summary>
/// 得到文章列表
/// </summary>
/// <param name="channelId">文章频道ID</param>
/// <returns></returns>
public DataSet GetDataSetByChannelId(int channelId)
{
return GetDataSet(channelId,-1);
}
/// <summary>
/// 得到文章列表
/// </summary>
/// <param name="classId">文章栏目ID</param>
/// <returns></returns>
public DataSet GetDataSetByClassId(int classId)
{
return GetDataSet(-1,classId);
}
/// <summary>
/// 得到文章列表
/// </summary>
/// <param name="channelId">频道ID。如果是所有频道,参数值应为-1</param>
/// <param name="classId">栏目ID。如果是所有栏目,参数值应为-1</param>
/// <returns></returns>
public DataSet GetDataSet(int channelId, int classId)
{
string filter = "";
filter = (channelId == -1) ? filter : filter + " and [channelId] = " + channelId;
filter = (classId == -1) ? filter : filter + " and [classId] = " + classId;
filter = " [articleId] > 0 " + filter + " order by articleId desc ";
return GetDataSet(filter);
}
//================================
/// <summary>
/// 得到文章列表
/// </summary>
/// <param name="Status">是否审核通过</param>
/// <param name="deleted">是否已删除</param>
/// <returns></returns>
public DataSet GetDataSet(bool status, bool deleted)
{
return GetDataSet(-1,-1,status,deleted);
}
/// <summary>
/// 得到文章列表
/// </summary>
/// <param name="channelId">频道ID。如果是所有频道,参数值应为-1</param>
/// <param name="status">是否审核通过</param>
/// <param name="deleted">是否已删除</param>
/// <returns></returns>
public DataSet GetDataSetByChannelId(int channelId,bool status, bool deleted)
{
return GetDataSet(channelId,-1,status,deleted);
}
/// <summary>
/// 得到文章列表
/// </summary>
/// <param name="classId">栏目ID。如果是所有栏目,参数值应为-1</param>
/// <param name="status">是否审核通过</param>
/// <param name="deleted">是否已删除</param>
/// <returns></returns>
public DataSet GetDataSetByClassId(int classId,bool status, bool deleted)
{
return GetDataSet(-1,classId,status,deleted);
}
/// <summary>
/// 得到文章列表
/// </summary>
/// <param name="channelId">频道ID。如果是所有频道,参数值应为-1</param>
/// <param name="classId">栏目ID。如果是所有栏目,参数值应为-1</param>
/// <param name="status">是否审核通过</param>
/// <param name="deleted">是否已删除</param>
/// <returns></returns>
public DataSet GetDataSet(int channelId, int classId, bool status, bool deleted)
{
int isDeleted = deleted ? 1 : 0;
int _status = (status == true) ? 1 : 0;
string filter = "";
filter = (channelId == -1) ? filter : filter + " and [channelId] = " + channelId;
filter = (classId == -1) ? filter : filter + " and [classId] = " + classId;
filter = filter + " and [Status] = " + _status + " and [deleted] =" + isDeleted;
filter = " [articleId] > 0 " + filter + " order by articleId desc ";
return GetDataSet(filter);
}
//=======================================
/// <summary>
/// 得到文章列表
/// </summary>
/// <param name="channelId">频道ID。如果是所有频道,参数值应为-1</param>
/// <param name="deleted">是否已放入回收站</param>
/// <returns></returns>
public DataSet GetDataSetByChannelId(int channelId, bool deleted)
{
return GetDataSet(channelId, -1, string.Empty, deleted);
}
/// <summary>
/// 得到文章列表
/// </summary>
/// <param name="classId">栏目ID。如果是所有栏目,参数值应为-1</param>
/// <param name="deleted">是否已放入回收站</param>
/// <returns></returns>
public DataSet GetDataSetByClassId(int classId, bool deleted)
{
return GetDataSet(-1, classId, string.Empty, deleted);
}
/// <summary>
/// 返回所有未放入回收站的文章
/// </summary>
/// <returns></returns>
public DataSet GetDataSetUndeleted()
{
return GetDataSetUndeleted(-1);
}
/// <summary>
/// 返回未放入回收站的文章
/// </summary>
/// <param name="channelId">频道ID。如果是所有频道,参数值应为-1</param>
/// <returns></returns>
public DataSet GetDataSetUndeleted(int channelId)
{
return GetDataSetUndeleted(channelId, string.Empty);
}
/// <summary>
/// 返回未放入回收站的文章
/// </summary>
/// <param name="channelId">频道ID。如果是所有频道,参数值应为-1</param>
/// <param name="articlOptionFilter">文章选项。无选定项时值应为空</param>
/// <returns></returns>
public DataSet GetDataSetUndeleted(int channelId, string articlOptionFilter)
{
return GetDataSet(channelId, -1, articlOptionFilter, false);
}
/// <summary>
/// 返回所有放入回收站的文章
/// </summary>
/// <returns></returns>
public DataSet GetDataSetDeleted()
{
return GetDataSetDeleted(-1);
}
/// <summary>
/// 返回放入回收站的文章
/// </summary>
/// <param name="channelId">频道ID。如果是所有频道,参数值应为-1</param>
/// <returns></returns>
public DataSet GetDataSetDeleted(int channelId)
{
return GetDataSet(channelId, -1, string.Empty, true);
}
/// <summary>
///返回放入回收站的文章
/// </summary>
/// <param name="channelId">频道ID。如果是所有频道,参数值应为-1</param>
/// <param name="articlOptionFilter">文章选项。无选定项时值应为空</param>
/// <returns></returns>
public DataSet GetDataSetDeleted(int channelId, string articlOptionFilter)
{
return GetDataSet(channelId, -1, articlOptionFilter, true);
}
/// <summary>
/// 返回文章列表
/// </summary>
/// <param name="channelId">频道ID。如果是所有频道,参数值应为-1</param>
/// <param name="classId">栏目ID。如果是所有栏目,参数值应为-1</param>
/// <param name="articlOptionFilter">文章选项。无选定项时值应为空</param>
/// <param name="deleted">是否已放入回收站</param>
/// <returns></returns>
public DataSet GetDataSet(int channelId, int classId, string articlOptionFilter, bool deleted)
{
int isDeleted = deleted ? 1 : 0;
string filter = "";
filter = (channelId == -1) ? filter : filter + " and [channelId] = " + channelId;
filter = (classId == -1) ? filter : filter + " and [classId] = " + classId;
filter = (string.IsNullOrEmpty(articlOptionFilter.Trim())) ? filter : filter + " and " + articlOptionFilter;
filter = filter + " and [Deleted] = " + isDeleted;
filter = " [articleId] > 0 " + filter + " order by articleId desc ";
return GetDataSet(filter);
}
#endregion
#region 前台模块
/// <summary>
/// 最新文章
/// </summary>
/// <param name="count">返回文章个数</param>
/// <returns></returns>
public DataSet GetLastArticles( int count)
{
if (count == 0)
return null;
return dal.GetLastArticles(count);
}
/// <summary>
/// 热点文章
/// </summary>
/// <param name="count">返回文章个数</param>
/// <returns></returns>
public DataSet GetHotArticles( int count)
{
if (count == 0)
return null;
return dal.GetHotArticles(count);
}
/// <summary>
/// 推荐文章
/// </summary>
/// <param name="count">返回文章个数</param>
/// <returns></returns>
public DataSet GetRecommendedArticles( int count )
{
if (count == 0)
return null;
return dal.GetRecommendedArticles(count);
}
public DataSet GetDataSetByTitle(string title)
{
if (string.IsNullOrEmpty(title))
return null;
return GetDataSet(" title like '%" + Utils.ReplaceBadSQL(title) + "%'");
}
#endregion
#region 以下过程要用Article article = new Article(id)实例化后才能进行调用
/// <summary>
/// 增加点击数
/// </summary>
/// <param name="num">要增加或减少的点击数,加用正数,减用负数</param>
public void AddHit( int num)
{
ArticleInfo model = new ArticleInfo();
model = Model;
model.Hits += num;
Model = model;
}
/// <summary>
/// 增加评论数
/// </summary>
/// <param name="num">要增加或减少的点击数,加用正数,减用负数</param>
public void AddCommentCount( int num)
{
ArticleInfo model = new ArticleInfo();
model = Model;
model.CommentCount += num;
Model = model;
}
#region property
/// <summary>
/// 获取当前项目ID
/// </summary>
public int ID
{
get
{
return this._id;
}
}
/// <summary>
/// 获取调查项目的实体
/// </summary>
public ArticleInfo Model
{
get
{
return GetModel(this._id);
}
set
{
Update(value);
}
}
/// <summary>
/// 获取当前对象是否存在(数据库中有没有这条记录)
/// </summary>
public bool IsExist
{
get
{
return Model == null ? false : true;
}
}
#endregion
#endregion
#region 后台管理
/// <summary>
/// 删除Article
/// </summary>
/// <param name="channelId"></param>
/// <param name="classId"></param>
/// <returns></returns>
public int Delete(int channelId, int classId)
{
string filer;
filer = " [channelId]=" + channelId + " and [classId] = " + classId;
return Delete(filer);
}
/// <summary>
/// 快速搜索
/// </summary>
/// <param name="channelId">文章频道ID</param>
/// <param name="classId">文章栏目ID</param>
/// <param name="articlOptionFilter">文章选项。无选定项时值应为空</param>
/// <param name="deleted">true:返回放到回收站的文章;false:返回未放到回收站的文章</param>
/// <returns></returns>
public DataSet QuickSearch(int channelId, int classId, string articlOptionFilter, bool deleted)
{
return dal.QuickSearch(channelId, classId,articlOptionFilter, deleted);
}
/// <summary>
/// 高级查询
/// </summary>
/// <param name="channelId">文章频道ID</param>
/// <param name="classId">文章栏目ID</param>
/// <param name="articlOptionFilter">文章选项。无选定项时值应为空</param>
/// <param name="field"></param>
/// <param name="keywords"></param>
/// <param name="deleted">true:返回放到回收站的文章;false:返回未放到回收站的文章</param>
/// <returns></returns>
public DataSet KeywordsSearch(int channelId, int classId, string articlOptionFilter, string field, string keywords, bool deleted)
{
field = Utils.ReplaceBadSQL(field.Trim().ToLower());
keywords = Utils.ReplaceBadSQL(keywords.ToLower().Trim());
if (string.IsNullOrEmpty(field) || string.IsNullOrEmpty(keywords))
return null;
return dal.KeywordsSearch(channelId,classId,articlOptionFilter, field, keywords,deleted);
}
/// <summary>
/// 判断该文章是不是热点
/// </summary>
/// <param name="articleId"></param>
/// <returns>无该文章时返回false</returns>
public bool IsHot(int articleId)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model == null)
return false;
if (model.IsHot == 1)
return true;
else
return false;
}
/// <summary>
/// 取消或设置该文章为热点
/// </summary>
/// <param name="articleId"></param>
/// <param name="action">true 为设置 false为取消</param>
/// <returns></returns>
public int IsHot(int articleId, bool action)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model == null)
return 0;
if (action)
{
model.IsHot = 1;
}
else
{
model.IsHot = 0;
}
return Update(model);
}
/// <summary>
/// 判断该文章是不是固顶
/// </summary>
/// <param name="articleId"></param>
/// <returns>无该文章时返回false</returns>
public bool OnTop(int articleId)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model == null)
return false;
if (model.OnTop == 1)
return true;
else
return false;
}
/// <summary>
/// 取消或设置该文章为固顶
/// </summary>
/// <param name="articleId"></param>
/// <param name="action">true 为设置 false为取消</param>
/// <returns></returns>
public int OnTop(int articleId, bool action)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model == null)
return 0;
if (action )
{
model.OnTop = 1;
}
else
{
model.OnTop = 0;
}
return Update(model);
}
/// <summary>
/// 判断该文章是不是推荐
/// </summary>
/// <param name="articleId"></param>
/// <returns>无该文章时返回false</returns>
public bool IsElite(int articleId)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model == null)
return false;
if (model.IsElite == 1)
return true;
else
return false;
}
/// <summary>
/// 取消或设置该文章为推荐
/// </summary>
/// <param name="articleId"></param>
/// <param name="action">true 为设置 false为取消</param>
/// <returns></returns>
public int IsElite(int articleId, bool action)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model == null)
return 0;
if (action)
{
model.IsElite = 1;
}
else
{
model.IsElite = 0;
}
return Update(model);
}
/// <summary>
/// 判断该文章是不是审核通过
/// </summary>
/// <param name="articleId"></param>
/// <returns>无该文章时返回false</returns>
public bool Pass(int articleId)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model == null)
return false;
if (model.Status == 1)
return true;
else
return false;
}
/// <summary>
/// 取消或设置该文章状态
/// </summary>
/// <param name="articleId"></param>
/// <param name="action">true false为取消审核通过</param>
/// <returns></returns>
public int Pass(int articleId, bool action)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model == null)
return 0;
if (action)
{
model.Status = 1;
}
else
{
model.Status = 0;
}
return Update(model);
}
/// <summary>
/// 判断该文章有没有首页图片
/// </summary>
/// <param name="articleId"></param>
/// <returns>无该文章时返回false</returns>
public bool HasDefaultPic(int articleId)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model == null)
return false;
if (model.DefaultPicUrl.Length >= 3)
return true;
else
return false;
}
/// <summary>
/// 判断该文章标题是不是已经存在
/// </summary>
/// <param name="title"></param>
/// <returns></returns>
public bool ExistTitle(string title)
{
title = title.Trim();
if(string.IsNullOrEmpty(title))
return false;
return Exist(" title ='" + Utils.ReplaceBadSQL(title) + "'");
}
/// <summary>
/// 将文章放到回收站
/// </summary>
/// <param name="articleId"></param>
/// <returns></returns>
public int MoveToRecycle(int articleId)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model != null)
{
model.Deleted = 1;
return Update(model);
}
return 0;
}
/// <summary>
/// 将文章从回收站还原
/// </summary>
/// <param name="articleId"></param>
/// <returns></returns>
public int RestoreFromRecycle(int articleId)
{
ArticleInfo model = new ArticleInfo();
model = GetModel(articleId);
if (model != null)
{
model.Deleted = 0;
return Update(model);
}
return 0;
}
/// <summary>
/// 将文章从回收站清空
/// </summary>
/// <returns></returns>
public int DeleteAllFromRecycle()
{
string filter = " Deleted = 1 ";
return Delete(filter);
}
public int RestoreAllFromRecycle()
{
string filter = " Deleted = 1 ";
DataSet dataset = new DataSet();
dataset = GetDataSet(filter);
ArticleInfo model = new ArticleInfo();
int i = 0;
foreach (DataRow dr in dataset.Tables[0].Rows)
{
model = GetModel(dr);
if(model != null)
RestoreFromRecycle(model.ArticleID);
i++;
}
return i;
}
#endregion
/// <summary>
/// 显示classId栏目的文章列表
/// </summary>
/// <param name="classId">栏目ID</param>
/// <param name="count">要显示的数目</param>
/// <param name="cssClass">样式类名</param>
/// <param name="titleMaxLength">显示的最大长度</param>
/// <returns></returns>
public string ShowArticleList(int classId, int count, string cssClass, int titleMaxLength)
{
DataSet dataset = new DataSet();
Class cls = new Class();
ClassInfo clsModel = new ClassInfo();
clsModel = cls.GetModel(classId);
if (clsModel == null)
return "";
string classtitle = clsModel.ClassName;
dataset = GetArticlList(-1, classId);
ArticleInfo model = new ArticleInfo();
string content = "";
string title = "";
int listCount = Math.Min(count, dataset.Tables[0].Rows.Count);
for (int i = 0; i < listCount; i++)
{
model = GetModel(dataset.Tables[0].Rows[i]);
title = (model.Title.Length > titleMaxLength) ? model.Title.Substring(0, titleMaxLength) + "…" : model.Title;
content = content + "<li><A href=\"" + configInfo.InstallDir + "article/ShowArticle.aspx?articleId=" + model.ArticleID + "\" target=_blank>" + title + "</A></li>\r\n";
}
content = "<ul>\r\n" + content + "</ul>\r\n";
return "<div class=\"" + cssClass + "\">\r\n" + "<span>" + classtitle + " >></span>\r\n" + content
+ "<P class=\"More\"><A href=\"" + configInfo.InstallDir + "news\" target=_blank>更多>></A></P></div>\r\n";
}
}
}

