Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="permissionsStr"></param>
        /// <returns></returns>
        public object Save(string roleId, string permissionsStr)
        {
            var  permissions = permissionsStr.Split(',').ToList();
            Role role        = this.DAL.Find <Role>(roleId);

            if (role != null)
            {
                //删除
                var dels = context.RolePermissions.Where(a => a.RoleId.Equals(roleId) && permissions.Contains(a.PermissionId) == false);
                foreach (var x in dels)
                {
                    context.RolePermissions.Remove(x);
                }
                //添加
                var temp = context.RolePermissions.Where(a => a.RoleId.Equals(roleId)).Select(a => a.PermissionId);
                var adds = permissions.Where(a => temp.Contains(a) == false).ToList();
                adds = context.Permissions.Where(a => adds.Contains(a.Id)).Select(a => a.Id).ToList();
                foreach (var x in adds)
                {
                    context.RolePermissions.Add(new RolePermission
                    {
                        Id           = FCake.Core.Common.DataHelper.GetSystemID(),
                        PermissionId = x,
                        RoleId       = roleId
                    });
                }

                context.SaveChanges();
                PermissionCache.ResetRolePermissions(roleId, context.RolePermissions.Where(a => a.RoleId.Equals(roleId)).ToList());
                return(OpResult.Success("数据保存成功"));
            }
            return(OpResult.Fail("数据保存错误"));
        }