Commit f2da5f5b by guanzhenshan

添加权限管理模块

parent 9c965ab7
......@@ -22,7 +22,7 @@ namespace Bailun.DC.DailySemiPurchaseSellStock
//{
// var _services = new Services();
// var start = DateTime.Parse("2019-11-25");
// var start = DateTime.Parse("2019-11-27");
// _services.Init(start);
// //while (start.AddDays(1) < DateTime.Now)
// //{
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.Common
{
public class mOAUser
{
public int userId { get; set; }
public string userName { get; set; }
}
}
......@@ -33,6 +33,17 @@ namespace Bailun.DC.Models.Menu
/// 是否删除,1:已删除,0:未删除
/// </summary>
public int delstatus { get; set; }
/// <summary>
/// 角色id
/// </summary>
public int role_id { get; set; }
public DateTime lastupdatetime { get; set; }
public int lastupdateuserid { get; set; }
public string lastupdateusername { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.Menu
{
/// <summary>
/// 用户角色表
/// </summary>
public class dc_user_role
{
public int id { get; set; }
/// <summary>
/// 角色名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 备注说明
/// </summary>
public string note { get; set; }
/// <summary>
/// 是否已删除 1:已删除 0:未删除
/// </summary>
public int delstatus { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime createtime { get; set; }
/// <summary>
/// 创建人id
/// </summary>
public int createuserid { get; set; }
/// <summary>
/// 创建人名称
/// </summary>
public string createusername { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
public DateTime lastupdatetime { get; set; }
/// <summary>
/// 最后更新人id
/// </summary>
public int lastupdateuserid { get; set; }
/// <summary>
/// 最后更新人名称
/// </summary>
public string lastupdateusername { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.Menu
{
/// <summary>
/// 角色和用户关系表
/// </summary>
public class dc_user_role_relation
{
/// <summary>
///
/// </summary>
public int id { get; set; }
/// <summary>
/// 角色id
/// </summary>
public int role_id { get; set; }
/// <summary>
/// 用户id
/// </summary>
public int userid { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public string username { get; set; }
/// <summary>
/// 是否已删除 1:已删除 0:未删除
/// </summary>
public int delstatus { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime createtime { get; set; }
/// <summary>
/// 创建人id
/// </summary>
public int createuserid { get; set; }
/// <summary>
/// 创建人名称
/// </summary>
public string createusername { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
public DateTime lastupdatetime { get; set; }
/// <summary>
/// 最后更新人id
/// </summary>
public int lastupdateuserid { get; set; }
/// <summary>
/// 最后更新人名称
/// </summary>
public string lastupdateusername { get; set; }
}
}
......@@ -5,6 +5,7 @@ using System.Net;
using System.Text;
using Bailun.DC.Common;
using Bailun.DC.Models;
using Bailun.DC.Models.Common;
using Dapper;
using MySql.Data.MySqlClient;
......@@ -372,6 +373,47 @@ namespace Bailun.DC.Services
}
/// <summary>
/// 获取所有oa用户
/// </summary>
/// <returns></returns>
public static List<mOAUser> GetListOAUser()
{
var list = new List<mOAUser>();
//先判断有没有缓存
//var cache = GetCache("OAUSER");
//if (cache != null)
//{
// list = (List<mOAUser>)cache;
// return list;
//}
try
{
var url = "http://www.bailuntec.com/api/User/GetUser";
var result = Common.HttpHelper.NetHelper.Request(url);
result = result.Substring(1);
result = (result.Substring(0, result.Length - 2) + "]").Replace(@"\", @"");
list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<mOAUser>>(result);
//if (list.Count > 0)
//{
// AddCache("OAUSER", list); //添加到缓存
//}
}
catch (Exception ex)
{
}
return list;
}
}
#region 汇率实体 ExchangeRate
......
......@@ -5,11 +5,12 @@ using Dapper;
using MySql.Data.MySqlClient;
using Bailun.DC.Models.Menu;
using System.Linq;
using Bailun.DC.Models;
namespace Bailun.DC.Services
{
/// <summary>
/// 采购管理服务
/// 菜单管理服务
/// </summary>
public class MenuServices
{
......@@ -30,7 +31,7 @@ namespace Bailun.DC.Services
cn.Open();
}
obj = cn.Query<dc_menu>(sql, null, null, true, 2 * 60).ToList();
obj = cn.Query<dc_menu>(sql, null, null, true, 2 * 60).Distinct().ToList();
}
foreach (var item in obj.Where(a=>a.parentid==0))
......@@ -43,6 +44,49 @@ namespace Bailun.DC.Services
}
/// <summary>
/// 根据用户id获取用户已授权菜单
/// </summary>
/// <param name="uid">用户id</param>
/// <returns></returns>
public List<Models.Menu.dc_menu> ListMenu(int uid)
{
var list = new List<dc_menu>();
var obj = new List<dc_menu>();
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var objRoles = cn.Query<dc_user_role_relation>("select t1.* from dc_user_role_relation t1 join dc_user_role t2 on t1.role_id=t2.id and t2.delstatus=0 where t1.delstatus=0 and t1.userid=" + uid);
if (objRoles.Count() == 0)
{
return list;
}
var sql = $@"select * from (select t1.id,t1.parentid,t1.icon,t1.`name`,t1.path,t1.sort from dc_menu t1
join dc_menu_permission t2 on t1.id=t2.menuid and t2.delstatus=0 and t2.role_id in ({string.Join(",",objRoles.Select(a=>a.role_id))})
where t1.delstatus=0
union all
select t1.id,t1.parentid,t1.icon,t1.`name`,t1.path,t1.sort from dc_menu t1 where t1.delstatus=0 and 1 = (select isall from dc_menu_permission where role_id in ({string.Join(",", objRoles.Select(a => a.role_id))}) and isall=1 and delstatus=0 order by isall desc limit 1)) tb order by parentid,sort";
obj = cn.Query<dc_menu>(sql, null, null, true, 2 * 60).Distinct().ToList();
foreach (var item in obj.Where(a => a.parentid == 0))
{
GetChildrens(item, obj);
list.Add(item);
}
return list;
}
}
/// <summary>
/// 检测用户是否有权限访问菜单
/// </summary>
/// <param name="menuname">菜单名称</param>
......@@ -70,6 +114,68 @@ namespace Bailun.DC.Services
}
}
/// <summary>
/// 获取所有菜单
/// </summary>
/// <returns></returns>
public List<dc_menu> ListMenu()
{
var sql = "select * from dc_menu where delstatus=0 order by sort";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<dc_menu>(sql).ToList();
return obj;
}
}
/// <summary>
/// 获取角色的菜单
/// </summary>
/// <param name="roleid">角色id</param>
/// <returns></returns>
public List<dc_menu_permission> GetRoleMenu(int roleid)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<dc_menu_permission>("select * from dc_menu_permission where delstatus=0 and role_id="+roleid);
return obj.ToList();
}
}
/// <summary>
/// 获取用户所在的角色
/// </summary>
/// <param name="uid"></param>
/// <returns></returns>
public List<dc_user_role_relation> GetUserRoleRela(int uid)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var objRoles = cn.Query<dc_user_role_relation>("select t1.* from dc_user_role_relation t1 join dc_user_role t2 on t1.role_id=t2.id and t2.delstatus=0 where t1.delstatus=0 and t1.userid=" + uid);
return objRoles.ToList();
}
}
#region Private
private void GetChildrens(dc_menu m, List<dc_menu> list)
......@@ -87,5 +193,416 @@ namespace Bailun.DC.Services
}
#endregion
#region 用户角色
/// <summary>
/// 角色列表
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<Models.Menu.dc_user_role> ListUserRole(BtTableParameter parameter,string name,ref int total)
{
var sqlparam = new DynamicParameters();
var sql = "select * from dc_user_role where delstatus=0 ";
if (!string.IsNullOrEmpty(name))
{
sql += " and name=@name";
sqlparam.Add("name", name);
}
if (!string.IsNullOrWhiteSpace(parameter.sort))
{
sql += " order by "+parameter.sort+" "+parameter.order;
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Page<dc_user_role>(parameter.pageIndex, parameter.limit, sql, ref total,sqlparam);
return obj.ToList();
}
}
/// <summary>
/// 获取所有角色列表
/// </summary>
/// <returns></returns>
public List<dc_user_role> ListUserRole()
{
var sql = "select * from dc_user_role where delstatus=0 ";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<dc_user_role>(sql).ToList();
return obj;
}
}
public Models.Menu.dc_user_role GetUserRole(int id)
{
var sql = "select * from dc_user_role where delstatus=0 and id="+id;
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.QueryFirstOrDefault<dc_user_role>(sql, null, null, 2 * 60);
return obj;
}
}
/// <summary>
/// 保存角色
/// </summary>
/// <param name="m"></param>
/// <param name="uid">当前用户id</param>
/// <param name="username">当前用户名称</param>
/// <returns></returns>
public string SaveRole(Models.Menu.dc_user_role m,int uid,string username)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var o = new dc_user_role() {
createtime = DateTime.Now,
createuserid = uid,
createusername = username,
delstatus = 0
};
if (m.id > 0)
{
o = cn.QueryFirstOrDefault<Models.Menu.dc_user_role>("select * from dc_user_role where id=" + m.id);
if (o == null)
{
o = new dc_user_role
{
createtime = DateTime.Now,
createuserid = uid,
createusername = username,
delstatus = 0
};
}
}
o.name = m.name;
o.note = m.note;
o.lastupdatetime = DateTime.Now;
o.lastupdateuserid = uid;
o.lastupdateusername = username;
o.delstatus = 0;
if (o.id > 0)
{
var result = cn.Update<dc_user_role>(o);
return result > 0 ? "" : "更新异常,请重试!";
}
else
{
var result = cn.Insert<dc_user_role>(o);
return result > 0 ? "" : "保存异常,请重试!";
}
}
}
/// <summary>
/// 删除角色
/// </summary>
/// <param name="id"></param>
/// <param name="uid"></param>
/// <param name="username"></param>
/// <returns></returns>
public string DelRole(int id,int uid,string username)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var m = cn.QueryFirstOrDefault<Models.Menu.dc_user_role>("select * from dc_user_role where id=" + id);
if (m == null)
{
return "找不到该角色!";
}
m.delstatus = 1;
m.lastupdatetime = DateTime.Now;
m.lastupdateuserid = uid;
m.lastupdateusername = username;
var result = cn.Update<dc_user_role>(m);
return result > 0 ? "" : "更新异常,请重试!";
}
}
/// <summary>
/// 添加角色用户关联
/// </summary>
/// <param name="roleid">角色id</param>
/// <param name="userid">用户id</param>
/// <param name="uid">当前用户id</param>
/// <param name="username">当前用户名称</param>
/// <returns></returns>
public string SaveRoleUser(int roleid, int userid,string username, int current_uid, string current_username,ref int id)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if(cn.State== System.Data.ConnectionState.Closed)
{
cn.Open();
}
var objRole = GetUserRole(roleid);
if (objRole == null)
{
return "找不到该角色。";
}
var m = cn.QueryFirstOrDefault<dc_user_role_relation>("select * from dc_user_role_relation where delstatus=0 and userid=" + userid + " and role_id=" + roleid);
if (m == null)
{
m = new dc_user_role_relation
{
createtime = DateTime.Now,
createuserid = current_uid,
createusername = current_username,
delstatus = 0
};
}
m.lastupdatetime = DateTime.Now;
m.delstatus = 0;
m.lastupdateuserid = current_uid;
m.lastupdateusername = current_username;
m.userid = userid;
m.username = username;
m.role_id = roleid;
if (m.id > 0)
{
id = m.id;
return cn.Update<dc_user_role_relation>(m) > 0 ? "" : "更新失败,请重试!";
}
else
{
var result = cn.Insert<dc_user_role_relation>(m);
id = result??0;
return (result??0) > 0 ? "" : "保存失败,请重试!";
}
}
}
/// <summary>
/// 删除角色里面的用户
/// </summary>
/// <param name="id">角色用户关系id</param>
/// <param name="uid">当前用户id</param>
/// <param name="username">当前用户名称</param>
/// <returns></returns>
public string DelRoleUser(int id,int uid,string username)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if(cn.State== System.Data.ConnectionState.Closed)
{
cn.Open();
}
var m = cn.QueryFirstOrDefault<dc_user_role_relation>("select * from dc_user_role_relation where delstatus=0 and id="+id);
if (m == null)
{
return "没有该数据,请重试!";
}
m.lastupdatetime = DateTime.Now;
m.lastupdateuserid = uid;
m.lastupdateusername = username;
m.delstatus = 1;
return cn.Update<dc_user_role_relation>(m)>0?"":"更新失败,请重试!";
}
}
/// <summary>
/// 获取角色的用户
/// </summary>
/// <param name="roleid">角色id</param>
/// <returns></returns>
public List<dc_user_role_relation> ListUserRoleRelation(int roleid)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var list = cn.Query<dc_user_role_relation>("select * from dc_user_role_relation where delstatus=0 and role_id=" + roleid).ToList();
return list;
}
}
/// <summary>
/// 保存角色菜单
/// </summary>
/// <param name="roleid">角色id</param>
/// <param name="s">菜单id,格式:id1|id2|...</param>
/// <param name="uid">当前用户id</param>
/// <param name="username">当前用户名称</param>
/// <returns></returns>
public string SaveRoleMenus(int roleid, string s, int uid, string username,int isall=0)
{
try
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var objRole = GetUserRole(roleid);
if (objRole == null)
{
return "找不到该角色。";
}
cn.Execute("update dc_menu_permission set delstatus=1 where role_id=" + roleid);
//授权所有菜单都能访问
if (isall == 1)
{
var obj = cn.QueryFirstOrDefault<dc_menu_permission>("select * from dc_menu_permission where role_id=" + roleid + " and menuid=0 and username=''");
if (obj == null)
{
obj = new dc_menu_permission
{
delstatus = 0,
isall = 1,
menuid = 0,
role_id = roleid,
username = "",
lastupdatetime = DateTime.Now,
lastupdateuserid = uid,
lastupdateusername = username,
};
}
else
{
obj.delstatus = 0;
obj.isall = 1;
obj.menuid = 0;
obj.lastupdatetime = DateTime.Now;
obj.lastupdateuserid = uid;
obj.lastupdateusername = username;
obj.role_id = roleid;
obj.username = "";
}
if (obj.id > 0)
{
cn.Update<dc_menu_permission>(obj);
}
else
{
cn.Insert<dc_menu_permission>(obj);
}
}
else //指定菜单
{
var arr = s.Split("|").Where(a => !string.IsNullOrEmpty(a)).ToList();
foreach (var item in arr)
{
var obj = cn.QueryFirstOrDefault<dc_menu_permission>("select * from dc_menu_permission where role_id=" + roleid + " and menuid=" + item);
if (obj == null)
{
obj = new dc_menu_permission
{
delstatus = 0,
isall = 0,
menuid = int.Parse(item),
role_id = roleid,
username = "",
lastupdatetime = DateTime.Now,
lastupdateuserid = uid,
lastupdateusername = username,
};
}
else
{
obj.delstatus = 0;
obj.isall = 0;
obj.menuid = int.Parse(item);
obj.lastupdatetime = DateTime.Now;
obj.lastupdateuserid = uid;
obj.lastupdateusername = username;
obj.role_id = roleid;
obj.username = "";
}
if (obj.id > 0)
{
cn.Update<dc_menu_permission>(obj);
}
else
{
cn.Insert<dc_menu_permission>(obj);
}
}
}
}
return "";
}
catch (Exception ex)
{
return ex.Message;
}
}
#endregion
}
}
......@@ -20,7 +20,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
//static void Main(string[] args)
//{
// var start = DateTime.Parse("2019-09-01");
// var start = DateTime.Parse("2019-11-18");
// while (start.AddDays(1) < DateTime.Now)
// {
// Console.WriteLine(start.ToString("yyyy-MM-dd"));
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Bailun.DC.Models;
using Bailun.DC.Models.Api;
using Bailun.ServiceFabric.Authorize;
using Bailun.ServiceFabric.Core.Extension;
using Bailun.ServiceFabric.Core.Extension.HttpContext;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace Bailun.DC.Web.Areas.Users.Controllers
{
[Area("Users")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
#region 角色管理
public ActionResult UserRoles()
{
return View();
}
/// <summary>
/// 返回角色列表
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public string ListUserRoles(BtTableParameter parameter,string name)
{
var total = 0;
var obj = new Services.MenuServices().ListUserRole(parameter, name,ref total);
var list = obj.Select(a => new
{
a.id,
a.name,
a.note,
createtime = a.createtime.ToString("yyyy-MM-dd HH:mm:ss"),
lastupdatetime = a.lastupdatetime.ToString("yyyy-MM-dd HH:mm:ss"),
a.lastupdateusername
});
return JsonConvert.SerializeObject(new
{
total = total,
rows = list,
});
}
/// <summary>
/// 角色详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult RoleDetail(int? id)
{
var m = new Models.Menu.dc_user_role();
if (id.HasValue && id.Value > 0)
{
m = new Services.MenuServices().GetUserRole(id.Value);
if (m == null)
{
m = new Models.Menu.dc_user_role();
}
}
ViewBag.m = m;
return View();
}
/// <summary>
/// 保存用户角色信息
/// </summary>
/// <param name="id">角色id</param>
/// <param name="name">角色名称</param>
/// <param name="note">备注</param>
/// <returns></returns>
[BailunAuthentication(LoginMode.Enforce)]
[HttpPost]
public JsonResult SaveUserRole(int? id,string name,string note)
{
var user = HttpContextHelper.Current?.User;
var obj = new Services.MenuServices().SaveRole(new Models.Menu.dc_user_role() { id=id??0,name = name,note=note},(user==null?0: user.GetUid()),(user==null?"":user.GetUserName()));
return Json(new {
success = string.IsNullOrEmpty(obj),
msg = obj
});
}
/// <summary>
/// 删除角色
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[BailunAuthentication(LoginMode.Enforce)]
[HttpPost]
public JsonResult DelUserRole(int id)
{
var user = HttpContextHelper.Current?.User;
var obj = new Services.MenuServices().DelRole(id, (user == null ? 0 : user.GetUid()), (user == null ? "" : user.GetUserName()));
return Json(new
{
success = string.IsNullOrEmpty(obj),
msg = obj
});
}
#endregion
#region 权限设置
/// <summary>
///
/// </summary>
/// <returns></returns>
public ActionResult UserRoleRelation()
{
//公司员工列表
var listUser = Services.CommonServices.GetListOAUser();
//获取所有菜单
//var listMenu = new Services.MenuServices().ListMenu();
//获取所有角色
var listrole = new Services.MenuServices().ListUserRole();
ViewBag.users = listUser;
ViewBag.roles = listrole;
return View();
}
/// <summary>
/// 获取所有菜单
/// </summary>
/// <returns></returns>
[BailunAuthentication(LoginMode.Enforce)]
[HttpPost]
public JsonResult GetMenus()
{
var _service = new Services.MenuServices();
var menus = _service.ListMenu();
var userid = HttpContextHelper.Current.User?.GetUid();
var listRela = _service.GetUserRoleRela(userid ?? 0);
if (listRela.Where(a => a.role_id == 1).Count() == 0)
{
menus = menus.Where(a => a.id != 107 && a.id != 108 && a.id != 109).ToList();
}
var list = new List<Models.Api.mSkuCategoryTree>();
var onelevel = menus.Where(a => a.parentid == 0);
foreach (var item in onelevel)
{
//GetChildrens(menus, item);
//var chidren = menus.Where(a => a.parentid == item.id);
var m = new Models.Api.mSkuCategoryTree
{
id = item.id,
name = item.name,
open = false
};
list.Add(m);
}
foreach (var item in list)
{
GetChildrens(menus, item);
}
return Json(list);
}
/// <summary>
/// 获取角色的用户和授权的菜单信息
/// </summary>
/// <param name="role_id">角色id</param>
/// <returns></returns>
[HttpPost]
public JsonResult GetRoleInfo(int roleid)
{
try
{
var _service = new Services.MenuServices();
//已授权用户
var listRela = _service.ListUserRoleRelation(roleid);
//已授权菜单
var listMenu = _service.GetRoleMenu(roleid);
return Json(new
{
success = true,
msg = "",
rela = listRela,
menus = listMenu
});
}
catch (Exception ex)
{
return Json(new
{
success = false,
msg = ex.Message
});
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
[HttpPost]
public JsonResult UserRoleRelationJson(int role_id)
{
return Json("");
}
/// <summary>
/// 给角色设置用户
/// </summary>
/// <param name="userid">用户id</param>
/// <param name="roleid">角色id</param>
/// <returns></returns>
[BailunAuthentication(LoginMode.Enforce)]
[HttpPost]
public JsonResult SaveRoleUser(int userid,string username,int roleid)
{
var id = 0;
var user = HttpContextHelper.Current?.User;
var result = new Services.MenuServices().SaveRoleUser(roleid,userid, username, (user == null ? 0 : user.GetUid()), (user == null ? "" : user.GetUserName()),ref id);
return Json(new {
success = string.IsNullOrEmpty(result),
msg = result,
dataid = id,
});
}
/// <summary>
/// 删除角色用户
/// </summary>
/// <param name="id">角色用户关系id</param>
/// <returns></returns>
[HttpPost]
public JsonResult DelRoleUser(int id)
{
if (id == 1)
{
return Json(new
{
success = true,
msg = ""
});
}
var user = HttpContextHelper.Current?.User;
var result = new Services.MenuServices().DelRoleUser(id,(user == null ? 0 : user.GetUid()), (user == null ? "" : user.GetUserName()));
return Json(new
{
success = string.IsNullOrEmpty(result),
msg = result
});
}
/// <summary>
/// 保存角色菜单
/// </summary>
/// <param name="roleid"></param>
/// <param name="s"></param>
/// <returns></returns>
[BailunAuthentication(LoginMode.Enforce)]
[HttpPost]
public JsonResult SaveRoleMenus(int roleid, string s,int? isall=0)
{
var user = HttpContextHelper.Current?.User;
var result = new Services.MenuServices().SaveRoleMenus(roleid, s, (user == null ? 0 : user.GetUid()), (user == null ? "" : user.GetUserName()),isall??0);
return Json(new {
success = string.IsNullOrEmpty(result),
msg = result
});
}
#endregion
#region Private
/// <summary>
/// 获取菜单的子菜单
/// </summary>
/// <param name="list"></param>
/// <param name="m"></param>
private void GetChildrens(List<Models.Menu.dc_menu> list,mSkuCategoryTree m)
{
var chidren = list.Where(a => a.parentid == m.id);
if (chidren.Count() > 0)
{
m.children = chidren.Select(a => new mSkuCategoryTree {
id = a.id,
name = a.name,
open = false,
}).ToList();
foreach (var item in m.children)
{
GetChildrens(list, item);
}
}
}
#endregion
}
}
\ No newline at end of file

@{
ViewData["Title"] = "角色详情";
Layout = "~/Pages/Shared/_MainLayout2.cshtml";
ViewBag.Nav = new string[] { "系统设置", "角色管理", "角色详情" };
ViewBag.showClose = false;
}
<div style="background:#fff;padding:8px;margin:-15px;">
<h3>基本信息</h3>
<div class="fixed-table-container bootstrap-table">
<table class="table table-hover">
<tr>
<td>角色名称<span style="color:red;">*</span>:</td>
<td><input id="name" name="name" class="form-control" value="@ViewBag.m.name" /></td>
</tr>
<tr>
<td>备注:</td>
<td><input id="note" name="note" class="form-control" value="@ViewBag.m.note" /></td>
</tr>
</table>
</div>
<input id="id" name="id" type="hidden" value="@ViewBag.m.id" />
</div>
@section buttons{
<button type="button" class="btn btn-success btn-operation" onclick="Save();">提交</button>
}
@section scripts{
<script type="text/javascript">
function Save() {
var n = $('#name').val();
var note = $('#note').val();
if (n == '') {
layer.msg('角色名称不能为空!');
return false;
}
$.submit({
url: '@Url.Content("~/Users/Home/SaveUserRole")',
type:'POST',
paramData: 'id=@(ViewBag.m.id)' + '&name=' + n + '&note=' + note,
success: function (result) {
if (result.success) {
layer.msg('提交成功!');
window.location = window.location;
//layer_close();
}
else {
layer.msg(result.msg);
}
}
})
}
</script>
}
\ No newline at end of file

@{
ViewData["Title"] = "设置权限";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "系统设置", "权限设置" };
}
<div class="row">
<div class="col-sm-12">
<div class="row" style="min-height:600px;">
<div class="col-sm-4">
<div style="background:#fff;-moz-box-shadow:3px 3px 8px #bbb; -webkit-box-shadow:3px 3px 3px #bbb; box-shadow:3px 3px 8px #bbb;">
<div style="margin-left:10px;padding-top:15px;padding-bottom:20px;">
<h3>角色<span style="font-size:13px;color:#aaa;">(请选择角色)</span></h3>
<div id="role_contain" style="margin-top:10px;margin-bottom:30px;">
@foreach (var item in ViewBag.roles)
{
<div style="margin:3px 100px 3px 3px;padding:8px 8px;border-bottom:solid 1px #eee;" val="@(item.id)">@(item.name)</div>
}
</div>
</div>
</div>
</div>
<div class="col-sm-4" style="padding-left:0px;">
<div style="background:#fff;-moz-box-shadow:3px 3px 8px #bbb; -webkit-box-shadow:3px 3px 3px #bbb; box-shadow:3px 3px 8px #bbb;">
<div style="margin-left:10px;padding-top:15px;padding-bottom:20px;">
<h3 style="margin-top:20px;">归属角色的用户</h3>
<div>
<div style="border-bottom:solid 1px #eee;padding-bottom:10px;">
<select id="sel_user" class="clselect" style="padding-top:3px;padding-bottom:3px;">
<option value="">请选择用户</option>
@foreach (var item in ViewBag.users)
{
<option value="@(item.userId+"_"+item.userName)">@(item.userName)</option>
}
</select>
<button class="btn btn-success" onclick="SaveUserToRole()">添加</button>
</div>
<div id="user_contain" style="margin-top:10px;">
@*<div id="rela_2" style="padding:5px;">Allan<span style="margin-left:5px" onclick="del(2);">X</span></div>*@
</div>
<div style="clear:both;"></div>
</div>
</div>
</div>
</div>
<div class="col-sm-4" style="padding-left:0px;">
<div style="background:#fff;-moz-box-shadow:3px 3px 8px #bbb; -webkit-box-shadow:3px 3px 3px #bbb; box-shadow:3px 3px 8px #bbb;">
<div style="margin-left:10px;padding-top:15px;padding-bottom:20px;">
<h3 style="margin-top:20px;">已授权菜单<span style="font-size:13px;color:#aaa;">(已勾选的)</span></h3>
<div id="menu_contain">
<input id="chk_all" name="chk_all" type="checkbox" onclick="ChkAll()" /><label for="chk_all" onclick="ChkAll()">全选</label>
<div id="ztree" class="ztree" style="max-height: 800px;overflow: auto;">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row" style="margin-bottom:20px;">
<div class="col-sm-12" style="text-align:center;">
<button class="btn btn-primary" onclick="SaveMenus();">保存</button>
</div>
</div>
</div>
</div>
@section css{
<link href="~/css/select2/select2.min.css" rel="stylesheet" />
<link href="~/css/chosen_v1.6.2/chosen.min.css" rel="stylesheet" />
<link href="~/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css" />
<style>
ul{padding:0px;margin:0px;}
.mules {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.activerole {
background: #21AB62;
color: #fff
}
.muser{border:solid 1px #eee;padding:5px 10px;border-radius:5px 5px;float:left;margin-right:8px;margin-top:8px;}
.muser:hover{background-color:aliceblue}
</style>
}
@section scripts{
<script src="~/js/jquery.ztree.core.min.js"></script>
<script src="~/js/jquery.ztree.excheck.min.js"></script>
<script src="~/css/select2/select2.min.js"></script>
<script src="~/css/chosen_v1.6.2/chosen.jquery.min.js"></script>
<script type="text/javascript">
var zTreeObj;
$(document).ready(function () {
$('#role_contain').find('div').each(function () {
var obj = $(this);
obj.click(function () {
$('.activerole').each(function () {
$(this).removeClass('activerole');
})
obj.addClass('activerole');
getInfo(obj.attr('val'));
})
})
getBaseMenu();
$(".clselect").chosen({ width: '150px' });
})
function getBaseMenu() {
$.submit({
url: '@Url.Content("~/Users/Home/GetMenus")',
type:'POST',
paramData: '',
func: function (result) {
if (result != undefined && result != null) {
var setting = {
check: {
chkStyle: 'checkbox',
enable: true
}
};
zTreeObj = $.fn.zTree.init($("#ztree"), setting, result);
}
else {
alert('获取菜单失败!');
}
}
})
}
function getInfo(id) {
$.submit({
url: '@Url.Content("~/Users/Home/GetRoleInfo")',
type:'POST',
paramData: 'roleid='+id,
func: function (result) {
if (result.success) {
$('#user_contain').html('');
$('#chk_all').prop('checked', false);
for (var item in result.rela) {
var obj_rela = result.rela[item];
$('#user_contain').append('<div class="muser" id="rela_' + obj_rela.id + '">' + obj_rela.username + '<button style="margin-left:5px;" class="btn btn-xs btn-danger" onclick="del(' + obj_rela.id + ');" >删除</button></div>');
}
zTreeObj.checkAllNodes(false);
//选中已授权的权限
for (var item in result.menus) {
if (result.menus[item].isall == 1) {
zTreeObj.checkAllNodes(true);
$('#chk_all').prop('checked', true);
return false;
}
var node = zTreeObj.getNodeByParam("id", result.menus[item].menuid, null);
if (node != null && node != undefined) {
zTreeObj.checkNode(node, true, false);
}
}
}
}
})
}
function SaveUserToRole() {
var objRole = $('.activerole');
if (objRole.length==0) {
alert('请选择角色!');
return false;
}
var roleid = objRole.first().attr('val');
var user = $('#sel_user').val();
if (user == '') {
alert('请选择员工');
return false;
}
var arr = user.split('_');
if (arr.length != 2) {
layer.msg('员工信息异常,请刷新页面再重试!');
return false;
}
$.submit({
url: '@Url.Content("~/Users/Home/SaveRoleUser")',
type:'POST',
paramData: 'userid=' + arr[0] + '&username='+ arr[1] + '&roleid=' + roleid,
func: function (result) {
if (result.success) {
$('#user_contain').append('<div class="muser" id="rela_' + result.dataid + '">' + arr[1] + '<button style="margin-left:5px;" class="btn btn-xs btn-danger" onclick="del(' + result.dataid + ');" >删除</button></div>');
layer.msg('提交成功!');
}
else {
alert('提交失败,请重试!');
}
}
})
}
function del(id) {
$.submit({
url: '@Url.Content("~/Users/Home/DelRoleUser")',
paramData: 'id=' + id,
type:'POST',
func: function (result) {
if (!result.success) {
layer.msg(result.msg);
}
else {
$('#rela_' + id).remove();
}
}
})
}
function SaveMenus() {
var objRole = $('.activerole');
if (objRole.length == 0) {
alert('请选择角色!');
return false;
}
var roleid = objRole.first().attr('val');
var s = '';
var nodes = zTreeObj.getCheckedNodes();
for (var i in nodes) {
s += (nodes[i].id) + '|';
}
var chk = $('#chk_all').prop('checked');
$.submit({
url: '@Url.Content("~/Users/Home/SaveRoleMenus")',
paramData: 'roleid=' + roleid + '&s=' + s + '&isall=' + (chk?1:0),
type:'POST',
func: function (result) {
if (result.success) {
layer.msg('提交成功!');
return false;
}
else {
layer.msg(result.msg);
}
}
})
}
function ChkAll() {
var chk = $('#chk_all').prop('checked');
if (chk) {
$('#chk_all').prop('checked', false);
zTreeObj.checkAllNodes(false);
}
else {
$('#chk_all').prop('checked', true);
zTreeObj.checkAllNodes(true);
}
}
</script>
}

@{
ViewData["Title"] = "用户角色";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "系统设置", "用户角色管理" };
}
<div class="row">
<div class="col-sm-12">
<div class="ibox-content m-b-sm border-bottom">
<form id="toolbar">
<div class="form-inline" style="line-height:40px;">
<div class="form-group">
<label>角色名称:</label>
<input id="name" name="name" class="form-control" placeholder="角色名称" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
<button type="button" class="btn btn-success" onclick="add();">新增</button>
</div>
</div>
</form>
</div>
<div class="ibox-content m-b-sm border-bottom">
<table id="roletable" style="table-layout:fixed;"></table>
</div>
</div>
</div>
@section css{
<link href="~/css/bootstrap-table-fixed-columns.css" rel="stylesheet" />
<style>
.mules {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
}
@section scripts{
<script src="~/js/bootstrap-table-fixed-columns.js" type="text/javascript"></script>
<script type="text/javascript">
var tb;
$(document).ready(function () {
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 170));
list();
})
function list() {
var columns = [
{ field: 'name', title: '角色名称', width: '130' },
{ field: 'note', title: '备注', width: '180' },
{ field: 'lastupdateusername', title: '更新人', width: '100', sortable: true, iscount: true },
{ field: 'lastupdatetime', title: '更新时间', width: '130', sortable: true, iscount: true },
{
field: 'option', title: '操作', width: '110', formatter: function (idx, data) {
return '<a class="btn btn-success btn-xs" onclick="ShowDetail(' + data.id + ')">编辑</a>' + (data.id != 1 ? '<a class="btn btn-danger btn-xs" style="margin-left:3px" onclick="DelDetail(' + data.id +')">编辑</a>':"");
}
}
];
var url = '@Url.Content("~/Users/Home/ListUserRoles")' + '?' + $("#toolbar").serialize();
if (tb == undefined) {
tb = OnlyTable("roletable", columns, url, "");
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
function add() {
layer_show('新增角色', '@Url.Content("~/Users/Home/RoleDetail")', '90%', '90%');
}
function ShowDetail(id) {
layer_show('编辑角色', '@Url.Content("~/Users/Home/RoleDetail?id=")'+id, '90%', '90%');
}
function DelDetail(id) {
if (confirm("删除后不可恢复,是否要删除该角色")) {
$.submit({
url: '@Url.Content("~/Users/Home/DelUserRole")',
type:'POST',
paramData: 'id='+id,
func: function (result) {
if (result.success) {
layer.msg('删除成功!');
list();
}
else {
layer.msg(result.msg);
}
}
})
}
}
</script>
}
......@@ -34,6 +34,8 @@
<Folder Include="Areas\Logistics\Models\" />
<Folder Include="Areas\Reports\Data\" />
<Folder Include="Areas\Reports\Models\" />
<Folder Include="Areas\Users\Data\" />
<Folder Include="Areas\Users\Models\" />
</ItemGroup>
<ItemGroup>
......
......@@ -22,6 +22,7 @@ namespace Bailun.DC.Web.Controllers
var companyid = -1;
var departmentname = "";
var username = "";
var userid = 0;
var isAllCompany = 0;
//var user = Common.HttpHelper.NetHelper.Request("http://sso.bailuntec.com/GetUserResource");
......@@ -32,6 +33,7 @@ namespace Bailun.DC.Web.Controllers
if (json["statusCode"].ToStr() == "200" && json["result"]["success"].ToString().ToLower() == "true")
{
username = json["result"]["Account"].ToString();
userid = json["result"]["UserId"].ToInt32();
isAllCompany = json["result"]["AllCompany"].ToStr().ToLower() == "false" ? 0 : 1;
int.TryParse(json["result"]["Company"]["Id"].ToString(), out companyid);
if (json["result"]["Department"].ToString() != "null")
......@@ -54,7 +56,8 @@ namespace Bailun.DC.Web.Controllers
});
var listMenu = new Services.MenuServices().ListMenu(username);
//var listMenu = new Services.MenuServices().ListMenu(username);
var listMenu = new Services.MenuServices().ListMenu(userid);
ViewBag.menus = listMenu;
return View();
......
......@@ -19,7 +19,7 @@
<link href="/css/hplus/css/bootstrap.min14ed.css?v=3.3.6" rel="stylesheet">
<link href="/css/hplus/css/font-awesome.min93e3.css?v=4.4.0" rel="stylesheet">
<link href="/css/hplus/css/plugins/bootstrap-table/bootstrap-table.min.css" rel="stylesheet" />
@*<link href="~/js/boostrap-table/bootstrap-table.min.css" rel="stylesheet" />*@
<link href="/css/hplus/css/animate.min.css" rel="stylesheet">
<link href="/css/Layer-2.1/skin/layer.css" rel="stylesheet" />
<!--showloading-->
......@@ -29,8 +29,9 @@
<link href="/css/hplus/css/Popup.css" rel="stylesheet" />
<!--下拉搜索控件样式-->
<link href="/css/bootstrap-select-1.12.4/css/bootstrap-select.css" rel="stylesheet" />
<!--公用的css-->
<link href="/css/css/common.css?=20180312" rel="stylesheet" />
<link href="/css/main.css?=201904090954" rel="stylesheet" />
@RenderSection("css", false)
<style>
......@@ -83,9 +84,10 @@
<script src="/css/hplus/js/jquery.min.js?v=2.1.4"></script>
<script src="/css/hplus/js/bootstrap.min.js?v=3.3.6"></script>
<script src="/css/hplus/js/bootbox.js"></script>
@*<script src="/Content/hplus/js/content.min.js"></script>*@<!--右上侧显示首页图标-->
<script src="/css/hplus/js/content.min.js"></script><!--右上侧显示首页图标-->
<script src="/css/hplus/js/plugins/sweetalert/sweetalert.min.js"></script>
@*<script src="~/js/boostrap-table/bootstrap-table.min.js"></script>*@
<script src="/css/hplus/js/plugins/bootstrap-table/bootstrap-table.min.js"></script>
<script src="/css/hplus/js/plugins/bootstrap-table/bootstrap-table-mobile.min.js"></script>
<script src="/css/hplus/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
......@@ -94,19 +96,19 @@
<script src="/css/hplus/js/plugins/validate/jquery.validate.unobtrusive.min.js"></script>
<!--弹出框layer 控件-->
<script src="/css/Layer-2.1/layer.js"></script>
<script src="/js/Layer-2.1/layer.js"></script>
<script src="/css/laytpl-v1.1/laytpl/laytpl.js"></script>
<!--日期控件laydate-->
<script src="~/css/hplus/js/plugins/layer/laydate v5.0.9/laydate.js" type="text/javascript"></script>
<script src="/css/hplus/js/plugins/layer/laydate v5.0.9/laydate.js" type="text/javascript"></script>
<!--表格数据导出控件-->
<script src="/css/hplus/js/export/tableExport.js"></script>
<script src="/css/hplus/js/export/bootstrap-table-export.js"></script>
<!--下拉选择搜索控件-->
<script src="/css/bootstrap-select-1.12.4/js/bootstrap-select.js"></script>
<script src="~/js/jquery.cookie.js" type="text/javascript"></script>
<!--常用js方法-->
<script src="/css/js/common.js?i=20190618002"></script>
<script src="/js/common.js?i=20190618004"></script>
@RenderSection("scripts", required: false)
<script type="text/javascript">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment