http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4009|回复: 2

[教程] 【通用权限管理系统】菜单管理BLL逻辑结构处理

[复制链接]
发表于 2017-12-18 21:06:25 | 显示全部楼层 |阅读模式
【通用权限管理系统】菜单管理BLL逻辑结构处理


导读部分






教程部分


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

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);
        }


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



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2017-12-18 21:12:35 | 显示全部楼层
占个自己的沙发
发表于 2017-12-19 08:24:29 | 显示全部楼层
强烈支持楼主ing……
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-23 00:21

© 2014-2021

快速回复 返回顶部 返回列表