|
|
|
|
using System.Data;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using ICSharpCode.Core;
|
|
|
|
|
using Mesnac.Action.Base;
|
|
|
|
|
using Mesnac.Basic;
|
|
|
|
|
using Mesnac.Codd.Session;
|
|
|
|
|
using Mesnac.Controls.Base;
|
|
|
|
|
|
|
|
|
|
namespace Mesnac.Action.Default.Purview
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 角色信息加载类
|
|
|
|
|
/// 创建人:郑立兵
|
|
|
|
|
/// 创建时间:2013-7-26
|
|
|
|
|
/// 说明:将角色信息绑定至组合框控件
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class BindRole : DatabaseAction, IAction
|
|
|
|
|
{
|
|
|
|
|
public void Run(RuntimeParameter runtime)
|
|
|
|
|
{
|
|
|
|
|
base.RunIni(runtime);
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<BindRole>.Debug("初始化绑定角色下拉列表");
|
|
|
|
|
DbMCControl basRoleControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRole").FirstOrDefault();
|
|
|
|
|
if (basRoleControl == null || !basRoleControl.BaseControl.GetType().IsSubclassOf(typeof(ListControl)))
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<BindRole>.Warn("角色信息加载 缺少角色组合框控件...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DbHelper dbhelper = NewDbHelper(basRoleControl.DesignSource);
|
|
|
|
|
if (dbhelper == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
dbhelper.ClearParameter();
|
|
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
|
|
dbhelper.CommandText = "SELECT * FROM BasRole WHERE DeleteFlag='0' ORDER BY SeqIndex;";
|
|
|
|
|
basRoleControl.BaseControl.BindDataSource = dbhelper.ToDataTable();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 窗体级权限信息加载类
|
|
|
|
|
/// 创建人:郑立兵
|
|
|
|
|
/// 创建时间:2013-7-26
|
|
|
|
|
/// 说明:将窗体级权限信息加载至树形控件1级节点
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class LoadFormPurview : DatabaseAction, IAction
|
|
|
|
|
{
|
|
|
|
|
public void Run(RuntimeParameter runtime)
|
|
|
|
|
{
|
|
|
|
|
base.RunIni(runtime);
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFormPurview>.Debug("向树控件初始化加载窗体级权限...");
|
|
|
|
|
DbMCControl basRolePurviewControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRolePermission").FirstOrDefault();
|
|
|
|
|
if (basRolePurviewControl == null || !basRolePurviewControl.BaseControl.GetType().IsSubclassOf(typeof(TreeView)))
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFormPurview>.Warn("窗体级权限加载 缺少权限树形控件...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DbHelper dbhelper = NewDbHelper(basRolePurviewControl.DesignSource);
|
|
|
|
|
if (dbhelper==null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
dbhelper.ClearParameter();
|
|
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
|
|
if (Mesnac.Basic.UserInfo.Instance.RoleGUID == "-99")
|
|
|
|
|
{
|
|
|
|
|
dbhelper.CommandText = "SELECT * FROM BasForm WHERE DeleteFlag='0' ORDER BY FormText;";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// dbhelper.CommandText = @"select TA.* from BasForm TA
|
|
|
|
|
// inner join BasRolePermission TB on TA.GUID = TB.PermissionItemGUID
|
|
|
|
|
// where TA.DeleteFlag='0' and TB.RoleGUID = @RoleGUID
|
|
|
|
|
// order by TA.FormText";
|
|
|
|
|
dbhelper.CommandText = @"select TA.* from BasForm TA
|
|
|
|
|
inner join BasInitPermission TB on TA.GUID = TB.PermissionItemGUID
|
|
|
|
|
where TA.DeleteFlag='0'
|
|
|
|
|
order by TA.FormText";
|
|
|
|
|
dbhelper.AddParameter("@RoleGUID", Mesnac.Basic.UserInfo.Instance.RoleGUID);
|
|
|
|
|
}
|
|
|
|
|
DataTable dt = dbhelper.ToDataTable();
|
|
|
|
|
if (dt == null)
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFormPurview>.Warn("窗体级权限加载 信息加载失败...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TreeView tv = basRolePurviewControl.BaseControl as TreeView;
|
|
|
|
|
tv.Nodes.Clear();
|
|
|
|
|
APurview frmPur;
|
|
|
|
|
TreeNode nodeL1;
|
|
|
|
|
foreach (DataRow dr in dt.Rows)
|
|
|
|
|
{
|
|
|
|
|
frmPur = new FormPurview(dr["GUID"].ToString(), dr["FormName"].ToString(), dr["FormText"].ToString(), dr["FormType"].ToString());
|
|
|
|
|
|
|
|
|
|
nodeL1 = new TreeNode(frmPur.PurviewText);
|
|
|
|
|
nodeL1.Name = frmPur.PurviewType + frmPur.GUID;
|
|
|
|
|
nodeL1.Tag = frmPur;
|
|
|
|
|
|
|
|
|
|
tv.Nodes.Add(nodeL1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 控件级权限信息加载类
|
|
|
|
|
/// 创建人:郑立兵
|
|
|
|
|
/// 创建时间:2013-7-26
|
|
|
|
|
/// 说明:将控件级权限信息加载至树形控件2级节点
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class LoadFunctionPurview : DatabaseAction, IAction
|
|
|
|
|
{
|
|
|
|
|
public void Run(RuntimeParameter runtime)
|
|
|
|
|
{
|
|
|
|
|
base.RunIni(runtime);
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Debug("向树控件初始化加载控件级权限");
|
|
|
|
|
DbMCControl basRolePurviewControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRolePermission").FirstOrDefault();
|
|
|
|
|
if (basRolePurviewControl == null || !basRolePurviewControl.BaseControl.GetType().IsSubclassOf(typeof(TreeView)))
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("控件级权限加载 缺少权限树形控件...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DbHelper dbhelper = NewDbHelper(basRolePurviewControl.DesignSource);
|
|
|
|
|
if (dbhelper == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
dbhelper.ClearParameter();
|
|
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
|
|
if (Mesnac.Basic.UserInfo.Instance.RoleGUID == "-99")
|
|
|
|
|
{
|
|
|
|
|
dbhelper.CommandText = "SELECT * FROM BasFormFunction WHERE DeleteFlag='0' ORDER BY FunctionText";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// dbhelper.CommandText = @"select TA.* from BasFormFunction TA
|
|
|
|
|
// inner join BasRolePermission TB on TA.GUID = TB.PermissionItemGUID
|
|
|
|
|
// where TA.DeleteFlag='0' and TB.RoleGUID = @RoleGUID
|
|
|
|
|
// order by TA.FunctionText";
|
|
|
|
|
dbhelper.CommandText = @"select TA.* from BasFormFunction TA
|
|
|
|
|
inner join BasInitPermission TB on TA.GUID = TB.PermissionItemGUID
|
|
|
|
|
where TA.DeleteFlag='0'
|
|
|
|
|
order by TA.FunctionText";
|
|
|
|
|
dbhelper.AddParameter("@RoleGUID", Mesnac.Basic.UserInfo.Instance.RoleGUID);
|
|
|
|
|
}
|
|
|
|
|
DataTable dt = dbhelper.ToDataTable();
|
|
|
|
|
if (dt == null)
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("控件级权限加载 信息加载失败...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TreeView tv = basRolePurviewControl.BaseControl as TreeView;
|
|
|
|
|
APurview formPur, funcPur;
|
|
|
|
|
TreeNode nodeL2;
|
|
|
|
|
foreach (TreeNode nodeL1 in tv.Nodes)
|
|
|
|
|
{
|
|
|
|
|
nodeL1.Nodes.Clear();
|
|
|
|
|
formPur = nodeL1.Tag as FormPurview;
|
|
|
|
|
foreach (DataRow dr in dt.Select("FormGUID='" + formPur.GUID + "'"))
|
|
|
|
|
{
|
|
|
|
|
funcPur = new FunctionPurview(dr["GUID"].ToString(), dr["FunctionName"].ToString(), dr["FunctionText"].ToString(), dr["FunctionType"].ToString());
|
|
|
|
|
|
|
|
|
|
nodeL2 = new TreeNode(funcPur.PurviewText);
|
|
|
|
|
nodeL2.Tag = funcPur;
|
|
|
|
|
nodeL2.Name = funcPur.PurviewType + funcPur.GUID;
|
|
|
|
|
nodeL1.Nodes.Add(nodeL2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 初始化勾选角色的权限信息
|
|
|
|
|
/// 创建人:郑立兵
|
|
|
|
|
/// 创建时间:2013-7-29
|
|
|
|
|
/// 说明:根据角色的权限信息勾选权限树形控件
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class InitPurview : DatabaseAction, IAction
|
|
|
|
|
{
|
|
|
|
|
public void Run(RuntimeParameter runtime)
|
|
|
|
|
{
|
|
|
|
|
base.RunIni(runtime);
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Debug("在树控件中初始化勾选已有权限");
|
|
|
|
|
if (UserInfo.Instance.RoleGUID.Equals("-1") && UserInfo.MustLogin)
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("权限树初始化勾选 用户未登录");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (UserInfo.Instance.RoleGUID.Equals("-99"))
|
|
|
|
|
{
|
|
|
|
|
Control btnLoadPermission = this.GetControlById("btnLoadPermission");
|
|
|
|
|
Control btnSaveInitPermission = this.GetControlById("btnSaveInitPermission");
|
|
|
|
|
if (btnLoadPermission != null)
|
|
|
|
|
{
|
|
|
|
|
btnLoadPermission.Enabled = true;
|
|
|
|
|
btnLoadPermission.Visible = true;
|
|
|
|
|
}
|
|
|
|
|
if (btnSaveInitPermission != null)
|
|
|
|
|
{
|
|
|
|
|
btnSaveInitPermission.Enabled = true;
|
|
|
|
|
btnSaveInitPermission.Visible = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DbMCControl basRoleControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRole").FirstOrDefault();
|
|
|
|
|
DbMCControl basRolePurviewControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRolePermission").FirstOrDefault();
|
|
|
|
|
if (basRoleControl == null || !basRoleControl.BaseControl.GetType().IsSubclassOf(typeof(ListControl)))
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("权限树初始化勾选 缺少角色组合框控件...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (basRolePurviewControl == null || !basRolePurviewControl.BaseControl.GetType().IsSubclassOf(typeof(TreeView)))
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("权限树初始化勾选 缺少权限树形控件...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ListControl listCtrl = basRoleControl.BaseControl as ListControl;
|
|
|
|
|
TreeView tv = basRolePurviewControl.BaseControl as TreeView;
|
|
|
|
|
string roleGUID = listCtrl.SelectedValue == null ? string.Empty : listCtrl.SelectedValue.ToString();
|
|
|
|
|
|
|
|
|
|
DbHelper dbhelper = NewDbHelper(basRolePurviewControl.DesignSource);
|
|
|
|
|
if (dbhelper == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
dbhelper.ClearParameter();
|
|
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
|
|
dbhelper.CommandText = string.Format("SELECT * FROM BasRolePermission WHERE RoleGUID='{0}';", roleGUID);
|
|
|
|
|
DataTable dt = dbhelper.ToDataTable();
|
|
|
|
|
if (dt == null)
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("权限树初始化勾选 角色的权限信息加载失败...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ClearTreeNodes(tv.Nodes);
|
|
|
|
|
foreach (DataRow dr in dt.Rows)
|
|
|
|
|
{
|
|
|
|
|
CheckTreeNode(tv.Nodes, dr["PermissionType"].ToString() + dr["PermissionItemGUID"].ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ClearTreeNodes(TreeNodeCollection tnc)
|
|
|
|
|
{
|
|
|
|
|
foreach (TreeNode n in tnc)
|
|
|
|
|
{
|
|
|
|
|
n.Checked = false;
|
|
|
|
|
if (n.Nodes != null)
|
|
|
|
|
{
|
|
|
|
|
ClearTreeNodes(n.Nodes);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//private void CheckTreeNode(TreeNodeCollection tnc, string NodeName)
|
|
|
|
|
//{
|
|
|
|
|
// foreach (TreeNode n in tnc)
|
|
|
|
|
// {
|
|
|
|
|
// if (n.Name == NodeName)
|
|
|
|
|
// n.Checked = true;
|
|
|
|
|
|
|
|
|
|
// if (n.Nodes != null)
|
|
|
|
|
// {
|
|
|
|
|
// CheckTreeNode(n.Nodes, NodeName);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
private void CheckTreeNode(TreeNodeCollection tnc, string NodeName)
|
|
|
|
|
{
|
|
|
|
|
foreach (TreeNode n in tnc)
|
|
|
|
|
{
|
|
|
|
|
if (n.Nodes != null && n.Nodes.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (TreeNode childNode in n.Nodes)
|
|
|
|
|
{
|
|
|
|
|
if (childNode.Name == NodeName && childNode.Checked == false)
|
|
|
|
|
{
|
|
|
|
|
childNode.Checked = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (n.Name == NodeName && n.Checked == false)
|
|
|
|
|
{
|
|
|
|
|
n.Checked = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 保存初始化权限
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class SaveInitPurview : DatabaseAction, IAction
|
|
|
|
|
{
|
|
|
|
|
public void Run(RuntimeParameter runtime)
|
|
|
|
|
{
|
|
|
|
|
base.RunIni(runtime);
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Debug("保存初始化权限");
|
|
|
|
|
//if (UserInfo.Instance.RoleGUID.Equals("-1") && UserInfo.MustLogin)
|
|
|
|
|
//{
|
|
|
|
|
// ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("保存初始化权限 用户未登录");
|
|
|
|
|
// return;
|
|
|
|
|
//}
|
|
|
|
|
if (!UserInfo.Instance.RoleGUID.Equals("-99"))
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("保存初始化权限 不是开发者账号!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DbMCControl basRoleControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRole").FirstOrDefault();
|
|
|
|
|
DbMCControl basRolePurviewControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRolePermission").FirstOrDefault();
|
|
|
|
|
if (basRoleControl == null || !basRoleControl.BaseControl.GetType().IsSubclassOf(typeof(ListControl)))
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("保存角色权限 缺少角色组合框控件...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (basRolePurviewControl == null || !basRolePurviewControl.BaseControl.GetType().IsSubclassOf(typeof(TreeView)))
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("保存角色权限 缺少权限树形控件...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ListControl listCtrl = basRoleControl.BaseControl as ListControl;
|
|
|
|
|
TreeView tv = basRolePurviewControl.BaseControl as TreeView;
|
|
|
|
|
string roleId = listCtrl.SelectedValue == null ? string.Empty : listCtrl.SelectedValue.ToString();
|
|
|
|
|
|
|
|
|
|
DbHelper dbhelper = NewDbHelper(basRolePurviewControl.DesignSource);
|
|
|
|
|
if (dbhelper == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ClearInitPermission(dbhelper);
|
|
|
|
|
SaveInitPermission(dbhelper, tv.Nodes);
|
|
|
|
|
string msg1 = StringParser.Parse(ResourceService.GetString("Mesnac_Action_Default_Purview_SavePurview_msg1")); //信息保存完毕!
|
|
|
|
|
ShowMsg(msg1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 初始权限
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 清空初始权限
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dbHelper"></param>
|
|
|
|
|
private void ClearInitPermission(DbHelper dbHelper)
|
|
|
|
|
{
|
|
|
|
|
string sqlstr = "truncate table BasInitPermission";
|
|
|
|
|
dbHelper.CommandText = sqlstr;
|
|
|
|
|
dbHelper.ClearParameter();
|
|
|
|
|
dbHelper.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 保存初始权限(超级用户调用)
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dbHelper"></param>
|
|
|
|
|
/// <param name="tnc"></param>
|
|
|
|
|
private void SaveInitPermission(DbHelper dbHelper, TreeNodeCollection tnc)
|
|
|
|
|
{
|
|
|
|
|
foreach (TreeNode n in tnc)
|
|
|
|
|
{
|
|
|
|
|
if (n.Checked)
|
|
|
|
|
{
|
|
|
|
|
string sqlstr = "insert into BasInitPermission(GUID,PermissionItemGUID,PermissionType) values(@GUID,@PermissionItemGUID,@PermissionType)";
|
|
|
|
|
dbHelper.CommandText = sqlstr;
|
|
|
|
|
dbHelper.ClearParameter();
|
|
|
|
|
APurview aPurview = n.Tag as APurview;
|
|
|
|
|
dbHelper.AddParameter("@GUID", System.Guid.NewGuid().ToString().ToUpper());
|
|
|
|
|
dbHelper.AddParameter("@PermissionItemGUID", aPurview.GUID);
|
|
|
|
|
dbHelper.AddParameter("@PermissionType", aPurview.PurviewType);
|
|
|
|
|
dbHelper.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
if (n.Nodes != null)
|
|
|
|
|
{
|
|
|
|
|
SaveInitPermission(dbHelper, n.Nodes);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 保存角色的权限信息
|
|
|
|
|
/// 创建人:郑立兵
|
|
|
|
|
/// 创建时间:2013-7-29
|
|
|
|
|
/// 说明:根据角色的权限信息勾选权限树形控件
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class SavePurview : DatabaseAction, IAction
|
|
|
|
|
{
|
|
|
|
|
public void Run(RuntimeParameter runtime)
|
|
|
|
|
{
|
|
|
|
|
base.RunIni(runtime);
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Debug("执行给某角色分配保存权限");
|
|
|
|
|
if (UserInfo.Instance.RoleGUID.Equals("-1") && UserInfo.MustLogin)
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("保存角色权限 用户未登录");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DbMCControl basRoleControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRole").FirstOrDefault();
|
|
|
|
|
DbMCControl basRolePurviewControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRolePermission").FirstOrDefault();
|
|
|
|
|
if (basRoleControl == null || !basRoleControl.BaseControl.GetType().IsSubclassOf(typeof(ListControl)))
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("保存角色权限 缺少角色组合框控件...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (basRolePurviewControl == null || !basRolePurviewControl.BaseControl.GetType().IsSubclassOf(typeof(TreeView)))
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<LoadFunctionPurview>.Warn("保存角色权限 缺少权限树形控件...");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ListControl listCtrl = basRoleControl.BaseControl as ListControl;
|
|
|
|
|
TreeView tv = basRolePurviewControl.BaseControl as TreeView;
|
|
|
|
|
string roleId = listCtrl.SelectedValue == null ? string.Empty : listCtrl.SelectedValue.ToString();
|
|
|
|
|
|
|
|
|
|
DbHelper dbhelper = NewDbHelper(basRolePurviewControl.DesignSource);
|
|
|
|
|
if (dbhelper == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
save(dbhelper, tv.Nodes, roleId);
|
|
|
|
|
string msg1 = StringParser.Parse(ResourceService.GetString("Mesnac_Action_Default_Purview_SavePurview_msg1")); //信息保存完毕!
|
|
|
|
|
ShowMsg(msg1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void save(DbHelper dbhelper, TreeNodeCollection tnc, string roleGUID)
|
|
|
|
|
{
|
|
|
|
|
foreach (TreeNode n in tnc)
|
|
|
|
|
{
|
|
|
|
|
if (n.Checked)
|
|
|
|
|
{
|
|
|
|
|
insert(dbhelper, n.Tag as APurview, roleGUID);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
delete(dbhelper, n.Tag as APurview, roleGUID);
|
|
|
|
|
}
|
|
|
|
|
if (n.Nodes != null)
|
|
|
|
|
{
|
|
|
|
|
save(dbhelper, n.Nodes, roleGUID);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void insert(DbHelper dbhelper, APurview aPurview, string roleGUID)
|
|
|
|
|
{
|
|
|
|
|
if (aPurview == null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
sb.AppendLine("IF NOT EXISTS(SELECT * FROM BasRolePermission WHERE RoleGUID=@RoleGUID AND PermissionItemGUID=@PermissionItemGUID AND PermissionType=@PermissionType)");
|
|
|
|
|
sb.AppendLine("INSERT INTO BasRolePermission(GUID,RoleGUID,PermissionItemGUID,PermissionType)");
|
|
|
|
|
sb.AppendLine("VALUES(NEWID(),@RoleGUID,@PermissionItemGUID,@PermissionType)");
|
|
|
|
|
|
|
|
|
|
dbhelper.ClearParameter();
|
|
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
|
|
dbhelper.CommandText = sb.ToString();
|
|
|
|
|
dbhelper.AddParameter("@RoleGUID", roleGUID);
|
|
|
|
|
dbhelper.AddParameter("@PermissionItemGUID", aPurview.GUID);
|
|
|
|
|
dbhelper.AddParameter("@PermissionType", aPurview.PurviewType);
|
|
|
|
|
|
|
|
|
|
dbhelper.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void delete(DbHelper dbhelper, APurview aPurview, string roleGUID)
|
|
|
|
|
{
|
|
|
|
|
if (aPurview == null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
dbhelper.ClearParameter();
|
|
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
|
|
dbhelper.CommandText = "DELETE FROM BasRolePermission WHERE RoleGUID=@RoleGUID AND PermissionItemGUID=@PermissionItemGUID AND PermissionType=@PermissionType";
|
|
|
|
|
dbhelper.AddParameter("@RoleGUID", roleGUID);
|
|
|
|
|
dbhelper.AddParameter("@PermissionItemGUID", aPurview.GUID);
|
|
|
|
|
dbhelper.AddParameter("@PermissionType", aPurview.PurviewType);
|
|
|
|
|
|
|
|
|
|
dbhelper.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|