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