Member区域(二) - 文章管理架构

上次把member的用户部分完成,现在开始做文章管理部分。文章部分根据涉及显示现实文章列表,发布文章,修改文章,删除文章等功能。最终的实现目标是使用权限来控制用户是否能进行相应操作,管理员权限的会显示全部文章列表和我的文章列表,普通用户只显示我的文章列表。由于还没做权限这块所以没法判断,暂时登录后所有都可以操作。

一、总体说明

先看一下文章管理设想要实现的功能:

image

再看一下类图

image

这里Category是栏目;CommonModel是公共模型;Article是文章;Attachment是附件;

CommonModel是内容管理这块抽取出来的公共部分,像文章,咨询甚至产品都有一些共同的内容这里把它单独提取出来作为一个类。CommonModel可能包含一片文章,包含一组附件,包含一系列评论,他们之间的关系类图中已经表示出来。

二、搭建架构

这个顺序根以前一样

image

1、IDAL

在IDAL添加接口InterfaceCommonModelRepository,其实只是继承自InterfaceBaseRepository,没有添加任何其他内容。

namespace Ninesky.IDAL
{
    /// <summary>
    /// 公共模型接口
    /// <remarks>
    /// 创建:2014.02.23
    /// 修改:2014.02.28
    /// </remarks>
    /// </summary>
    public interface InterfaceCommonModelRepository:InterfaceBaseRepository<Models.CommonModel> {

    }
}

再依次添加InterfaceCategory,InterfaceArticle,InterfaceAttachment,方式和公共模型接口相同。

2、DAL

DAL中是对IDAL接口的实现,还是从CommonModel开始,先添加CommonModelRepository,也是跟原来一样直接继承没有什么代码。

namespace Ninesky.DAL
{
    /// <summary>
    /// 公共模型仓储
    /// <remarks>
    /// 创建:2014.02.23
    /// </remarks>
    /// </summary>
    public class CommonModelRepository:BaseRepository<Models.CommonModel>, IDAL.InterfaceCommonModel
    {
    }
}

然后依次添加CategoryRepository,ArticleRepository,AttachmentRepository。

3.IBLL

这次先从InterfaceCategoryService开始,InterfaceArticleService,InterfaceCommentService,InterfaceAttachmentService。InterfaceCommonModelService内容较多放在最后。

InterfaceCategoryService

具体功能会在做栏目的时候再写,这里暂时空着。

namespace Ninesky.IBLL
{
    /// <summary>
    /// 栏目服务接口
    /// <remarks>
    /// 创建:2014.02.23
    /// </remarks>
    /// </summary>
    public class InterfaceCategoryService:InterfaceBaseService<Models.Category>
    {
    }
}

4.BLL

同样先从CategoryService开始,然后依次添加ArticleService,AttachmentService。CommonModelService。

using Ninesky.DAL;
using Ninesky.IBLL;
using Ninesky.Models;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Ninesky.BLL
{
    /// <summary>
    /// 栏目服务
    /// <remarks>
    /// 创建:2014.02.27
    /// </remarks>
    /// </summary>
    public class CategoryService:BaseService<Category>,InterfaceCategoryService
    {
        public CategoryService() : base(RepositoryFactory.CategoryRepository) { }
    }
}

5、Web

在web项目的Member区域下添加三个空控制器。

栏目控制器CategoryController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Ninesky.IBLL;
using Ninesky.BLL; 
using Ninesky.Models;

namespace Ninesky.Web.Areas.Member.Controllers
{
    [Authorize]
    public class CategoryController : Controller
    {
        private InterfaceCategoryService categoryRepository;
        public CategoryController() { categoryRepository = new CategoryService(); }
        

    }
}

文章控制器ArticleController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Ninesky.Models;
using Ninesky.IBLL;
using Ninesky.BLL;

namespace Ninesky.Web.Areas.Member.Controllers
{
    public class ArticleController : Controller
    {
        private InterfaceArticleService articleService;
        private InterfaceCommonModelService commonModelService;
        public ArticleController() { articleService = new ArticleService(); commonModelService = new CommonModelService(); }
  }
}

附件控制器AttachmentController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections;
using System.Web;
using System.Web.Mvc;
using System.IO;
using Ninesky.IBLL;
using Ninesky.BLL;
using Ninesky.Models;

namespace Ninesky.Web.Areas.Member.Controllers
{
    /// <summary>
    /// 附件控制器
    /// <remarks>
    /// 创建:2014.03.05
    /// </remarks>
    /// </summary>
    [Authorize]
    public class AttachmentController : Controller
    {
 }
}

架构结束,明天开始实现文章相关功能!