角色指派部门功能

This commit is contained in:
summer853300975 2016-10-29 09:24:55 +08:00
parent 8c79d0955d
commit 2b912b73e5
8 changed files with 156 additions and 50 deletions

View File

@ -333,7 +333,11 @@
Group.saveGroupsByUserId = function (userId, groupIds, callback) { Group.saveGroupsByUserId = function (userId, groupIds, callback) {
processGroupsData({ Id: userId, callback: callback, method: "PUT", data: { type: "user", groupIds: groupIds } }); processGroupsData({ Id: userId, callback: callback, method: "PUT", data: { type: "user", groupIds: groupIds } });
}; };
Group.getGroupsByRoleId = function (roleId) { Group.getGroupsByRoleId = function (roleId,callback) {
processGroupsData({ Id: roleId, callback: callback, data: { type: "role" } });
};
Group.saveGroupsByRoleId = function (roleId,groupIds,callback) {
processGroupsData({ Id: roleId, callback: callback, method: "PUT", data: { type: "role", groupIds: groupIds } });
};
}; };
})(jQuery); })(jQuery);

View File

@ -62,6 +62,9 @@ namespace Bootstrap.Admin.Controllers
{ {
case "user": case "user":
ret = GroupHelper.RetrieveGroupsByUserId(id).ToList(); ret = GroupHelper.RetrieveGroupsByUserId(id).ToList();
break;
case "role":
ret = GroupHelper.RetrieveGroupsByRoleId(id).ToList();
break; break;
default: default:
break; break;
@ -84,6 +87,9 @@ namespace Bootstrap.Admin.Controllers
{ {
case "user": case "user":
ret = GroupHelper.SaveGroupsByUserId(id, groupIds); ret = GroupHelper.SaveGroupsByUserId(id, groupIds);
break;
case "role":
ret = GroupHelper.SaveGroupsByRoleId(id, groupIds);
break; break;
default: default:
break; break;

View File

@ -21,7 +21,11 @@
}, { }, {
id: 'btn_assignGroup', id: 'btn_assignGroup',
click: function (row) { click: function (row) {
var roleId = row.ID; Group.getGroupsByRoleId(row.ID, function (data) {
$("#dialogGroup.modal-title").text($.format('{0}-部门授权窗口', row.RoleName));
$('#dialogGroup form').html(data);
$('#dialogGroup').modal('show');
})
} }
}, { }, {
id: 'btnSubmitRoleUser', id: 'btnSubmitRoleUser',
@ -32,6 +36,24 @@
}).toArray().join(','); }).toArray().join(',');
User.saveUsersByRoleId(roleId, userIds, { modal: 'dialogUser' }); User.saveUsersByRoleId(roleId, userIds, { modal: 'dialogUser' });
} }
},
{
id: 'btnSubmitRoleGroup',
click: function (row) {
var roleId = row.ID;
var groupIds = $('#dialogGroup :checked').map(function (index, element) {
return $(element).val();
}).toArray().join(',');
Group.saveGroupsByRoleId(roleId, groupIds, function (result) {
if (result) {
$('#dialogGroup').modal('hide');
swal("成功", "修改部门", "success");
}
else {
swal("失败", "修改部门", "error");
}
});
}
}] }]
} }
}); });

View File

@ -56,4 +56,5 @@
} }
@section customModal{ @section customModal{
@Html.Partial("UserConfig") @Html.Partial("UserConfig")
} @Html.Partial("GroupConfig")
}

View File

@ -26,6 +26,7 @@
<add key="TerminalData-CodeTerminalHelper" interval="600" desc="输入口信息缓存" /> <add key="TerminalData-CodeTerminalHelper" interval="600" desc="输入口信息缓存" />
<add key="GroupData-CodeGroupHelper" interval="600" desc="群组信息缓存" /> <add key="GroupData-CodeGroupHelper" interval="600" desc="群组信息缓存" />
<add key="UserData-CodeUserHelper-Role-" interval="600" desc="角色用户信息缓存" /> <add key="UserData-CodeUserHelper-Role-" interval="600" desc="角色用户信息缓存" />
<add key="GroupData-CodeGroupHelper-Role-" interval="600" desc="角色部门信息缓存" />
<add key="UserData-CodeUserHelper" interval="600" desc="用户信息缓存" /> <add key="UserData-CodeUserHelper" interval="600" desc="用户信息缓存" />
<add key="UserData-CodeUserHelper-" interval="600" desc="用户信息缓存" /> <add key="UserData-CodeUserHelper-" interval="600" desc="用户信息缓存" />
<add key="RoleData-CodeRoleHelper" interval="600" desc="角色信息缓存" /> <add key="RoleData-CodeRoleHelper" interval="600" desc="角色信息缓存" />

View File

@ -20,6 +20,7 @@ namespace Bootstrap.DataAccess
{ {
private const string GroupDataKey = "GroupData-CodeGroupHelper"; private const string GroupDataKey = "GroupData-CodeGroupHelper";
private const string GroupUserIDDataKey = "GroupData-CodeGroupHelper-"; private const string GroupUserIDDataKey = "GroupData-CodeGroupHelper-";
private const string GroupRoleIDDataKey = "GroupData-CodeGroupHelper-Role-";
/// <summary> /// <summary>
/// 查询所有群组信息 /// 查询所有群组信息
/// </summary> /// </summary>
@ -203,6 +204,91 @@ namespace Bootstrap.DataAccess
{ {
CacheManager.Clear(key => key == GroupDataKey); CacheManager.Clear(key => key == GroupDataKey);
CacheManager.Clear(key => key == GroupUserIDDataKey); CacheManager.Clear(key => key == GroupUserIDDataKey);
CacheManager.Clear(key => key.Contains(GroupRoleIDDataKey));
}
/// <summary>
/// 根据角色ID指派部门
/// </summary>
/// <param name="roleId"></param>
/// <returns></returns>
public static IEnumerable<Group> RetrieveGroupsByRoleId(int roleId)
{
string k = string.Format("{0}{1}", GroupRoleIDDataKey, roleId);
return CacheManager.GetOrAdd(k, CacheSection.RetrieveIntervalByKey(GroupRoleIDDataKey), key =>
{
List<Group> Groups = new List<Group>();
string sql = "select g.ID,g.GroupName,g.[Description],case rg.GroupID when g.ID then 'checked' else '' end [status] from Groups g left join RoleGroup rg on g.ID=rg.GroupID and RoleID=@RoleID";
DbCommand cmd = DBAccessManager.SqlDBAccess.CreateCommand(CommandType.Text, sql);
cmd.Parameters.Add(DBAccessManager.SqlDBAccess.CreateParameter("@RoleID", roleId, ParameterDirection.Input));
try
{
using (DbDataReader reader = DBAccessManager.SqlDBAccess.ExecuteReader(cmd))
{
while (reader.Read())
{
Groups.Add(new Group()
{
ID=(int)reader[0],
GroupName=(string)reader[1],
Description=(string)reader[2],
Checked = (string)reader[3]
});
}
}
}
catch (Exception ex) { ExceptionManager.Publish(ex); }
return Groups;
},CacheSection.RetrieveDescByKey(GroupRoleIDDataKey));
}
/// <summary>
/// 根据角色ID以及选定的部门ID保到角色部门表
/// </summary>
/// <param name="roleId"></param>
/// <param name="value"></param>
/// <returns></returns>
public static bool SaveGroupsByRoleId(int id, string groupIds)
{
bool ret = false;
DataTable dt = new DataTable();
dt.Columns.Add("GroupID", typeof(int));
dt.Columns.Add("RoleID", typeof(int));
if (!string.IsNullOrEmpty(groupIds))
{
groupIds.Split(',').ToList().ForEach(groupId =>
{
DataRow dr = dt.NewRow();
dt.Rows.Add(groupId, id);
});
}
using(TransactionPackage transaction=DBAccessManager.SqlDBAccess.BeginTransaction()){
try
{
//删除角色部门表该角色所有的部门
string sql = "delete from RoleGroup where RoleID=@RoleID";
using (DbCommand cmd=DBAccessManager.SqlDBAccess.CreateCommand(CommandType.Text,sql))
{
cmd.Parameters.Add(DBAccessManager.SqlDBAccess.CreateParameter("@RoleID", id, ParameterDirection.Input));
DBAccessManager.SqlDBAccess.ExecuteNonQuery(cmd, transaction);
//批插入角色部门表
using (SqlBulkCopy bulk = new SqlBulkCopy((SqlConnection)transaction.Transaction.Connection, SqlBulkCopyOptions.Default, (SqlTransaction)transaction.Transaction))
{
bulk.BatchSize=1000;
bulk.ColumnMappings.Add("GroupID","GroupID");
bulk.ColumnMappings.Add("RoleID","RoleID");
bulk.DestinationTableName = "RoleGroup";
bulk.WriteToServer(dt);
transaction.CommitTransaction();
}
}
ret = true;
ClearCache();
}
catch (Exception ex) {
ExceptionManager.Publish(ex);
transaction.RollbackTransaction();
}
}
return ret;
} }
} }
} }

View File

@ -107,16 +107,7 @@ namespace Bootstrap.DataAccess
} }
return ret; return ret;
} }
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <param name="value"></param>
/// <returns></returns>
public static bool SaveRolesByGroupId(int id, string value)
{
return true;
}
/// <summary> /// <summary>
/// 查询某个用户所拥有的角色 /// 查询某个用户所拥有的角色
/// </summary> /// </summary>
@ -150,15 +141,7 @@ namespace Bootstrap.DataAccess
return Roles; return Roles;
}, CacheSection.RetrieveDescByKey(RoleUserIDDataKey)); }, CacheSection.RetrieveDescByKey(RoleUserIDDataKey));
} }
/// <summary>
///
/// </summary>
/// <param name="groupId"></param>
/// <returns></returns>
public static IEnumerable<Role> RetrieveRolesByGroupId(int groupId)
{
return new List<Role>();
}
/// <summary> /// <summary>
/// 删除角色表 /// 删除角色表
/// </summary> /// </summary>

View File

@ -1,5 +1,6 @@
using Longbow.Caching; using Longbow.Caching;
using Longbow.Caching.Configuration; using Longbow.Caching.Configuration;
using Longbow.Data;
using Longbow.ExceptionManagement; using Longbow.ExceptionManagement;
using Longbow.Security; using Longbow.Security;
using System; using System;
@ -208,48 +209,50 @@ namespace Bootstrap.DataAccess
/// <param name="id">角色ID</param> /// <param name="id">角色ID</param>
/// <param name="value">用户ID数组</param> /// <param name="value">用户ID数组</param>
/// <returns></returns> /// <returns></returns>
public static bool SaveUsersByRoleId(int id, string value) public static bool SaveUsersByRoleId(int id, string userIds)
{ {
bool ret = false;
DataTable dt = new DataTable(); DataTable dt = new DataTable();
dt.Columns.Add("RoleID", typeof(int)); dt.Columns.Add("RoleID", typeof(int));
dt.Columns.Add("UserID", typeof(int)); dt.Columns.Add("UserID", typeof(int));
if (!string.IsNullOrEmpty(value)) if (!string.IsNullOrEmpty(userIds))
{ {
string[] userIds = value.Split(','); userIds.Split(',').ToList().ForEach(userId =>
foreach (string userId in userIds)
{ {
DataRow dr = dt.NewRow(); DataRow dr = dt.NewRow();
dr["RoleID"] = id; dt.Rows.Add(id, userId);
dr["UserID"] = userId; });
dt.Rows.Add(dr);
}
} }
var trans = DBAccessManager.SqlDBAccess.BeginTransaction(); using (TransactionPackage transaction = DBAccessManager.SqlDBAccess.BeginTransaction())
try
{ {
using (DbCommand cmd = DBAccessManager.SqlDBAccess.CreateCommand(CommandType.Text, string.Empty)) try
{ {
cmd.CommandText = "delete from UserRole where RoleId=@RoleId"; //删除用户角色表该角色所有的用户
cmd.Parameters.Add(DBAccessManager.SqlDBAccess.CreateParameter("@RoleId", id, ParameterDirection.Input)); string sql = "delete from UserRole where RoleId=@RoleId";
DBAccessManager.SqlDBAccess.ExecuteNonQuery(cmd, trans); using (DbCommand cmd = DBAccessManager.SqlDBAccess.CreateCommand(CommandType.Text, sql))
using (SqlBulkCopy bulk = new SqlBulkCopy((SqlConnection)trans.Transaction.Connection, SqlBulkCopyOptions.Default, (SqlTransaction)trans.Transaction))
{ {
bulk.BatchSize = 1000; cmd.Parameters.Add(DBAccessManager.SqlDBAccess.CreateParameter("@RoleID", id, ParameterDirection.Input));
bulk.DestinationTableName = "UserRole"; DBAccessManager.SqlDBAccess.ExecuteNonQuery(cmd, transaction);
bulk.ColumnMappings.Add("RoleID", "RoleID"); //批插入用户角色表
bulk.ColumnMappings.Add("UserID", "UserID"); using (SqlBulkCopy bulk = new SqlBulkCopy((SqlConnection)transaction.Transaction.Connection, SqlBulkCopyOptions.Default, (SqlTransaction)transaction.Transaction))
bulk.WriteToServer(dt); {
bulk.DestinationTableName = "UserRole";
bulk.ColumnMappings.Add("RoleID", "RoleID");
bulk.ColumnMappings.Add("UserID", "UserID");
bulk.WriteToServer(dt);
transaction.CommitTransaction();
}
} }
trans.CommitTransaction(); ret= true;
ClearCache(); ClearCache();
return true; }
catch(Exception ex)
{
ExceptionManager.Publish(ex);
transaction.RollbackTransaction();
} }
} }
catch return ret;
{
trans.RollbackTransaction();
return false;
}
} }
} }
} }