/// <summary> /// 用户角色关系是否有模块权限 /// 2015-12-15 吉日嘎拉 优化参数化 /// </summary> /// <param name="systemCode">系统编号</param> /// <param name="roleId">角色主键</param> /// <param name="permissionCode">权限编号</param> /// <returns>有角色权限</returns> public bool CheckPermissionByRole(string systemCode, string roleId, string permissionCode) { // 判断当前判断的权限是否存在,否则很容易出现前台设置了权限,后台没此项权限 // 需要自动的能把前台判断过的权限,都记录到后台来 var permissionId = string.Empty; #if (DEBUG) if (string.IsNullOrEmpty(permissionId)) { var permissionEntity = new BaseModuleEntity(); permissionEntity.Code = permissionCode; permissionEntity.Name = permissionCode; permissionEntity.IsScope = 0; permissionEntity.IsPublic = 0; permissionEntity.IsMenu = 0; permissionEntity.IsVisible = 1; permissionEntity.AllowDelete = 1; permissionEntity.AllowEdit = 1; permissionEntity.Deleted = 0; permissionEntity.Enabled = 1; // 这里是防止主键重复? // permissionEntity.ID = BaseUtil.NewGuid(); var moduleManager = new BaseModuleManager(); moduleManager.AddEntity(permissionEntity); } else { // 更新最后一次访问日期,设置为当前服务器日期 var sqlBuilder = new SqlBuilder(DbHelper); sqlBuilder.BeginUpdate(CurrentTableName); sqlBuilder.SetDbNow(BaseModuleEntity.FieldLastCall); sqlBuilder.SetWhere(BaseModuleEntity.FieldId, permissionId); sqlBuilder.EndUpdate(); } #endif permissionId = new BaseModuleManager().GetIdByCodeByCache(systemCode, permissionCode); // 没有找到相应的权限 if (string.IsNullOrEmpty(permissionId)) { return(false); } var resourceCategory = systemCode + "Role"; return(CheckResourcePermission(systemCode, resourceCategory, roleId, permissionId)); }