Пример #1
0
        public OperationResult SetUserRoleRightList(RequestOperation <SetRoleRightData> request)
        {
            var result = new OperationResult();

            try
            {
                if (request.Body == null ||
                    request.Body.RightIDs == null ||
                    request.Body.RightIDs.Count == 0)
                {
                    result.Message = "没有可保存的数据";
                    return(result);
                }

                string sqlTemplate = "({0},{1}),";
                string sql1        = "";
                string extsql2     = "";
                foreach (var right in request.Body.RightIDs)
                {
                    if (right < 0)
                    {
                        extsql2 += String.Format(sqlTemplate, request.Body.RoleID, right);
                    }
                    else
                    {
                        sql1 += String.Format(sqlTemplate, request.Body.RoleID, right);
                    }
                }

                if (sql1.Length > 0)
                {
                    sql1 = " INSERT INTO [dbo].[T_RoleMenu_Mapping]([RoleID],[MID]) VALUES "
                           + sql1.TrimEnd(',');
                }

                if (extsql2.Length > 0)
                {
                    extsql2 = " INSERT INTO [dbo].[T_RoleMenuExtent_Mapping]([RoleID],[ExtendID]) VALUES "
                              + extsql2.TrimEnd(',');
                }

                int rows = RoleRightDA.SetUserRoleRight(request.Body.RoleID, sql1, extsql2);
                if (rows == 0)
                {
                    throw new Exception("设置角色权限失败");
                }
                result.ErrCode = 0;
                result.Message = "ok";

                Task.Factory.StartNew(() => RefreshRightCache(request.Body.RoleID));
            }
            catch (Exception ex)
            {
                Logger.WriteException("SetUserRoleRightList", ex, request);
                result.ErrCode = -1;
                result.Message = ex.Message;
            }

            return(result);
        }