苏飞论坛

标题: 【通用权限管理系统】菜单管理BLL逻辑结构处理 [打印本页]

作者: 范范    时间: 2017-12-18 21:06
标题: 【通用权限管理系统】菜单管理BLL逻辑结构处理
【通用权限管理系统】菜单管理BLL逻辑结构处理


导读部分



购买http://www.sufeinet.com/thread-19360-1-1.html
讨论区http://www.sufeinet.com/forum-181-1.html
教程目录http://www.sufeinet.com/thread-19363-1-1.html



教程部分


此层是处理业务逻辑的部分,主要用在项目中调用,以及复杂的逻辑结构处理。
本层主要实现了一下的方法,以供菜单管理页面逻辑使用。

1. 声明dal层
[C#] 纯文本查看 复制代码
private Sys_MenuDAL dal = new Sys_MenuDAL();

此处声明过后,其它方法中,均使用 dal 进行数据库中的逻辑处理部分

以下为业务逻辑层实现的方法如下:

1. 获取分页列表信息
[C#] 纯文本查看 复制代码
/// <summary>
        /// 获取分页列表信息
        /// </summary>
        /// <param name="fields">所需字段</param>
        /// <param name="query">查询条件</param>
        /// <param name="orderby">排序方式</param>
        /// <param name="pageIndex">页码</param>
        /// <param name="pageSize">页长</param>
        /// <param name="totalCount">总记录</param>
        /// <returns></returns>
        public List<Sys_MenuInfo> GetListPage(string fields, string query, string orderby, int pageIndex, int pageSize, out int totalCount)
        {
            // 参数合法性校验
            if (pageSize <= 0) { totalCount = 0; return new List<Sys_MenuInfo>(); }
            if (pageIndex <= 0) { pageIndex = 1; }
            if (string.IsNullOrWhiteSpace(fields)) { fields = "*"; }
            if (string.IsNullOrWhiteSpace(query)) { query = "1=1"; }
            if (string.IsNullOrWhiteSpace(orderby)) { orderby = "MenuID"; }

            return dal.GetList(fields, query, orderby, pageIndex, pageSize, out totalCount);
        }


2. 获取列表信息
[C#] 纯文本查看 复制代码
/// <summary>
        /// 获取列表信息
        /// </summary>
        /// <param name="fields">所需字段</param>
        /// <param name="query">查询条件</param>
        /// <param name="orderBy">排序方式</param>
        /// <returns></returns>
        public List<Sys_MenuInfo> GetList(string fields, string query, string orderBy)
        {
            // 参数合法性校验
            if (string.IsNullOrWhiteSpace(fields)) { fields = "*"; }
            if (string.IsNullOrWhiteSpace(query)) { query = "1=1"; }
            if (string.IsNullOrWhiteSpace(orderBy)) { orderBy = "MenuID"; }

            return dal.GetList(fields, query, orderBy);
        }


3. 获取实体信息
[C#] 纯文本查看 复制代码
/// <summary>
        /// 获取实体信息
        /// </summary>
        /// <param name="fields">所需字段</param>
        /// <param name="query">查询条件(如果top1 的话,可以在此处添加排序方式)</param>
        /// <returns></returns>
        public Sys_MenuInfo GetInfo(string fields, string query)
        {
            // 参数合法性校验
            if (string.IsNullOrWhiteSpace(fields)) { fields = "*"; }
            if (string.IsNullOrWhiteSpace(query)) { query = "1=1"; }

            return dal.GetInfo(fields, query);
        }



4.新增
新增时,进行了菜单id的逻辑处理,主要处理如下:
1. 如果添加的为主菜单,则获取最大的主菜单id,除以100后,加1,然后再乘以100处理
2. 如果添加的为子菜单,则,获取此主菜单下的子菜单,如果没有,主菜单id + 1 即可,如果有,则最大的子菜单id + 1

[C#] 纯文本查看 复制代码
/// <summary>
        /// 新增
        /// </summary>
        /// <param name="info">实体信息</param>
        /// <returns></returns>
        public int Insert(Sys_MenuInfo info)
        {
            // 得到需要保存的菜单id
            var menuId = 100;
            if (info.ParentID > 0)
            {
                // 新增子菜单时处理
                // 获取当前主菜单下的最大id值
                var maxIdInfo = GetInfo(" top 1 *", string.Format(" ParentID = {0} order by MenuID desc", info.ParentID));
                if (maxIdInfo != null && maxIdInfo.MenuID > 0)
                {
                    menuId = maxIdInfo.MenuID + 1;
                }
                else
                {
                    menuId = info.ParentID + 1;
                }
            }
            else
            {
                // 新增主菜单时处理
                // 获取最大的主菜单id值
                var maxIdInfo = GetInfo(" top 1 *", " ParentID = 0 order by MenuID desc");
                if (maxIdInfo != null && maxIdInfo.MenuID > 0) { menuId = (maxIdInfo.MenuID / 100 + 1) * 100; }
            }

            info.MenuID = menuId;
            return dal.Insert(info);
        }



5. 修改
[C#] 纯文本查看 复制代码
/// <summary>
        /// 修改
        /// </summary>
        /// <param name="info">实体信息</param>
        /// <returns></returns>
        public int Update(Sys_MenuInfo info)
        {
            return dal.Update(info);
        }


6. 删除
[C#] 纯文本查看 复制代码
/// <summary>
        /// 删除
        /// </summary>
        /// <param name="query">条件</param>
        /// <returns></returns>
        public int Delete(string query)
        {
            // 如果条件为空的话,不进行删除,直接返回
            if (string.IsNullOrWhiteSpace(query)) { return -1; }

            return dal.Delete(query);
        }


此处逻辑处理,主要进行了删除条件的判断,如果没有条件的话,直接返回   , 避免了失误直接导致整个表内容的删除


作者: 范范    时间: 2017-12-18 21:12
占个自己的沙发
作者: 站长苏飞    时间: 2017-12-19 08:24
强烈支持楼主ing……




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4