|
|
using System.Data;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Windows.Forms;
|
|
|
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);
|
|
|
|
|
|
base.LogDebug("初始化绑定角色下拉列表");
|
|
|
DbMCControl basRoleControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRole").FirstOrDefault();
|
|
|
if (basRoleControl == null || !basRoleControl.BaseControl.GetType().IsSubclassOf(typeof(ListControl)))
|
|
|
{
|
|
|
base.LogError("角色信息加载 缺少角色组合框控件...");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
DbHelper dbhelper = NewDbHelper(basRoleControl.DesignSource);
|
|
|
if (dbhelper == null)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
dbhelper.ClearParameter();
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
dbhelper.CommandText = "SELECT * FROM BasRole WHERE DeleteFlag='0';";
|
|
|
basRoleControl.BaseControl.BindDataSource = dbhelper.ToDataTable();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 窗体级权限信息加载类
|
|
|
/// 创建人:李毓明
|
|
|
/// 创建时间:2013-7-26
|
|
|
/// 说明:将窗体级权限信息加载至树形控件1级节点
|
|
|
/// </summary>
|
|
|
public class LoadFormPurview : DatabaseAction, IAction
|
|
|
{
|
|
|
public void Run(RuntimeParameter runtime)
|
|
|
{
|
|
|
base.RunIni(runtime);
|
|
|
|
|
|
base.LogDebug("向树控件初始化加载窗体级权限...");
|
|
|
DbMCControl basRolePurviewControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRolePurview").FirstOrDefault();
|
|
|
if (basRolePurviewControl == null || !basRolePurviewControl.BaseControl.GetType().IsSubclassOf(typeof(TreeView)))
|
|
|
{
|
|
|
base.LogError("窗体级权限加载 缺少权限树形控件...");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
DbHelper dbhelper = NewDbHelper(basRolePurviewControl.DesignSource);
|
|
|
if (dbhelper==null)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
dbhelper.ClearParameter();
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
dbhelper.CommandText = "SELECT * FROM BasForm WHERE DeleteFlag='0' ORDER BY FormText;";
|
|
|
DataTable dt = dbhelper.ToDataTable();
|
|
|
if (dt == null)
|
|
|
{
|
|
|
base.LogError("窗体级权限加载 信息加载失败...");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
TreeView tv = basRolePurviewControl.BaseControl as TreeView;
|
|
|
tv.Nodes.Clear();
|
|
|
APurview frmPur;
|
|
|
TreeNode nodeL1;
|
|
|
foreach (DataRow dr in dt.Rows)
|
|
|
{
|
|
|
frmPur = new FormPurview(dr["ObjID"].ToString(), dr["FormName"].ToString(), dr["FormText"].ToString(), dr["FormType"].ToString());
|
|
|
|
|
|
nodeL1 = new TreeNode(frmPur.PurviewText);
|
|
|
nodeL1.Name = frmPur.PurviewType + frmPur.ObjID;
|
|
|
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);
|
|
|
|
|
|
base.LogDebug("向树控件初始化加载控件级权限");
|
|
|
DbMCControl basRolePurviewControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRolePurview").FirstOrDefault();
|
|
|
if (basRolePurviewControl == null || !basRolePurviewControl.BaseControl.GetType().IsSubclassOf(typeof(TreeView)))
|
|
|
{
|
|
|
base.LogError("控件级权限加载 缺少权限树形控件...");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
DbHelper dbhelper = NewDbHelper(basRolePurviewControl.DesignSource);
|
|
|
if (dbhelper == null)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
dbhelper.ClearParameter();
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
dbhelper.CommandText = "SELECT * FROM BasFormFunction WHERE DeleteFlag='0' ORDER BY FunctionText;";
|
|
|
DataTable dt = dbhelper.ToDataTable();
|
|
|
if (dt == null)
|
|
|
{
|
|
|
base.LogError("控件级权限加载 信息加载失败...");
|
|
|
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("FormID='" + formPur.ObjID + "'"))
|
|
|
{
|
|
|
funcPur = new FunctionPurview(dr["ObjID"].ToString(), dr["FunctionName"].ToString(), dr["FunctionText"].ToString(), dr["FunctionType"].ToString());
|
|
|
|
|
|
nodeL2 = new TreeNode(funcPur.PurviewText);
|
|
|
nodeL2.Tag = funcPur;
|
|
|
nodeL2.Name = funcPur.PurviewType + funcPur.ObjID;
|
|
|
nodeL1.Nodes.Add(nodeL2);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 初始化勾选角色的权限信息
|
|
|
/// 创建人:李毓明
|
|
|
/// 创建时间:2013-7-29
|
|
|
/// 说明:根据角色的权限信息勾选权限树形控件
|
|
|
/// </summary>
|
|
|
public class InitPurview : DatabaseAction, IAction
|
|
|
{
|
|
|
public void Run(RuntimeParameter runtime)
|
|
|
{
|
|
|
base.RunIni(runtime);
|
|
|
|
|
|
base.LogDebug("在树控件中初始化勾选已有权限");
|
|
|
if (UserInfo.Instance.RoleID.Equals("-1") && UserInfo.MustLogin)
|
|
|
{
|
|
|
base.LogDebug("权限树初始化勾选 用户未登录");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
DbMCControl basRoleControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRole").FirstOrDefault();
|
|
|
DbMCControl basRolePurviewControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRolePurview").FirstOrDefault();
|
|
|
if (basRoleControl == null || !basRoleControl.BaseControl.GetType().IsSubclassOf(typeof(ListControl)))
|
|
|
{
|
|
|
base.LogError("权限树初始化勾选 缺少角色组合框控件...");
|
|
|
return;
|
|
|
}
|
|
|
if (basRolePurviewControl == null || !basRolePurviewControl.BaseControl.GetType().IsSubclassOf(typeof(TreeView)))
|
|
|
{
|
|
|
base.LogError("权限树初始化勾选 缺少权限树形控件...");
|
|
|
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;
|
|
|
}
|
|
|
dbhelper.ClearParameter();
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
dbhelper.CommandText = string.Format("SELECT * FROM BasRolePurview WHERE RoleID='{0}';", roleId);
|
|
|
DataTable dt = dbhelper.ToDataTable();
|
|
|
if (dt == null)
|
|
|
{
|
|
|
base.LogError("权限树初始化勾选 角色的权限信息加载失败...");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
ClearTreeNodes(tv.Nodes);
|
|
|
foreach (DataRow dr in dt.Rows)
|
|
|
{
|
|
|
CheckTreeNode(tv.Nodes, dr["PurviewType"].ToString() + dr["PurviewID"].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>
|
|
|
/// 保存角色的权限信息
|
|
|
/// 创建人:李毓明
|
|
|
/// 创建时间:2013-7-29
|
|
|
/// 说明:根据角色的权限信息勾选权限树形控件
|
|
|
/// </summary>
|
|
|
public class SavePurview : DatabaseAction, IAction
|
|
|
{
|
|
|
public void Run(RuntimeParameter runtime)
|
|
|
{
|
|
|
base.RunIni(runtime);
|
|
|
|
|
|
base.LogDebug("执行给某角色分配保存权限");
|
|
|
if (UserInfo.Instance.RoleID.Equals("-1") && UserInfo.MustLogin)
|
|
|
{
|
|
|
base.LogDebug("保存角色权限 用户未登录");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
DbMCControl basRoleControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRole").FirstOrDefault();
|
|
|
DbMCControl basRolePurviewControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRolePurview").FirstOrDefault();
|
|
|
if (basRoleControl == null || !basRoleControl.BaseControl.GetType().IsSubclassOf(typeof(ListControl)))
|
|
|
{
|
|
|
base.LogError("保存角色权限 缺少角色组合框控件...");
|
|
|
return;
|
|
|
}
|
|
|
if (basRolePurviewControl == null || !basRolePurviewControl.BaseControl.GetType().IsSubclassOf(typeof(TreeView)))
|
|
|
{
|
|
|
base.LogError("保存角色权限 缺少权限树形控件...");
|
|
|
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);
|
|
|
ShowMsg(Language(10));
|
|
|
}
|
|
|
|
|
|
private void save(DbHelper dbhelper, TreeNodeCollection tnc, string roleId)
|
|
|
{
|
|
|
foreach (TreeNode n in tnc)
|
|
|
{
|
|
|
if (n.Checked)
|
|
|
{
|
|
|
insert(dbhelper, n.Tag as APurview, roleId);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
delete(dbhelper, n.Tag as APurview, roleId);
|
|
|
}
|
|
|
if (n.Nodes != null)
|
|
|
{
|
|
|
save(dbhelper, n.Nodes, roleId);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void insert(DbHelper dbhelper, APurview aPurview, string roleId)
|
|
|
{
|
|
|
if (aPurview == null)
|
|
|
return;
|
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
sb.AppendLine("IF NOT EXISTS(SELECT * FROM BasRolePurview WHERE RoleID=@RoleID AND PurviewID=@PurviewID AND PurviewType=@PurviewType)");
|
|
|
sb.AppendLine("INSERT INTO BasRolePurview(RoleID,PurviewID,PurviewType)");
|
|
|
sb.AppendLine("VALUES(@RoleID,@PurviewID,@PurviewType)");
|
|
|
|
|
|
dbhelper.ClearParameter();
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
dbhelper.CommandText = sb.ToString();
|
|
|
dbhelper.AddParameter("@RoleID", int.Parse(roleId));
|
|
|
dbhelper.AddParameter("@PurviewID", int.Parse(aPurview.ObjID));
|
|
|
dbhelper.AddParameter("@PurviewType", aPurview.PurviewType);
|
|
|
|
|
|
dbhelper.ExecuteNonQuery();
|
|
|
}
|
|
|
|
|
|
private void delete(DbHelper dbhelper, APurview aPurview, string roleId)
|
|
|
{
|
|
|
if (aPurview == null)
|
|
|
return;
|
|
|
|
|
|
dbhelper.ClearParameter();
|
|
|
dbhelper.CommandType = CommandType.Text;
|
|
|
dbhelper.CommandText = "DELETE FROM BasRolePurview WHERE RoleID=@RoleID AND PurviewID=@PurviewID AND PurviewType=@PurviewType";
|
|
|
dbhelper.AddParameter("@RoleID", int.Parse(roleId));
|
|
|
dbhelper.AddParameter("@PurviewID", int.Parse(aPurview.ObjID));
|
|
|
dbhelper.AddParameter("@PurviewType", aPurview.PurviewType);
|
|
|
|
|
|
dbhelper.ExecuteNonQuery();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
} |