/// <summary>
        /// 保存授权菜单
        /// </summary>
        /// <param name="parm"></param>
        /// <returns></returns>
        public async Task <ApiResult <string> > SaveAsync(SysPermissions parm)
        {
            var res = new ApiResult <string>
            {
                statusCode = 200,
                data       = "1"
            };

            try
            {
                //根据角色查询菜单列表
                var menuList = await Db.Queryable <SysPermissions>().Where(m => m.RoleGuid == parm.RoleGuid && m.Types == 1).ToListAsync();

                //现有的
                var list = new List <SysPermissions>();
                foreach (var item in Utils.SplitString(parm.MenuGuid, ','))
                {
                    list.Add(new SysPermissions()
                    {
                        RoleGuid = parm.RoleGuid, MenuGuid = item, Types = parm.Types
                    });
                }
                //查询都有的
                var publicMenu = menuList.Where(m => list.Exists(t => t.MenuGuid == m.MenuGuid)).ToList();

                //查询数据库有,但是前端提供没有的,说明要删除这个菜单权限
                var delMenuList = menuList.Where(m => !publicMenu.Exists(t => t.MenuGuid == m.MenuGuid)).Select(m => m.MenuGuid).ToList();

                //查询前端提供的,数据库没有的,说明概要增加菜单权限
                var AddMenuList = list.Where(m => !publicMenu.Exists(t => t.MenuGuid == m.MenuGuid)).ToList();

                var result = Db.Ado.UseTran(async() =>
                {
                    //删除差异的
                    if (delMenuList.Count > 0)
                    {
                        await Db.Deleteable <SysPermissions>().Where(m => m.RoleGuid == parm.RoleGuid && delMenuList.Contains(m.MenuGuid) && m.Types == 1).ExecuteCommandAsync();
                    }
                    //添加新的授权菜单
                    if (AddMenuList.Count > 0)
                    {
                        await Db.Insertable(AddMenuList).ExecuteCommandAsync();
                    }
                });
                if (!result.IsSuccess)
                {
                    res.statusCode = (int)ApiEnum.Error;
                    res.message    = "插入数据失败~";
                }
            }
            catch (Exception ex)
            {
                res.statusCode = (int)ApiEnum.Error;
                res.message    = ApiEnum.Error.GetEnumText() + ex.Message;
                Logger.Default.ProcessError((int)ApiEnum.Error, ex.Message);
            }
            return(res);
        }
        /// <summary>
        /// 用户授权角色
        /// </summary>
        /// <param name="parm"></param>
        /// <returns></returns>
        public async Task <ApiResult <string> > ToRoleAsync(SysPermissions parm, bool status)
        {
            var res = new ApiResult <string>
            {
                statusCode = 200,
                data       = "1"
            };

            try
            {
                if (status)
                {
                    //授权
                    var dbres = await Db.Insertable <SysPermissions>(new SysPermissions()
                    {
                        RoleGuid   = parm.RoleGuid,
                        AdminGuid  = parm.AdminGuid,
                        MenuGuid   = parm.MenuGuid,
                        BtnFunJson = parm.BtnFunJson,
                        Types      = parm.Types
                    }).ExecuteCommandAsync();

                    if (dbres == 0)
                    {
                        res.statusCode = (int)ApiEnum.Error;
                        res.message    = "插入数据失败~";
                    }
                }
                else
                {
                    //取消授权
                    if (parm.Types == 2)
                    {
                        await Db.Deleteable <SysPermissions>().Where(m => m.AdminGuid == parm.AdminGuid && m.RoleGuid == parm.RoleGuid && m.Types == 2).ExecuteCommandAsync();
                    }
                    if (parm.Types == 3)
                    {
                        //角色-菜单-按钮功能
                        await Db.Deleteable <SysPermissions>().Where(m => m.BtnFunJson == parm.BtnFunJson && m.RoleGuid == parm.RoleGuid && m.MenuGuid == parm.MenuGuid && m.Types == 3).ExecuteCommandAsync();
                    }
                }
            }
            catch (Exception ex)
            {
                res.statusCode = (int)ApiEnum.Error;
                res.message    = ApiEnum.Error.GetEnumText() + ex.Message;
                Logger.Default.ProcessError((int)ApiEnum.Error, ex.Message);
            }
            return(res);
        }
Exemple #3
0
        public async Task <object> PutAsync(SysPermissions entity)
        {
            var json = new ResJson()
            {
                success = false
            };

            try
            {
                bool IsSave = string.IsNullOrEmpty(entity.GUID);

                if (IsSave)
                {
                    // 权限动作不能重复
                    if (await sysPermissionService.IsAnyAsync(p => p.PermissionValue.ToLower() == entity.PermissionValue.ToLower() && p.Module_GUID == entity.Module_GUID))
                    {
                        json.message = "权限值不能重复";
                        return(json);
                    }

                    // Add 初始参数
                    entity.CreateUser = AdminUser.User.Account;
                    entity.CreateDate = DateTime.Now;
                    entity.GUID       = Guid.NewGuid().ToString();
                }

                // Add、Update 默认参数
                entity.UpdateUser = AdminUser.User.Account;
                entity.UpdateDate = DateTime.Now;

                //保存权限
                if (await sysPermissionService.SaveOrUpdateAsync(entity, IsSave))
                {
                    json.message = "操作成功!";
                    json.success = true;
                }
                else
                {
                    json.message = "操作失败!";
                }
            }
            catch (Exception ex)
            {
                json.message = "网络超时.";
                throw ex;
            }

            return(json);
        }
        /// <summary>
        /// 用户授权角色
        /// </summary>
        /// <param name="parm"></param>
        /// <returns></returns>
        public async Task <ApiResult <string> > ToRoleAsync(SysPermissions parm, bool status)
        {
            var res = new ApiResult <string>
            {
                statusCode = 200,
                data       = "1"
            };

            try
            {
                if (status)
                {
                    //授权
                    var dbres = SysPermissionsDb.Insert(new SysPermissions()
                    {
                        RoleGuid   = parm.RoleGuid,
                        AdminGuid  = parm.AdminGuid,
                        MenuGuid   = parm.MenuGuid,
                        BtnFunGuid = parm.BtnFunGuid,
                        Types      = parm.Types
                    });
                    if (!dbres)
                    {
                        res.statusCode = (int)ApiEnum.Error;
                        res.message    = "插入数据失败~";
                    }
                }
                else
                {
                    //取消授权
                    if (parm.Types == 2)
                    {
                        SysPermissionsDb.Delete(m => m.AdminGuid == parm.AdminGuid && m.RoleGuid == parm.RoleGuid && m.Types == 2);
                    }
                    if (parm.Types == 3)
                    {
                        //角色-菜单-按钮功能
                        SysPermissionsDb.Delete(m => m.BtnFunGuid == parm.BtnFunGuid && m.RoleGuid == parm.RoleGuid && m.MenuGuid == parm.MenuGuid && m.Types == 3);
                    }
                }
            }
            catch (Exception ex)
            {
                Db.Ado.CommitTran();
                res.statusCode = (int)ApiEnum.Error;
                res.message    = ApiEnum.Error.GetEnumText() + ex.Message;
            }
            return(await Task.Run(() => res));
        }
        /// <summary>
        /// 保存授权菜单
        /// </summary>
        /// <param name="parm"></param>
        /// <returns></returns>
        public async Task <ApiResult <string> > SaveAsync(SysPermissions parm)
        {
            var res = new ApiResult <string>
            {
                statusCode = 200,
                data       = "1"
            };

            try
            {
                //开启事务
                Db.Ado.BeginTran();
                //先根据角色判断是否存在,如果存在,则删除
                Db.Deleteable <SysPermissions>().Where(m => m.RoleGuid == parm.RoleGuid && m.Types == 1).ExecuteCommand();

                var list = new List <SysPermissions>();
                foreach (var item in Utils.SplitString(parm.MenuGuid, ','))
                {
                    list.Add(new SysPermissions()
                    {
                        RoleGuid = parm.RoleGuid, MenuGuid = item, Types = parm.Types
                    });
                }
                var dbres = Db.Insertable(list).ExecuteCommand();
                if (dbres == 0)
                {
                    res.statusCode = (int)ApiEnum.Error;
                    res.message    = "插入数据失败~";
                }
                Db.Ado.CommitTran();
            }
            catch (Exception ex)
            {
                Db.Ado.RollbackTran();
                res.statusCode = (int)ApiEnum.Error;
                res.message    = ApiEnum.Error.GetEnumText() + ex.Message;
            }
            return(await Task.Run(() => res));
        }
 public async Task <ApiResult <string> > AdminToRole([FromBody] SysPermissions parm)
 {
     return(await _roleMenu.ToRoleAsync(parm, parm.status));
 }
 public async Task <ApiResult <string> > SaveRoleMenu([FromBody] SysPermissions parm)
 {
     return(await _roleMenu.SaveAsync(parm));
 }
Exemple #8
0
 public async Task <IActionResult> AdminToRole([FromBody] SysPermissions parm)
 {
     return(Ok(await _roleMenu.ToRoleAsync(parm, parm.status)));
 }
Exemple #9
0
 public async Task <IActionResult> SaveRoleMenu([FromBody] SysPermissions parm)
 {
     return(Ok(await _roleMenu.SaveAsync(parm)));
 }
 public async Task <ApiResult <string> > AdminToRole(SysPermissions parm, bool status)
 {
     return(await _roleMenu.ToRoleAsync(parm, status));
 }