コード例 #1
0
        /// <summary>
        /// 添加角色
        /// </summary>
        public APIResponseEntity <bool> Add(APIRequestEntity <XCLCMS.Data.WebAPIEntity.RequestEntity.SysRole.AddOrUpdateEntity> request)
        {
            var response           = new APIResponseEntity <bool>();
            var allLeafFunctionIds = this.vSysFunctionBLL.GetModelList("").Where(k => k.IsLeaf == 1).Select(k => (long)k.SysFunctionID).ToList();

            #region 数据校验

            if (null == request.Body.SysRole)
            {
                response.IsSuccess = false;
                response.Message   = "请指定角色信息!";
                return(response);
            }
            request.Body.SysRole.RoleName = (request.Body.SysRole.RoleName ?? "").Trim();
            request.Body.SysRole.Code     = (request.Body.SysRole.Code ?? "").Trim();
            if (null == request.Body.FunctionIdList)
            {
                request.Body.FunctionIdList = new List <long>();
            }

            //商户必须存在
            var merchant = this.merchantBLL.GetModel(request.Body.SysRole.FK_MerchantID);
            if (null == merchant)
            {
                response.IsSuccess = false;
                response.Message   = "无效的商户号!";
                return(response);
            }

            //追加默认的功能权限
            if (string.Equals(request.Body.SysRole.Code, XCLCMS.Data.CommonHelper.SysRoleConst.SysRoleCodeEnum.MerchantMainRole.ToString(), StringComparison.OrdinalIgnoreCase) || merchant.MerchantSystemType == XCLCMS.Data.CommonHelper.EnumType.MerchantSystemTypeEnum.NOR.ToString())
            {
                request.Body.FunctionIdList.AddRange(XCLCMS.Data.CommonHelper.Function.NormalMerchantFixedFunctionIDList);
            }
            request.Body.FunctionIdList = request.Body.FunctionIdList.Intersect(allLeafFunctionIds).Distinct().ToList();

            //必须指定角色信息
            if (string.IsNullOrEmpty(request.Body.SysRole.RoleName))
            {
                response.IsSuccess = false;
                response.Message   = "请指定角色名!";
                return(response);
            }

            //角色code是否存在
            if (!string.IsNullOrEmpty(request.Body.SysRole.Code))
            {
                if (this.sysRoleBLL.IsExistCode(request.Body.SysRole.Code))
                {
                    response.IsSuccess = false;
                    response.Message   = string.Format("角色标识【{0}】已存在!", request.Body.SysRole.Code);
                    return(response);
                }
            }

            //父角色是否存在
            var parentNodeModel = this.vSysRoleBLL.GetModel(request.Body.SysRole.ParentID);
            if (null == parentNodeModel)
            {
                response.IsSuccess = false;
                response.Message   = "父角色不存在!";
                return(response);
            }

            //父节点必须为第2层级
            if (parentNodeModel.NodeLevel != 2)
            {
                response.IsSuccess = false;
                response.Message   = "父节点必须为第2层级节点!";
                return(response);
            }
            //子角色与父角色必须在同一商户中
            if (!this.vSysRoleBLL.IsRoot(parentNodeModel.SysRoleID.Value))
            {
                if (parentNodeModel.FK_MerchantID != request.Body.SysRole.FK_MerchantID)
                {
                    response.IsSuccess = false;
                    response.Message   = "您添加的角色必须与父角色在同一个商户中!";
                    return(response);
                }
            }

            //普通商户的权限是否已越界
            if (merchant.MerchantSystemType == XCLCMS.Data.CommonHelper.EnumType.MerchantSystemTypeEnum.NOR.ToString())
            {
                var normalFunIds = this.sysFunctionWebAPIBLL.GetNormalMerchantFunctionIDList(new APIRequestEntity <object>()).Body;
                if (request.Body.FunctionIdList.IsNotNullOrEmpty())
                {
                    if (request.Body.FunctionIdList.Exists(k => !normalFunIds.Contains(k)))
                    {
                        response.IsSuccess = false;
                        response.Message   = "该角色的权限已越界!";
                        return(response);
                    }
                }
            }

            #endregion 数据校验

            XCLCMS.Data.BLL.Strategy.SysRole.SysRoleContext sysRoleContext = new Data.BLL.Strategy.SysRole.SysRoleContext();
            sysRoleContext.ContextInfo    = this.ContextInfo;
            sysRoleContext.SysRole        = request.Body.SysRole;
            sysRoleContext.FunctionIdList = request.Body.FunctionIdList;
            sysRoleContext.HandleType     = Data.BLL.Strategy.StrategyLib.HandleType.ADD;

            XCLCMS.Data.BLL.Strategy.ExecuteStrategy strategy = new Data.BLL.Strategy.ExecuteStrategy(new List <Data.BLL.Strategy.BaseStrategy>()
            {
                new XCLCMS.Data.BLL.Strategy.SysRole.SysRole(),
                new XCLCMS.Data.BLL.Strategy.SysRole.SysRoleFunction()
            });
            strategy.Execute <XCLCMS.Data.BLL.Strategy.SysRole.SysRoleContext>(sysRoleContext);

            if (strategy.Result != Data.BLL.Strategy.StrategyLib.ResultEnum.FAIL)
            {
                response.Message   = "添加成功!";
                response.IsSuccess = true;
            }
            else
            {
                response.Message   = strategy.ResultMessage;
                response.IsSuccess = false;
            }

            return(response);
        }
コード例 #2
0
        /// <summary>
        /// 修改角色
        /// </summary>
        public APIResponseEntity <bool> Update(APIRequestEntity <XCLCMS.Data.WebAPIEntity.RequestEntity.SysRole.AddOrUpdateEntity> request)
        {
            var response           = new APIResponseEntity <bool>();
            var allLeafFunctionIds = this.vSysFunctionBLL.GetModelList("").Where(k => k.IsLeaf == 1).Select(k => (long)k.SysFunctionID).ToList();

            #region 数据校验

            if (null == request.Body.SysRole)
            {
                response.IsSuccess = false;
                response.Message   = "请指定角色信息!";
                return(response);
            }

            var model = this.sysRoleBLL.GetModel(request.Body.SysRole.SysRoleID);
            if (null == model)
            {
                response.IsSuccess = false;
                response.Message   = "请指定有效的角色信息!";
                return(response);
            }

            request.Body.SysRole.RoleName = (request.Body.SysRole.RoleName ?? "").Trim();
            request.Body.SysRole.Code     = (request.Body.SysRole.Code ?? "").Trim();
            if (null == request.Body.FunctionIdList)
            {
                request.Body.FunctionIdList = new List <long>();
            }

            //商户必须存在
            var merchant = this.merchantBLL.GetModel(request.Body.SysRole.FK_MerchantID);
            if (null == merchant)
            {
                response.IsSuccess = false;
                response.Message   = "无效的商户号!";
                return(response);
            }

            //只能修改商户主角色节点下面的角色信息(层级为3的节点)
            var vSysRoleModel = this.vSysRoleBLL.GetModel(request.Body.SysRole.SysRoleID);
            if (vSysRoleModel.NodeLevel != 3)
            {
                response.IsSuccess = false;
                response.Message   = "只能修改商户主角色节点下面的角色信息(层级为3的节点)!";
                return(response);
            }

            //追加默认的功能权限
            if (string.Equals(request.Body.SysRole.Code, XCLCMS.Data.CommonHelper.SysRoleConst.SysRoleCodeEnum.MerchantMainRole.ToString(), StringComparison.OrdinalIgnoreCase) || merchant.MerchantSystemType == XCLCMS.Data.CommonHelper.EnumType.MerchantSystemTypeEnum.NOR.ToString())
            {
                request.Body.FunctionIdList.AddRange(XCLCMS.Data.CommonHelper.Function.NormalMerchantFixedFunctionIDList);
            }
            request.Body.FunctionIdList = request.Body.FunctionIdList.Intersect(allLeafFunctionIds).ToList();

            //必须指定角色信息
            if (string.IsNullOrEmpty(request.Body.SysRole.RoleName))
            {
                response.IsSuccess = false;
                response.Message   = "请指定角色名!";
                return(response);
            }

            //角色code是否存在
            if (!string.IsNullOrEmpty(request.Body.SysRole.Code))
            {
                if (!string.Equals(model.Code, request.Body.SysRole.Code, StringComparison.OrdinalIgnoreCase) && this.sysRoleBLL.IsExistCode(request.Body.SysRole.Code))
                {
                    response.IsSuccess = false;
                    response.Message   = string.Format("角色标识【{0}】已存在!", request.Body.SysRole.Code);
                    return(response);
                }
            }

            //普通商户的权限是否已越界
            if (merchant.MerchantSystemType == XCLCMS.Data.CommonHelper.EnumType.MerchantSystemTypeEnum.NOR.ToString())
            {
                var normalFunIds = this.sysFunctionWebAPIBLL.GetNormalMerchantFunctionIDList(new APIRequestEntity <object>()).Body;
                if (request.Body.FunctionIdList.IsNotNullOrEmpty())
                {
                    if (request.Body.FunctionIdList.Exists(k => !normalFunIds.Contains(k)))
                    {
                        response.IsSuccess = false;
                        response.Message   = "该角色的权限已越界!";
                        return(response);
                    }
                }
            }

            #endregion 数据校验

            model.Code     = request.Body.SysRole.Code;
            model.Remark   = request.Body.SysRole.Remark;
            model.RoleName = request.Body.SysRole.RoleName;
            model.Sort     = request.Body.SysRole.Sort;
            model.Weight   = request.Body.SysRole.Weight;

            XCLCMS.Data.BLL.Strategy.SysRole.SysRoleContext sysRoleContext = new Data.BLL.Strategy.SysRole.SysRoleContext();
            sysRoleContext.ContextInfo    = this.ContextInfo;
            sysRoleContext.SysRole        = model;
            sysRoleContext.FunctionIdList = request.Body.FunctionIdList;
            sysRoleContext.HandleType     = Data.BLL.Strategy.StrategyLib.HandleType.UPDATE;

            XCLCMS.Data.BLL.Strategy.ExecuteStrategy strategy = new Data.BLL.Strategy.ExecuteStrategy(new List <Data.BLL.Strategy.BaseStrategy>()
            {
                new XCLCMS.Data.BLL.Strategy.SysRole.SysRole(),
                new XCLCMS.Data.BLL.Strategy.SysRole.SysRoleFunction()
            });
            strategy.Execute <XCLCMS.Data.BLL.Strategy.SysRole.SysRoleContext>(sysRoleContext);

            if (strategy.Result != Data.BLL.Strategy.StrategyLib.ResultEnum.FAIL)
            {
                response.Message   = "修改成功!";
                response.IsSuccess = true;
            }
            else
            {
                response.Message   = strategy.ResultMessage;
                response.IsSuccess = false;
            }

            return(response);
        }
コード例 #3
0
        public APIResponseEntity <bool> Update(JObject obj)
        {
            var request            = obj.ToObject <APIRequestEntity <XCLCMS.Data.WebAPIEntity.RequestEntity.SysRole.AddOrUpdateEntity> >();
            var response           = new APIResponseEntity <bool>();
            var allLeafFunctionIds = XCLCMS.Lib.Permission.PerHelper.GetFunctionList().Where(k => k.IsLeaf == 1).Select(k => (long)k.SysFunctionID).ToList();

            #region 数据校验

            if (null == request.Body.SysRole)
            {
                response.IsSuccess = false;
                response.Message   = "请指定角色信息!";
                return(response);
            }

            var model = this.sysRoleBLL.GetModel(request.Body.SysRole.SysRoleID);
            if (null == model)
            {
                response.IsSuccess = false;
                response.Message   = "请指定有效的角色信息!";
                return(response);
            }

            request.Body.SysRole.RoleName = (request.Body.SysRole.RoleName ?? "").Trim();
            request.Body.SysRole.Code     = (request.Body.SysRole.Code ?? "").Trim();
            if (null == request.Body.FunctionIdList)
            {
                request.Body.FunctionIdList = new List <long>();
            }

            //商户必须存在
            var merchant = this.merchantBLL.GetModel(request.Body.SysRole.FK_MerchantID);
            if (null == merchant)
            {
                response.IsSuccess = false;
                response.Message   = "无效的商户号!";
                return(response);
            }

            //追加默认的功能权限
            if (string.Equals(request.Body.SysRole.Code, XCLCMS.Data.CommonHelper.SysRoleConst.SysRoleCodeEnum.MerchantMainRole.ToString(), StringComparison.OrdinalIgnoreCase) || merchant.MerchantSystemType == XCLCMS.Data.CommonHelper.EnumType.MerchantSystemTypeEnum.NOR.ToString())
            {
                request.Body.FunctionIdList.AddRange(XCLCMS.Lib.Permission.PerHelper.NormalMerchantFixedFunctionIDList);
            }
            request.Body.FunctionIdList = request.Body.FunctionIdList.Intersect(allLeafFunctionIds).ToList();

            //必须指定角色信息
            if (string.IsNullOrEmpty(request.Body.SysRole.RoleName))
            {
                response.IsSuccess = false;
                response.Message   = "请指定角色名!";
                return(response);
            }

            //角色code是否存在
            if (!string.IsNullOrEmpty(request.Body.SysRole.Code))
            {
                if (!string.Equals(model.Code, request.Body.SysRole.Code, StringComparison.OrdinalIgnoreCase) && this.sysRoleBLL.IsExistCode(request.Body.SysRole.Code))
                {
                    response.IsSuccess = false;
                    response.Message   = string.Format("角色标识【{0}】已存在!", request.Body.SysRole.Code);
                    return(response);
                }
            }

            //限制商户
            if (base.IsOnlyCurrentMerchant && request.Body.SysRole.FK_MerchantID != base.CurrentUserModel.FK_MerchantID)
            {
                response.IsSuccess = false;
                response.Message   = "只能在自己所属的商户下面修改角色信息!";
                return(response);
            }

            //普通商户的权限是否已越界
            if (merchant.MerchantSystemType == XCLCMS.Data.CommonHelper.EnumType.MerchantSystemTypeEnum.NOR.ToString())
            {
                var normalFunIds = XCLCMS.Lib.Permission.PerHelper.GetNormalMerchantFunctionIDList();
                if (request.Body.FunctionIdList.IsNotNullOrEmpty())
                {
                    if (request.Body.FunctionIdList.Exists(k => !normalFunIds.Contains(k)))
                    {
                        response.IsSuccess = false;
                        response.Message   = "该角色的权限已越界!";
                        return(response);
                    }
                }
            }

            #endregion 数据校验

            model.Code        = request.Body.SysRole.Code;
            model.Remark      = request.Body.SysRole.Remark;
            model.RoleName    = request.Body.SysRole.RoleName;
            model.Sort        = request.Body.SysRole.Sort;
            model.UpdaterID   = base.CurrentUserModel.UserInfoID;
            model.UpdaterName = base.CurrentUserModel.UserName;
            model.UpdateTime  = DateTime.Now;
            model.Weight      = request.Body.SysRole.Weight;

            XCLCMS.Data.BLL.Strategy.SysRole.SysRoleContext sysRoleContext = new Data.BLL.Strategy.SysRole.SysRoleContext();
            sysRoleContext.CurrentUserInfo = base.CurrentUserModel;
            sysRoleContext.SysRole         = model;
            sysRoleContext.FunctionIdList  = request.Body.FunctionIdList;
            sysRoleContext.HandleType      = Data.BLL.Strategy.StrategyLib.HandleType.UPDATE;

            XCLCMS.Data.BLL.Strategy.ExecuteStrategy strategy = new Data.BLL.Strategy.ExecuteStrategy(new List <Data.BLL.Strategy.BaseStrategy>()
            {
                new XCLCMS.Data.BLL.Strategy.SysRole.SysRole(),
                new XCLCMS.Data.BLL.Strategy.SysRole.SysRoleFunction()
            });
            strategy.Execute <XCLCMS.Data.BLL.Strategy.SysRole.SysRoleContext>(sysRoleContext);

            if (strategy.Result != Data.BLL.Strategy.StrategyLib.ResultEnum.FAIL)
            {
                response.Message   = "修改成功!";
                response.IsSuccess = true;
            }
            else
            {
                response.Message   = strategy.ResultMessage;
                response.IsSuccess = false;
                XCLNetLogger.Log.WriteLog(XCLNetLogger.Config.LogConfig.LogLevel.ERROR, "修改角色信息失败", strategy.ResultMessage);
            }

            return(response);
        }