|
|
using System;
|
|
|
using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Reflection;
|
|
|
using System.Text;
|
|
|
using System.Text.RegularExpressions;
|
|
|
using System.Web.Mvc;
|
|
|
using System.Web.Script.Serialization;
|
|
|
using System.Xml.Serialization;
|
|
|
using DSWeb.SoftMng.BLL;
|
|
|
using DSWeb.SoftMng.DBUtility;
|
|
|
using DSWeb.SoftMng.Model;
|
|
|
using DSWeb.SoftMng.Filter;
|
|
|
using DSWeb.Areas.CommMng.Models;
|
|
|
using DSWeb.TruckMng.Helper.Repository;
|
|
|
using HcUtility.Comm;
|
|
|
using DSWeb.EntityDA;
|
|
|
using DSWeb.Models;
|
|
|
using Newtonsoft.Json;
|
|
|
using DSWeb.Areas.CommMng.DAL;
|
|
|
using DSWeb.Areas.SysMng.DAL.SysUser;
|
|
|
|
|
|
namespace DSWeb.SoftMng.Controllers
|
|
|
{
|
|
|
public class AuthController : Controller
|
|
|
{
|
|
|
private readonly sys_secCompanyServerBLL _bll = new sys_secCompanyServerBLL();
|
|
|
private readonly sys_secModuleServerBLL _mbll = new sys_secModuleServerBLL();
|
|
|
private readonly info_clientServerBLL _cbll = new info_clientServerBLL();
|
|
|
private readonly sys_moduleServerBLL _ibll = new sys_moduleServerBLL();
|
|
|
#region View
|
|
|
/// <summary>
|
|
|
/// 首页
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
//[ModuleAuthFilter(Name = "secRegist")]//过滤器
|
|
|
public ActionResult Index()
|
|
|
{
|
|
|
if (Session["CODENAME"] == null)
|
|
|
Response.Redirect("/login.aspx");
|
|
|
ViewData["CODENAME"] = Session["CODENAME"];
|
|
|
return View();
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 角色权限
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public ActionResult RoleAuth()
|
|
|
{
|
|
|
if (Session["CODENAME"] == null)
|
|
|
Response.Redirect("/login.aspx");
|
|
|
ViewData["CODENAME"] = Session["CODENAME"];
|
|
|
return View();
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 角色权限范围
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public ActionResult RoleAuthRange()
|
|
|
{
|
|
|
if (Session["CODENAME"] == null)
|
|
|
Response.Redirect("/login.aspx");
|
|
|
ViewData["CODENAME"] = Session["CODENAME"];
|
|
|
return View();
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 用户角色
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public ActionResult UserRole()
|
|
|
{
|
|
|
if (Session["CODENAME"] == null)
|
|
|
Response.Redirect("/login.aspx");
|
|
|
ViewData["CODENAME"] = Session["CODENAME"];
|
|
|
return View();
|
|
|
}
|
|
|
#endregion
|
|
|
#region Handler
|
|
|
/// <summary>
|
|
|
/// 获取列表
|
|
|
/// </summary>
|
|
|
/// <param name="startIndex">开始索引</param>
|
|
|
/// <param name="limit">分页大小</param>
|
|
|
/// <param name="search">搜索框的值</param>
|
|
|
/// <param name="sortName">排序字段</param>
|
|
|
/// <param name="sortOrder">排序方式</param>
|
|
|
/// <returns></returns>
|
|
|
[SqlKeyWordsFilter(Type = "Action")]//sql 防注入过滤器
|
|
|
public JsonResult GetList(int startIndex, int limit, string search, string sortName, string sortOrder,string companyId, string opUser, string question,string beginRegCount_1, string beginRegCount_2, string beginDate_1, string beginDate_2)
|
|
|
{
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append("1=1");
|
|
|
if (!(String.IsNullOrEmpty(opUser) || String.IsNullOrWhiteSpace(opUser)))
|
|
|
{
|
|
|
//search=Common.Common.string_Encrypt(search, "Dw9pVb9r");
|
|
|
where.Append(string.Format(" And OperUser like '%{0}%'", opUser));
|
|
|
}
|
|
|
if (!(String.IsNullOrEmpty(beginDate_1) || String.IsNullOrWhiteSpace(beginDate_1)))
|
|
|
{
|
|
|
//search=Common.Common.string_Encrypt(search, "Dw9pVb9r");
|
|
|
where.Append(string.Format(" And OperTime>='{0}'", beginDate_1));
|
|
|
}
|
|
|
if (!(String.IsNullOrEmpty(beginDate_2) || String.IsNullOrWhiteSpace(beginDate_2)))
|
|
|
{
|
|
|
//search=Common.Common.string_Encrypt(search, "Dw9pVb9r");
|
|
|
where.Append(string.Format(" And OperTime<='{0}'", beginDate_2));
|
|
|
}
|
|
|
|
|
|
|
|
|
var list = _bll.GetModelList(0, 2000, where.ToString(), String.Format("{0} {1}", sortName, sortOrder));
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
p.GID,
|
|
|
CecrietStr = new JavaScriptSerializer().Deserialize<CecrietStr>(Common.Common.string_Decrypt(p.CompanySecretKey, "Dw9pVb9r")),
|
|
|
p.OperUser,
|
|
|
p.OperTime
|
|
|
};
|
|
|
if (!(String.IsNullOrEmpty(search) || String.IsNullOrWhiteSpace(search)))
|
|
|
{
|
|
|
result = result.Where(p=>p.CecrietStr.Name.Contains(search));
|
|
|
}
|
|
|
if (!(String.IsNullOrEmpty(beginRegCount_1) || String.IsNullOrWhiteSpace(beginRegCount_1)))
|
|
|
{
|
|
|
result = result.Where(p => p.CecrietStr.Times>=Convert.ToInt32(beginRegCount_1));
|
|
|
}
|
|
|
if (!(String.IsNullOrEmpty(beginRegCount_2) || String.IsNullOrWhiteSpace(beginRegCount_2)))
|
|
|
{
|
|
|
result = result.Where(p => p.CecrietStr.Times <= Convert.ToInt32(beginRegCount_2));
|
|
|
}
|
|
|
if (!(String.IsNullOrEmpty(question) || String.IsNullOrWhiteSpace(question)))
|
|
|
{
|
|
|
result = result.Where(p => p.CecrietStr.ModHistory!=null&&p.CecrietStr.ModHistory.Contains(question));
|
|
|
}
|
|
|
var count = result.Count();//总数
|
|
|
result = result.Skip(startIndex).Take(limit);
|
|
|
return Json(new { total = count, rows = result });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 详细列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetDetailList(string parentId, string companyId, bool isroot)
|
|
|
{
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
if (isroot)
|
|
|
where.Append("(PARENTID='0' or PARENTID='1') and TYPE<>1 ");
|
|
|
else
|
|
|
where.Append(string.Format("PARENTID='{0}'", parentId));
|
|
|
|
|
|
var list = _ibll.GetModelList(where.ToString());
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
p.GID,
|
|
|
Name = p.DESCRIPTION,
|
|
|
Code = p.NAME,
|
|
|
Data = GetsecModel(p.GID, companyId),
|
|
|
p.PARENTID,
|
|
|
HasChild = _ibll.GetRecordCount(string.Format("PARENTID='{0}'", p.GID)) > 0
|
|
|
};
|
|
|
return Json(new { total = list.Count, rows = result });
|
|
|
}
|
|
|
|
|
|
public object GetsecModel(string gid, string companyid)
|
|
|
{
|
|
|
var model = _mbll.GetModelList("IdenSecretkey='" + Common.Common.string_Encrypt(gid, "2cP46Gox") + "' AND PID='" + companyid + "'").FirstOrDefault();
|
|
|
if (model != null)
|
|
|
return Json(new
|
|
|
{
|
|
|
SecModel = model,
|
|
|
SecrietStr = new JavaScriptSerializer().Deserialize<SecrietStr>(Common.Common.string_Decrypt(model.ModuleSecretkey, "2cP46Gox"))
|
|
|
}).Data;
|
|
|
return Json(new
|
|
|
{
|
|
|
SecModel = new sys_secModule(),
|
|
|
SecrietStr = new SecrietStr()
|
|
|
{
|
|
|
Id = null,
|
|
|
Name = null,
|
|
|
Times = null,
|
|
|
Enabled = null
|
|
|
}
|
|
|
}).Data;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 保存
|
|
|
/// </summary>
|
|
|
/// <param name="model"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult Save(Model.sys_secCompany model)
|
|
|
{
|
|
|
bool result;
|
|
|
//加密算法{公司主键,公司名称,允许在线人数,是否启用}
|
|
|
CecrietStr smodel = new CecrietStr();
|
|
|
Regex reg = new Regex(@"(?<=Key:')[\w-]+(?=')");
|
|
|
smodel.Id = reg.Match(Request["Name"]).Value;
|
|
|
reg = new Regex(@"(?<=Value:').+(?=')");
|
|
|
smodel.Name = reg.Match(Request["Name"]).Value;
|
|
|
smodel.Times = Convert.ToInt32(Request["Times"]);
|
|
|
smodel.Enabled = Request["Enabled"] != "0";
|
|
|
smodel.MenuControl = Request["MenuControl"] != "0";
|
|
|
if (String.IsNullOrEmpty(model.GID))
|
|
|
{
|
|
|
var toEncrypt = new JavaScriptSerializer().Serialize(smodel);
|
|
|
var secretKey = Common.Common.string_Encrypt(toEncrypt, "Dw9pVb9r");
|
|
|
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
model.CompanySecretKey = secretKey;
|
|
|
model.OperUser = Session["SHOWNAME"].ToString();
|
|
|
model.OperTime = DateTime.Now;
|
|
|
result = _bll.Add(model) > 0;
|
|
|
} //新增
|
|
|
else
|
|
|
{
|
|
|
//获取原数据
|
|
|
var oldModel = _bll.GetModel(model.GID);
|
|
|
smodel.ModHistory = new JavaScriptSerializer().Deserialize<CecrietStr>(Common.Common.string_Decrypt(oldModel.CompanySecretKey, "Dw9pVb9r")).ModHistory;
|
|
|
var toEncrypt = new JavaScriptSerializer().Serialize(smodel);
|
|
|
var secretKey = Common.Common.string_Encrypt(toEncrypt, "Dw9pVb9r");
|
|
|
//类反射
|
|
|
Type type = typeof(Model.sys_secCompany);
|
|
|
PropertyInfo[] piArr = type.GetProperties();
|
|
|
foreach (var pi in piArr)
|
|
|
{
|
|
|
if (Array.IndexOf(Request.Params.AllKeys, pi.Name) < 0)
|
|
|
pi.SetValue(model, pi.GetValue(oldModel, null), null);
|
|
|
}
|
|
|
model.CompanySecretKey = secretKey;
|
|
|
model.OperUser = Session["SHOWNAME"].ToString();
|
|
|
model.OperTime = DateTime.Now;
|
|
|
result = _bll.Update(model) > 0;
|
|
|
|
|
|
//try
|
|
|
//{
|
|
|
|
|
|
// var operUser = Session["SHOWNAME"].ToString();
|
|
|
// var list = _ibll.GetModelList("MODTYPE=0");//获取配置下的模块
|
|
|
// foreach (var item in list)
|
|
|
// {
|
|
|
|
|
|
// SecrietStr pmodel = new SecrietStr();
|
|
|
// pmodel.Id = item.GID;
|
|
|
// pmodel.Name = item.DESCRIPTION;
|
|
|
// pmodel.Times = smodel.Times;
|
|
|
// pmodel.Enabled =true;
|
|
|
// toEncrypt = new JavaScriptSerializer().Serialize(pmodel);
|
|
|
// secretKey = Common.Common.string_Encrypt(toEncrypt, "2cP46Gox");
|
|
|
|
|
|
// sys_secModule detailmodel = new sys_secModule();
|
|
|
// detailmodel.GID = Guid.NewGuid().ToString();
|
|
|
// detailmodel.ModuleSecretkey = secretKey;
|
|
|
// detailmodel.OperUser = operUser;
|
|
|
// detailmodel.OperTime = DateTime.Now;
|
|
|
// detailmodel.IdenSecretkey = Common.Common.string_Encrypt(pmodel.Id, "2cP46Gox");
|
|
|
// detailmodel.PID = model.GID;
|
|
|
// var ymodel = _mbll.GetModelList("IdenSecretkey='" +
|
|
|
// Common.Common.string_Encrypt(pmodel.Id, "2cP46Gox") + "' AND PID='" +
|
|
|
// model.GID + "'").FirstOrDefault();
|
|
|
// if (ymodel != null)
|
|
|
// {
|
|
|
// detailmodel.GID = ymodel.GID;
|
|
|
// _mbll.Update(detailmodel);
|
|
|
// }
|
|
|
// else
|
|
|
// _mbll.Add(detailmodel);
|
|
|
// }
|
|
|
|
|
|
//}
|
|
|
//catch (Exception e)
|
|
|
//{
|
|
|
// result = false;
|
|
|
//}
|
|
|
|
|
|
|
|
|
} //修改
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 保存从实例
|
|
|
/// </summary>
|
|
|
/// <param name="model"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult SaveDetail(Model.sys_secModule model)
|
|
|
{
|
|
|
bool result;
|
|
|
//加密算法{模块主键,模块名称,允许使用人数,是否启用}
|
|
|
SecrietStr smodel = new SecrietStr();
|
|
|
smodel.Id = Request["SecId"];
|
|
|
smodel.Name = Request["Name"];
|
|
|
smodel.Times = Convert.ToInt32(Request["Times"]);
|
|
|
smodel.Enabled = Request["Enabled"] != "0";
|
|
|
var toEncrypt = new JavaScriptSerializer().Serialize(smodel);
|
|
|
var secretKey = Common.Common.string_Encrypt(toEncrypt, "2cP46Gox");
|
|
|
if (String.IsNullOrEmpty(model.GID))
|
|
|
{
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
model.ModuleSecretkey = secretKey;
|
|
|
model.OperUser = Session["SHOWNAME"].ToString();
|
|
|
model.OperTime = DateTime.Now;
|
|
|
model.IdenSecretkey = Common.Common.string_Encrypt(smodel.Id, "2cP46Gox");
|
|
|
result = _mbll.Add(model) > 0;
|
|
|
} //新增
|
|
|
else
|
|
|
{
|
|
|
//获取原数据
|
|
|
var oldModel = _mbll.GetModel(model.GID);
|
|
|
//类反射
|
|
|
Type type = typeof(Model.sys_secModule);
|
|
|
PropertyInfo[] piArr = type.GetProperties();
|
|
|
foreach (var pi in piArr)
|
|
|
{
|
|
|
if (Array.IndexOf(Request.Params.AllKeys, pi.Name) < 0)
|
|
|
pi.SetValue(model, pi.GetValue(oldModel, null), null);
|
|
|
}
|
|
|
model.ModuleSecretkey = secretKey;
|
|
|
model.IdenSecretkey = Common.Common.string_Encrypt(smodel.Id, "2cP46Gox");
|
|
|
model.OperUser = Session["SHOWNAME"].ToString();
|
|
|
model.OperTime = DateTime.Now;
|
|
|
result = _mbll.Update(model) > 0;
|
|
|
} //修改
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 删除
|
|
|
/// </summary>
|
|
|
/// <param name="ids"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult Delete(string ids)
|
|
|
{
|
|
|
bool result = _bll.DeleteListWhere(string.Format("GID in({0})", ids)) > 0;
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 删除
|
|
|
/// </summary>
|
|
|
/// <param name="ids"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult DeleteDetail(string ids)
|
|
|
{
|
|
|
bool result = _mbll.DeleteListWhere(string.Format("GID in({0})", ids)) > 0;
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 懒加载公司信息
|
|
|
/// </summary>
|
|
|
/// <param name="pageIndex"></param>
|
|
|
/// <param name="pageSize"></param>
|
|
|
/// <param name="query"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetCompanyList(int pageIndex, int pageSize, string query)
|
|
|
{
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
if (!String.IsNullOrEmpty(query))
|
|
|
where.Append(string.Format("SHORTNAME LIKE '%{0}%' OR CODENAME LIKE '%{0}%' OR DESCRIPTION LIKE '%{0}%'", query));
|
|
|
var list = _cbll.GetModelList(pageIndex, pageSize, where.ToString(), "SHORTNAME collate Chinese_PRC_CS_AS_KS_WS");
|
|
|
var total = _cbll.GetRecordCount(where.ToString());
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = "{Key:'" + p.GID + "', Value:'" + p.SHORTNAME + "'}",
|
|
|
text = p.SHORTNAME
|
|
|
};
|
|
|
return Json(new { data = result, total }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取角色权限范围列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetAuthRangeList(string roleid, string sortOrder, string sortName, string search)
|
|
|
{
|
|
|
user_authority_infoBLL ibll = new user_authority_infoBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append("ISDELETE=0");
|
|
|
if (!(String.IsNullOrEmpty(search) || String.IsNullOrWhiteSpace(search)))
|
|
|
where.Append(string.Format(" And DESCRIPTION like '%{0}%'", search));
|
|
|
|
|
|
var list = ibll.GetModelList(0,9999,where.ToString(), String.Format("{0} {1}", sortName, sortOrder));
|
|
|
|
|
|
//var list = ibll.GetModelList(string.Format(where + " ORDER BY {0} {1}", sortName, sortOrder));
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
AUTHORITYID = p.GID,
|
|
|
NAME = p.DESCRIPTION,
|
|
|
VISIBLERANGE = 4,
|
|
|
OPERATERANGE = 4
|
|
|
};
|
|
|
if (!string.IsNullOrEmpty(roleid))
|
|
|
{
|
|
|
user_authority_rangeBLL rbll = new user_authority_rangeBLL();
|
|
|
var list1 = rbll.GetModelList("USERID='" + roleid + "'");
|
|
|
var update = from p in list1
|
|
|
select new
|
|
|
{
|
|
|
p.GID,
|
|
|
p.AUTHORITYID,
|
|
|
p.VISIBLERANGE,
|
|
|
p.OPERATERANGE,
|
|
|
VISIBLERELATION = GetRelation(p.VISIBLERANGE, p.AUTHORITYID, roleid,"vs"),
|
|
|
OPERATERELATION = GetRelation(p.OPERATERANGE, p.AUTHORITYID, roleid,"op")
|
|
|
};
|
|
|
return Json(new { result, update });
|
|
|
}
|
|
|
return Json(new { result, update = new ArrayList() });
|
|
|
}
|
|
|
private string GetRelation(int? type, string authority, string roleid,string rangtype)
|
|
|
{
|
|
|
var israngstr = " and OPERATERANGE=1 ";
|
|
|
if (rangtype =="vs") israngstr = " and VISIBLERANGE=1 ";
|
|
|
|
|
|
JavaScriptSerializer json = new JavaScriptSerializer();
|
|
|
user_authority_range_companyBLL rcbll = new user_authority_range_companyBLL();
|
|
|
user_authority_range_opBLL robll = new user_authority_range_opBLL();
|
|
|
var obj = new Object();
|
|
|
if (type == 5)
|
|
|
{
|
|
|
obj = from q in rcbll.GetModelList("USERID='" + roleid + "' AND AUTHORITYID='" + authority + "'"+ israngstr)
|
|
|
select new
|
|
|
{
|
|
|
id = q.COMPANYID,
|
|
|
name = "comp"
|
|
|
};
|
|
|
}
|
|
|
if (type == 6)
|
|
|
{
|
|
|
obj = from q in robll.GetModelList("USERID='" + roleid + "' AND AUTHORITYID='" + authority + "'"+ israngstr)
|
|
|
select new
|
|
|
{
|
|
|
id = q.OPID,
|
|
|
name = "user"
|
|
|
};
|
|
|
}
|
|
|
return json.Serialize(obj);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取角色下的权限
|
|
|
/// </summary>
|
|
|
/// <param name="pid"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetRoleModuleList(string pid)
|
|
|
{
|
|
|
sys_moduleBLL bll = new sys_moduleBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
var list = bll.GetModelList("GID IN (SELECT AuthorityID FROM sys_roleauth WHERE PID='" + pid + "' AND TYPE=1)");
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = p.GID,
|
|
|
name = p.DESCRIPTION,
|
|
|
pId = p.PARENTID
|
|
|
};
|
|
|
return Json(result);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 批量配置模块
|
|
|
/// </summary>
|
|
|
/// <param name="companyid"></param>
|
|
|
/// <param name="modtype"></param>
|
|
|
/// <param name="enabled"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult SetMod(string companyid, int modtype, bool enabled)
|
|
|
{
|
|
|
var result = true;
|
|
|
try
|
|
|
{
|
|
|
var cmodel = _bll.GetModel(companyid);
|
|
|
CecrietStr cModel = new JavaScriptSerializer().Deserialize<CecrietStr>(
|
|
|
Common.Common.string_Decrypt(cmodel.CompanySecretKey, "Dw9pVb9r"));
|
|
|
var operUser = Session["SHOWNAME"].ToString();
|
|
|
var list = _ibll.GetModelList("MODTYPE=" + modtype);//获取配置下的模块
|
|
|
foreach (var item in list)
|
|
|
{
|
|
|
|
|
|
SecrietStr pmodel = new SecrietStr();
|
|
|
pmodel.Id = item.GID;
|
|
|
pmodel.Name = item.DESCRIPTION;
|
|
|
pmodel.Times = cModel.Times;
|
|
|
pmodel.Enabled = enabled;
|
|
|
var toEncrypt = new JavaScriptSerializer().Serialize(pmodel);
|
|
|
var secretKey = Common.Common.string_Encrypt(toEncrypt, "2cP46Gox");
|
|
|
|
|
|
sys_secModule model = new sys_secModule();
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
model.ModuleSecretkey = secretKey;
|
|
|
model.OperUser = operUser;
|
|
|
model.OperTime = DateTime.Now;
|
|
|
model.IdenSecretkey = Common.Common.string_Encrypt(pmodel.Id, "2cP46Gox");
|
|
|
model.PID = companyid;
|
|
|
var ymodel = _mbll.GetModelList("IdenSecretkey='" +
|
|
|
Common.Common.string_Encrypt(pmodel.Id, "2cP46Gox") + "' AND PID='" +
|
|
|
companyid + "'").FirstOrDefault();
|
|
|
if (ymodel != null)
|
|
|
{
|
|
|
model.GID = ymodel.GID;
|
|
|
_mbll.Update(model);
|
|
|
}
|
|
|
else
|
|
|
_mbll.Add(model);
|
|
|
}
|
|
|
//设置模块历史
|
|
|
var hisList = cModel.ModHistory;
|
|
|
List<string> modHis = new List<string>();
|
|
|
if (!string.IsNullOrEmpty(hisList))
|
|
|
modHis = hisList.Split(',').ToList();
|
|
|
if (enabled)
|
|
|
{
|
|
|
if (!modHis.Contains(modtype.ToString()))
|
|
|
modHis.Add(modtype.ToString());
|
|
|
}
|
|
|
else
|
|
|
modHis.Remove(modtype.ToString());
|
|
|
|
|
|
cModel.ModHistory = modHis.Count > 0 ? string.Join(",", modHis) : "";
|
|
|
var cecretKey = new JavaScriptSerializer().Serialize(cModel);
|
|
|
cmodel.CompanySecretKey = Common.Common.string_Encrypt(cecretKey, "Dw9pVb9r");
|
|
|
_bll.Update(cmodel);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
result = false;
|
|
|
}
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取导出sql
|
|
|
/// </summary>
|
|
|
/// <param name="ids"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetSql(string ids)
|
|
|
{
|
|
|
var list = _bll.GetModelList(string.Format("GID in({0})", ids));
|
|
|
return Json(list);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 懒加载权限信息
|
|
|
/// </summary>
|
|
|
/// <param name="pageIndex"></param>
|
|
|
/// <param name="pageSize"></param>
|
|
|
/// <param name="query"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetAuthList(int pageIndex, int pageSize, string query)
|
|
|
{
|
|
|
sys_moduleBLL ibll = new sys_moduleBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
if (!String.IsNullOrEmpty(query))
|
|
|
where.Append(string.Format("NAME LIKE '%{0}%' OR DESCRIPTION LIKE '%{0}%'", query));
|
|
|
var list = ibll.GetModelList(pageIndex, pageSize, where.ToString(), "DESCRIPTION collate Chinese_PRC_CS_AS_KS_WS");
|
|
|
var total = ibll.GetRecordCount(where.ToString());
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = p.GID,
|
|
|
text = p.DESCRIPTION
|
|
|
};
|
|
|
return Json(new { data = result, total }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取角色列表
|
|
|
/// </summary>
|
|
|
/// <param name="startIndex"></param>
|
|
|
/// <param name="limit"></param>
|
|
|
/// <param name="search"></param>
|
|
|
/// <param name="sortName"></param>
|
|
|
/// <param name="sortOrder"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetRoleList(int startIndex, int limit, string search, string sortName, string sortOrder)
|
|
|
{
|
|
|
sys_roleauthBLL mbll = new sys_roleauthBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append("Type=0");
|
|
|
if (!(String.IsNullOrEmpty(search) || String.IsNullOrWhiteSpace(search)))
|
|
|
where.Append(string.Format(" And Name like '%{0}%'", search));
|
|
|
|
|
|
|
|
|
var list = mbll.GetModelList(startIndex, limit, where.ToString(), String.Format("{0} {1}", sortName, sortOrder));
|
|
|
var count = mbll.GetRecordCount(where.ToString());//总数
|
|
|
return Json(new { total = count, rows = list });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 保存角色
|
|
|
/// </summary>
|
|
|
/// <param name="model"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult SaveRole(sys_roleauth model)
|
|
|
{
|
|
|
bool result;
|
|
|
sys_roleauthBLL mbll = new sys_roleauthBLL();
|
|
|
if (String.IsNullOrEmpty(model.GID))
|
|
|
{
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
result = mbll.Add(model) > 0;
|
|
|
} //新增
|
|
|
else
|
|
|
{
|
|
|
//获取原数据
|
|
|
var oldModel = mbll.GetModel(model.GID);
|
|
|
//类反射
|
|
|
Type type = typeof(Model.sys_roleauth);
|
|
|
PropertyInfo[] piArr = type.GetProperties();
|
|
|
foreach (var pi in piArr)
|
|
|
{
|
|
|
if (Array.IndexOf(Request.Params.AllKeys, pi.Name) < 0)
|
|
|
pi.SetValue(model, pi.GetValue(oldModel, null), null);
|
|
|
}
|
|
|
result = mbll.Update(model) > 0;
|
|
|
} //修改
|
|
|
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 删除角色
|
|
|
/// </summary>
|
|
|
/// <param name="ids"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult RoleAuthDelete(string ids)
|
|
|
{
|
|
|
sys_roleauthBLL mbll = new sys_roleauthBLL();
|
|
|
user_authority_rangeBLL rbll = new user_authority_rangeBLL();
|
|
|
user_authority_range_companyBLL rcbll = new user_authority_range_companyBLL();
|
|
|
user_authority_range_opBLL robll = new user_authority_range_opBLL();
|
|
|
bool result = mbll.DeleteListWhere(string.Format("GID in({0})", ids)) > 0;
|
|
|
user_roleBLL ubll = new user_roleBLL();
|
|
|
//删除关系表数据
|
|
|
bool result1 = ubll.DeleteListWhere(string.Format("ROLEID in({0})", ids)) > 0;
|
|
|
//删除权限范围角色权限关系数据
|
|
|
bool result2 = rbll.DeleteListWhere(string.Format("USERID in({0})", ids)) > 0;
|
|
|
//删除公司关联表数据
|
|
|
bool result3 = rcbll.DeleteListWhere(string.Format("USERID in({0})", ids)) > 0;
|
|
|
//删除人员关联表数据
|
|
|
bool result4 = robll.DeleteListWhere(string.Format("USERID in({0})", ids)) > 0;
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 复制新建角色
|
|
|
/// </summary>
|
|
|
/// <param name="ids"></param>
|
|
|
/// <param name="newname"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult CopyRole(sys_roleauth model)
|
|
|
{
|
|
|
sys_roleauthBLL mbll = new sys_roleauthBLL();
|
|
|
user_authority_rangeBLL rbll = new user_authority_rangeBLL();
|
|
|
user_authority_range_companyBLL rcbll = new user_authority_range_companyBLL();
|
|
|
user_authority_range_opBLL robll = new user_authority_range_opBLL();
|
|
|
|
|
|
bool result = false;
|
|
|
|
|
|
var role = mbll.GetModel(model.GID); ;
|
|
|
role.GID = Guid.NewGuid().ToString();
|
|
|
role.Name = model.Name;
|
|
|
//return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
|
|
|
//复制新增一条角色信息
|
|
|
result=mbll.Add(role)>0;
|
|
|
|
|
|
var oldroleid = model.GID;
|
|
|
if (result)
|
|
|
{
|
|
|
var rolelist = mbll.GetModelList(string.Format("PID= '{0}' ", oldroleid));
|
|
|
foreach (var item in rolelist)
|
|
|
{
|
|
|
item.GID = Guid.NewGuid().ToString();
|
|
|
item.PID = role.GID;
|
|
|
result = mbll.Add(item) > 0;
|
|
|
if (!result) break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (result)
|
|
|
{
|
|
|
//复制增加 权限范围角色权限关系数据
|
|
|
var authority_rangelist = rbll.GetModelList(string.Format("USERID in('{0}')", oldroleid));
|
|
|
foreach (var item in authority_rangelist)
|
|
|
{
|
|
|
item.GID = Guid.NewGuid().ToString();
|
|
|
item.USERID = role.GID;
|
|
|
result=rbll.Add(item)> 0;
|
|
|
if (!result) break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//公司关联表数据
|
|
|
if (result)
|
|
|
{
|
|
|
var user_authority_range_companylist = rcbll.GetModelList(string.Format("USERID in('{0}')", oldroleid));
|
|
|
foreach (var item in user_authority_range_companylist)
|
|
|
{
|
|
|
item.GID = Guid.NewGuid().ToString();
|
|
|
item.USERID = role.GID;
|
|
|
result = rcbll.Add(item)>0;
|
|
|
if (!result) break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
//人员关联表数据
|
|
|
if (result)
|
|
|
{
|
|
|
var user_authority_range_oplist = robll.GetModelList(string.Format("USERID in('{0}')", oldroleid));
|
|
|
foreach (var item in user_authority_range_oplist)
|
|
|
{
|
|
|
item.GID = Guid.NewGuid().ToString();
|
|
|
item.USERID = role.GID;
|
|
|
result = robll.Add(item)>0;
|
|
|
if (!result) break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 删除权限
|
|
|
/// </summary>
|
|
|
/// <param name="ids"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult RoleAuthDelete2(string roleid, string ids)
|
|
|
{
|
|
|
var module = new Modules.ModuleGridSource();
|
|
|
user_roleBLL ubll = new user_roleBLL();
|
|
|
sys_roleauthBLL mbll = new sys_roleauthBLL();
|
|
|
|
|
|
bool result = mbll.DeleteListWhere(string.Format("PID ='{0}' AND AuthorityID IN({1})", roleid, ids)) > 0;
|
|
|
//所有拥有此角色的人员删除该权限
|
|
|
var list = ubll.GetModelList("ROLEID='" + roleid + "'");
|
|
|
string[] delItems = ids.Split(',');
|
|
|
foreach (var item in delItems)
|
|
|
{
|
|
|
foreach (var p in list)
|
|
|
module.RemoveUserModule(p.USERID, item.Replace("\'", ""));
|
|
|
}
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取人员树型
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetUsertreeView()
|
|
|
{
|
|
|
StringBuilder userBuilder = new StringBuilder();
|
|
|
IList<CompanyEntity> companyEntities = new List<CompanyEntity>();
|
|
|
CompanyDA companyDA = new CompanyDA();
|
|
|
|
|
|
companyEntities = companyDA.GetAllCompany();
|
|
|
if (companyEntities.Count > 0)
|
|
|
{
|
|
|
userBuilder.Append("[");
|
|
|
for (int k = 0; k < companyEntities.Count; k++)
|
|
|
{
|
|
|
if (k == 0)
|
|
|
{
|
|
|
userBuilder.Append("{id:\"" + companyEntities[k].GID + "\",");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
userBuilder.Append(",{id:\"" + companyEntities[k].GID + "\",");
|
|
|
}
|
|
|
userBuilder.Append("name:\"" + companyEntities[k].NAME + "\",nocheck:false");
|
|
|
IList<SysDeptEntity> sysDeptEntities = new List<SysDeptEntity>();
|
|
|
|
|
|
sysDeptEntities = new SysDeptDA().GetDepartmentByCompanyID(companyEntities[k].GID);
|
|
|
|
|
|
if (sysDeptEntities.Count > 0)
|
|
|
{
|
|
|
userBuilder.Append(",childred:[");
|
|
|
for (int j = 0; j < sysDeptEntities.Count; j++)
|
|
|
{
|
|
|
userBuilder.Append("{id:\"" + sysDeptEntities[j].GID + "\",");
|
|
|
userBuilder.Append("name:\"" + sysDeptEntities[j].DEPTNAME + "\",nocheck:false");
|
|
|
IList<UserEntity> userEntities = new List<UserEntity>();
|
|
|
|
|
|
userEntities = new UserDA().GetUserByCompanyAndDept(companyEntities[k].GID, sysDeptEntities[j].DEPTNAME);
|
|
|
|
|
|
if (userEntities.Count > 0)
|
|
|
{
|
|
|
userBuilder.Append(",childred:[");
|
|
|
for (int i = 0; i < userEntities.Count; i++)
|
|
|
{
|
|
|
userBuilder.Append("{id:\"" + userEntities[i].Gid + "\",");
|
|
|
userBuilder.Append("name:\"" + userEntities[i].ShowName + "\"");
|
|
|
|
|
|
if (i == userEntities.Count - 1)
|
|
|
{
|
|
|
userBuilder.Append("}");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
userBuilder.Append("},");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
userBuilder.Append("]");
|
|
|
}
|
|
|
|
|
|
if (j == sysDeptEntities.Count - 1)
|
|
|
{
|
|
|
userBuilder.Append("}");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
userBuilder.Append("},");
|
|
|
}
|
|
|
}
|
|
|
userBuilder.Append("]");
|
|
|
}
|
|
|
userBuilder.Append("}");
|
|
|
|
|
|
}
|
|
|
userBuilder.Append("]");
|
|
|
}
|
|
|
return Json(userBuilder.ToString());
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 设置角色
|
|
|
/// </summary>
|
|
|
/// <param name="userid"></param>
|
|
|
/// <param name="roleid"></param>
|
|
|
/// <param name="type"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult SetRole(string userid, string roleid, int type)
|
|
|
{
|
|
|
sys_roleauthBLL mbll = new sys_roleauthBLL();
|
|
|
var authlist = mbll.GetModelList("Type=1 And PID ='" + roleid + "'");
|
|
|
var module = new Modules.ModuleGridSource();
|
|
|
string msg = "";
|
|
|
try
|
|
|
{
|
|
|
foreach (var item in authlist)
|
|
|
{
|
|
|
if (type == 0)
|
|
|
{
|
|
|
var m = module.RemoveUserModule(userid, item.AuthorityID);
|
|
|
if (m != "1") msg += m + "<br/>";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var m = module.AddUserModule(userid, item.AuthorityID);
|
|
|
if (m != "1") msg += m + "<br/>";
|
|
|
}
|
|
|
}
|
|
|
//绑定用户角色表
|
|
|
//dosomething
|
|
|
return Json(msg);
|
|
|
}
|
|
|
catch (Exception se)
|
|
|
{
|
|
|
return Json(se.Message);
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 设置权限范围
|
|
|
/// </summary>
|
|
|
/// <param name="userid"></param>
|
|
|
/// <param name="roleid"></param>
|
|
|
/// <param name="type"></param>
|
|
|
/// <param name="view"></param>
|
|
|
/// <param name="opera"></param>
|
|
|
/// <param name="view_check"></param>
|
|
|
/// <param name="opera_check"></param>
|
|
|
/// <returns></returns>
|
|
|
public void SetRange(string userid, string roleid, int type)
|
|
|
{
|
|
|
sys_roleauthBLL mbll = new sys_roleauthBLL();
|
|
|
user_authority_rangeBLL arbll = new user_authority_rangeBLL();
|
|
|
user_authority_range_companyBLL rcbll = new user_authority_range_companyBLL();
|
|
|
user_authority_range_opBLL robll = new user_authority_range_opBLL();
|
|
|
arbll.DeleteListWhere("USERID='" + userid + "' ");
|
|
|
//删除之前的配置(公司)
|
|
|
rcbll.DeleteListWhere("USERID='" + userid + "' ");
|
|
|
//删除之前的配置(人员)
|
|
|
robll.DeleteListWhere("USERID='" + userid + "' ");
|
|
|
user_roleBLL ubll = new user_roleBLL();
|
|
|
var listrole = ubll.GetModelList("USERID='" + userid + "'");
|
|
|
foreach (var role in listrole)
|
|
|
{
|
|
|
var list = arbll.GetModelList("USERID='" + role.ROLEID + "'");
|
|
|
foreach (var item in list)
|
|
|
{
|
|
|
SetAuthRange(userid, item.AUTHORITYID, item.VISIBLERANGE, item.OPERATERANGE, role.ROLEID);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
//if (type == 0) //移除角色
|
|
|
//{
|
|
|
// //删除权限范围 type=0
|
|
|
// arbll.DeleteListWhere("USERID='" + userid + "' AND AUTHORITYID in (SELECT AUTHORITYID FROM user_authority_range WHERE USERID='" + roleid + "')");
|
|
|
// //删除之前的配置(公司)
|
|
|
// rcbll.DeleteListWhere("USERID='" + userid + "' AND AUTHORITYID in (SELECT AUTHORITYID FROM user_authority_range WHERE USERID='" + roleid + "')");
|
|
|
// //删除之前的配置(人员)
|
|
|
// robll.DeleteListWhere("USERID='" + userid + "' AND AUTHORITYID in (SELECT AUTHORITYID FROM user_authority_range WHERE USERID='" + roleid + "')");
|
|
|
// user_roleBLL ubll = new user_roleBLL();
|
|
|
// var listrole = ubll.GetModelList("USERID='" + userid + "'");
|
|
|
// foreach (var role in listrole)
|
|
|
// {
|
|
|
// var list = arbll.GetModelList("USERID='" + role.ROLEID + "'");
|
|
|
// foreach (var item in list)
|
|
|
// {
|
|
|
// SetAuthRange(userid, item.AUTHORITYID, item.VISIBLERANGE, item.OPERATERANGE, roleid);
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
//}
|
|
|
//if (type == 1)//添加角色
|
|
|
//{
|
|
|
// //增加权限范围
|
|
|
// var list = arbll.GetModelList("USERID='" + roleid + "'");
|
|
|
// foreach (var item in list)
|
|
|
// {
|
|
|
// SetAuthRange(userid, item.AUTHORITYID, item.VISIBLERANGE, item.OPERATERANGE, roleid);
|
|
|
// }
|
|
|
//}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 设置单独权限的范围
|
|
|
/// </summary>
|
|
|
private void SetAuthRange(string userid, string authority, int? view, int? opera, string roleid)
|
|
|
{
|
|
|
user_authority_rangeBLL arbll = new user_authority_rangeBLL();
|
|
|
var model = arbll.GetModelList("USERID='" + userid + "' AND AUTHORITYID='" + authority + "'").FirstOrDefault();
|
|
|
if (model != null)
|
|
|
{
|
|
|
if (model.VISIBLERANGE == 5 || view == 5)
|
|
|
model.VISIBLERANGE = 5;
|
|
|
else if (model.VISIBLERANGE == 6 || view == 6)
|
|
|
model.VISIBLERANGE = 6;
|
|
|
else if (model.VISIBLERANGE >= view)
|
|
|
model.VISIBLERANGE = view;
|
|
|
|
|
|
if (model.OPERATERANGE == 5 || opera == 5)
|
|
|
model.OPERATERANGE = 5;
|
|
|
else if (model.OPERATERANGE == 6 || opera == 6)
|
|
|
model.OPERATERANGE = 6;
|
|
|
else if (model.OPERATERANGE >= opera)
|
|
|
model.OPERATERANGE = opera;
|
|
|
model.MODIFIEDTIME = DateTime.Now;
|
|
|
model.MODIFIEDUSER = Session["USERID"].ToString();
|
|
|
arbll.Update(model);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
model = new user_authority_range();
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
model.USERID = userid;
|
|
|
model.AUTHORITYID = authority;
|
|
|
model.VISIBLERANGE = view;
|
|
|
model.OPERATERANGE = opera;
|
|
|
model.CREATEUSER = Session["USERID"].ToString();
|
|
|
model.CREATETIME = DateTime.Now;
|
|
|
arbll.Add(model);
|
|
|
}
|
|
|
var data_view = GetRelation(model.VISIBLERANGE, model.AUTHORITYID, roleid,"vs");
|
|
|
var data_opera = GetRelation(model.OPERATERANGE, model.AUTHORITYID, roleid,"op");
|
|
|
SetCompUser(model.VISIBLERANGE, model.OPERATERANGE, model.AUTHORITYID, model.USERID, data_view, data_opera);
|
|
|
}
|
|
|
public void SetCompanyRange(string authorityid, string userid, int type, string list)
|
|
|
{
|
|
|
//var israngstr = " and OPERATERANGE=1 ";
|
|
|
//if (type == 0) israngstr = " and VISIBLERANGE=1 ";
|
|
|
user_authority_range_companyBLL rcbll = new user_authority_range_companyBLL();
|
|
|
var plist = new JavaScriptSerializer().Deserialize<List<modeuleClass>>(list);
|
|
|
foreach (var p in plist)
|
|
|
{
|
|
|
var umodel = rcbll.GetModelList("USERID='" + userid + "' AND AUTHORITYID='" + authorityid + "' AND COMPANYID='" + p.id + "'").FirstOrDefault();
|
|
|
if (umodel != null)
|
|
|
{
|
|
|
if (type == 0)
|
|
|
umodel.VISIBLERANGE = 1;
|
|
|
else
|
|
|
umodel.OPERATERANGE = 1;
|
|
|
umodel.MODIFIEDTIME = DateTime.Now;
|
|
|
umodel.MODIFIEDUSER = Session["USERID"].ToString();
|
|
|
rcbll.Update(umodel);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
umodel = new user_authority_range_company();
|
|
|
umodel.GID = Guid.NewGuid().ToString();
|
|
|
umodel.USERID = userid;
|
|
|
umodel.AUTHORITYID = authorityid;
|
|
|
umodel.COMPANYID = p.id;
|
|
|
if (type == 0)
|
|
|
{
|
|
|
umodel.VISIBLERANGE = 1;
|
|
|
umodel.OPERATERANGE = 0;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
umodel.VISIBLERANGE = 0;
|
|
|
umodel.OPERATERANGE = 1;
|
|
|
}
|
|
|
umodel.CREATETIME = DateTime.Now;
|
|
|
umodel.CREATEUSER = Session["USERID"].ToString();
|
|
|
rcbll.Add(umodel);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 保存角色权限配置
|
|
|
/// </summary>
|
|
|
/// type:0 - 角色权限 1:角色权限范围
|
|
|
/// <returns></returns>
|
|
|
public void SetUserRange(string authorityid, string userid, int type, string list)
|
|
|
{
|
|
|
//var sqlstr = " update user_authority_range_op set OPERATERANGE=0 where USERID = '" + userid + "' AND AUTHORITYID = '" + authorityid + "'";
|
|
|
//if (type == 0) sqlstr = " update user_authority_range_op set VISIBLERANGE=0 where USERID = '" + userid + "' AND AUTHORITYID = '" + authorityid + "'";
|
|
|
|
|
|
//var _r = BasicDataRefDAL.ExecSql(sqlstr);
|
|
|
user_authority_range_opBLL robll = new user_authority_range_opBLL();
|
|
|
|
|
|
var omodellist = robll.GetModelList("USERID='" + userid + "' AND AUTHORITYID='" + authorityid + "'");
|
|
|
var qlist = new JavaScriptSerializer().Deserialize<List<modeuleClass>>(list);
|
|
|
foreach (var p in qlist)
|
|
|
{
|
|
|
var omodel = omodellist.Find(t => t.OPID == p.id);
|
|
|
if (omodel != null)
|
|
|
{
|
|
|
if (type == 0)
|
|
|
omodel.VISIBLERANGE = 1;
|
|
|
else
|
|
|
omodel.OPERATERANGE = 1;
|
|
|
omodel.MODIFIEDTIME = DateTime.Now;
|
|
|
omodel.MODIFIEDUSER = Session["USERID"].ToString();
|
|
|
robll.Update(omodel);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
omodel = new user_authority_range_op();
|
|
|
omodel.GID = Guid.NewGuid().ToString();
|
|
|
omodel.USERID = userid;
|
|
|
omodel.AUTHORITYID = authorityid;
|
|
|
omodel.OPID = p.id;
|
|
|
if (type == 0)
|
|
|
{
|
|
|
omodel.VISIBLERANGE = 1;
|
|
|
omodel.OPERATERANGE = 0;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
omodel.VISIBLERANGE = 0;
|
|
|
omodel.OPERATERANGE = 1;
|
|
|
}
|
|
|
omodel.CREATETIME = DateTime.Now;
|
|
|
omodel.CREATEUSER = Session["USERID"].ToString();
|
|
|
robll.Add(omodel);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 角色添加权限
|
|
|
/// </summary>
|
|
|
/// <param name="roleid"></param>
|
|
|
/// <param name="modulelist"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult SaveRoleAuth(string roleid, string modulelist)
|
|
|
{
|
|
|
var module = new Modules.ModuleGridSource();
|
|
|
sys_roleauthBLL mbll = new sys_roleauthBLL();
|
|
|
user_roleBLL ubll = new user_roleBLL();
|
|
|
try
|
|
|
{
|
|
|
var data = new JavaScriptSerializer().Deserialize<List<modeuleClass>>(modulelist);
|
|
|
var list = ubll.GetModelList("ROLEID='" + roleid + "'");
|
|
|
|
|
|
//20200225 首先检查拥有该角色的所有人 能否获得该权限范围
|
|
|
var useridlist = "";
|
|
|
foreach (var user in list) {
|
|
|
if (useridlist != "") useridlist += ",";
|
|
|
useridlist += user.GID;
|
|
|
}
|
|
|
|
|
|
var checkresult = SysUserDAL.CheckOPRange(data, useridlist);
|
|
|
if (!checkresult.Success) {
|
|
|
return Json(new { success = false, msg = checkresult.Message });
|
|
|
}
|
|
|
|
|
|
foreach (var item in data)
|
|
|
{
|
|
|
sys_roleauth model = new sys_roleauth();
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
model.AuthorityID = item.id;//模块id
|
|
|
model.Name = item.name;
|
|
|
model.PID = roleid;
|
|
|
model.Type = 1;//一般权限
|
|
|
mbll.Add(model);
|
|
|
//所有拥有此角色的人员添加该权限
|
|
|
|
|
|
foreach (var p in list)
|
|
|
module.AddUserModule(p.USERID, item.id);
|
|
|
}
|
|
|
return Json(new { success = true });
|
|
|
}
|
|
|
catch (Exception se)
|
|
|
{
|
|
|
return Json(new { success = false, msg = se.Message });
|
|
|
}
|
|
|
}
|
|
|
//获取全部角色
|
|
|
public JsonResult GetRoleView()
|
|
|
{
|
|
|
sys_roleauthBLL mbll = new sys_roleauthBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append("Type=0");
|
|
|
var list = mbll.GetModelList(where.ToString());
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = p.GID,
|
|
|
name = p.Name
|
|
|
};
|
|
|
return Json(result);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取人员对应的角色
|
|
|
/// </summary>
|
|
|
/// <param name="userid"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetUserRoleChecked(string userid)
|
|
|
{
|
|
|
sys_roleauthBLL mbll = new sys_roleauthBLL();
|
|
|
StringBuilder where = new StringBuilder();
|
|
|
where.Append(string.Format("Type=0 and GID in (SELECT ROLEID FROM USER_ROLE WHERE USERID ='{0}')", userid));
|
|
|
var list = mbll.GetModelList(where.ToString());
|
|
|
var result = from p in list
|
|
|
select new
|
|
|
{
|
|
|
id = p.GID,
|
|
|
name = p.Name
|
|
|
};
|
|
|
return Json(result);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 保存用户角色
|
|
|
/// </summary>
|
|
|
/// <param name="userid"></param>
|
|
|
/// <param name="rolelist"></param>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult SaveUserRole(string userid, string rolelist, int type)
|
|
|
{
|
|
|
user_roleBLL ubll = new user_roleBLL();
|
|
|
try
|
|
|
{
|
|
|
var data = new JavaScriptSerializer().Deserialize<List<modeuleClass>>(rolelist);
|
|
|
foreach (var item in data)
|
|
|
{
|
|
|
user_role model = new user_role();
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
model.ROLEID = item.id;
|
|
|
model.USERID = userid;
|
|
|
switch (type)
|
|
|
{
|
|
|
case 1://添加角色
|
|
|
ubll.Add(model);
|
|
|
//加权限
|
|
|
SetRole(userid, item.id, 1);
|
|
|
////修改权限范围
|
|
|
//SetRange(userid, item.id, 1);
|
|
|
break;
|
|
|
case 0://移除角色
|
|
|
ubll.DeleteListWhere(string.Format("USERID='{0}' AND ROLEID='{1}'", userid, item.id));
|
|
|
////移除权限
|
|
|
SetRole(userid, item.id, 0);
|
|
|
////恢复默认权限范围
|
|
|
//SetRange(userid, item.id, 0);
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SetRange(userid,"", 1);
|
|
|
return Json(new { success = true });
|
|
|
}
|
|
|
catch (Exception se)
|
|
|
{
|
|
|
return Json(new { success = false, msg = se.Message });
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取公司列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult GetCompanyList1()
|
|
|
{
|
|
|
companyBLL cbll = new companyBLL();
|
|
|
var result = from p in cbll.GetModelList("")
|
|
|
select new
|
|
|
{
|
|
|
id = p.GID,
|
|
|
name = p.NAME
|
|
|
};
|
|
|
return Json(result);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 保存权限范围
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult SaveAuthByRole(user_authority_range model)
|
|
|
{
|
|
|
user_authority_rangeBLL rbll = new user_authority_rangeBLL();
|
|
|
bool result;
|
|
|
if (String.IsNullOrEmpty(model.GID))
|
|
|
{
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
model.CREATEUSER = Session["SHOWNAME"].ToString();
|
|
|
model.CREATETIME = DateTime.Now;
|
|
|
result = rbll.Add(model) > 0;
|
|
|
} //新增
|
|
|
else
|
|
|
{
|
|
|
//获取原数据
|
|
|
var oldModel = rbll.GetModel(model.GID);
|
|
|
//类反射
|
|
|
Type type = typeof(Model.user_authority_range);
|
|
|
PropertyInfo[] piArr = type.GetProperties();
|
|
|
foreach (var pi in piArr)
|
|
|
{
|
|
|
if (Array.IndexOf(Request.Params.AllKeys, pi.Name) < 0)
|
|
|
pi.SetValue(model, pi.GetValue(oldModel, null), null);
|
|
|
}
|
|
|
model.MODIFIEDUSER = Session["SHOWNAME"].ToString();
|
|
|
model.MODIFIEDTIME = DateTime.Now;
|
|
|
result = rbll.Update(model) > 0;
|
|
|
} //修改
|
|
|
//设置角色对应的权限范围
|
|
|
var data_view = Request["VISIBLERELATION"];
|
|
|
var data_opera = Request["OPERATERELATION"];
|
|
|
SetCompUser(model.VISIBLERANGE, model.OPERATERANGE, model.AUTHORITYID, model.USERID, data_view, data_opera);
|
|
|
//获取该角色下的人员并修改权限范围
|
|
|
user_roleBLL bll = new user_roleBLL();
|
|
|
var list = bll.GetModelList("ROLEID='" + model.USERID + "'");
|
|
|
foreach (var item in list)
|
|
|
SetAuthRange(item.USERID, model.AUTHORITYID, model.VISIBLERANGE, model.OPERATERANGE, model.USERID);
|
|
|
return Json(new { success = result, message = result ? "操作成功" : "操作失败" });
|
|
|
}
|
|
|
private void SetCompUser(int? view, int? opera, string authority, string userid, string data_view, string data_opera)
|
|
|
{
|
|
|
//可视范围(保存人员)
|
|
|
if (view == 5)
|
|
|
SetCompanyRange(authority, userid, 0, data_view);
|
|
|
if (view == 6)
|
|
|
SetUserRange(authority, userid, 0, data_view);
|
|
|
//操作范围(保存人员)
|
|
|
if (opera == 5)
|
|
|
SetCompanyRange(authority, userid, 1, data_opera);
|
|
|
if (opera == 6)
|
|
|
SetUserRange(authority, userid, 1, data_opera);
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 保存权限范围
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public JsonResult SaveAuthByRoleMulti(string jsonStr)
|
|
|
{
|
|
|
var jsonObj = JsonConvert.DeserializeObject<List<user_authority_range_multi_set>>(jsonStr);
|
|
|
|
|
|
user_authority_rangeBLL rbll = new user_authority_rangeBLL();
|
|
|
bool result;
|
|
|
foreach (var model in jsonObj)
|
|
|
{
|
|
|
if (String.IsNullOrEmpty(model.GID))
|
|
|
{
|
|
|
model.GID = Guid.NewGuid().ToString();
|
|
|
model.CREATEUSER = Session["SHOWNAME"].ToString();
|
|
|
model.CREATETIME = DateTime.Now;
|
|
|
result = rbll.Add(model) > 0;
|
|
|
} //新增
|
|
|
else
|
|
|
{
|
|
|
//获取原数据
|
|
|
var oldModel = rbll.GetModel(model.GID);
|
|
|
////类反射
|
|
|
//Type type = typeof(Model.user_authority_range);
|
|
|
//PropertyInfo[] piArr = type.GetProperties();
|
|
|
//foreach (var pi in piArr)
|
|
|
//{
|
|
|
// if (Array.IndexOf(Request.Params.AllKeys, pi.Name) < 0)
|
|
|
// pi.SetValue(model, pi.GetValue(oldModel, null), null);
|
|
|
//}
|
|
|
model.CREATETIME = oldModel.CREATETIME;
|
|
|
model.CREATEUSER = oldModel.CREATEUSER;
|
|
|
model.MODIFIEDUSER = Session["SHOWNAME"].ToString();
|
|
|
model.MODIFIEDTIME = DateTime.Now;
|
|
|
result = rbll.Update(model) > 0;
|
|
|
} //修改
|
|
|
//设置角色对应的权限范围
|
|
|
var data_view = model.VISIBLERELATION;
|
|
|
var data_opera = model.OPERATERELATION;
|
|
|
SetCompUser(model.VISIBLERANGE, model.OPERATERANGE, model.AUTHORITYID, model.USERID, data_view, data_opera);
|
|
|
//获取该角色下的人员并修改权限范围
|
|
|
user_roleBLL bll = new user_roleBLL();
|
|
|
var list = bll.GetModelList("ROLEID='" + model.USERID + "'");
|
|
|
foreach (var item in list)
|
|
|
SetAuthRange(item.USERID, model.AUTHORITYID, model.VISIBLERANGE, model.OPERATERANGE, model.USERID);
|
|
|
}
|
|
|
|
|
|
return Json(new { success = true, message = "操作成功" });
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
public bool SetRoleAuthRange()
|
|
|
{
|
|
|
var result = true;
|
|
|
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public ContentResult CopyAuth(string FromUSERID, string ToUSERIDLIST)
|
|
|
{
|
|
|
DBResult result = new DBResult();
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(FromUSERID) || string.IsNullOrWhiteSpace(ToUSERIDLIST))
|
|
|
{
|
|
|
var jsonRespose1 = new MvcShipping.Helper.JsonResponse
|
|
|
{
|
|
|
Success = false,
|
|
|
Message = "请正确选择权限来源用户和目标用户",
|
|
|
Data = ""
|
|
|
};
|
|
|
return new ContentResult() { Content = MvcShipping.Helper.JsonConvert.Serialize(jsonRespose1) };
|
|
|
}
|
|
|
|
|
|
var useridlist = ToUSERIDLIST.Split(',');
|
|
|
|
|
|
//20200221 首先获取来源用户的所有模块ID列表
|
|
|
var useractionbll = new user_actionBLL();
|
|
|
var useractionlist = useractionbll.GetModelList(" userid='"+ FromUSERID + "' and exists(select 1 from [action] where gid=ACTIONID)");
|
|
|
|
|
|
var checkcando = new DBResult(true, "", null);
|
|
|
|
|
|
//逐个权限进行判断 看这次能否添加得上
|
|
|
foreach (var module in useractionlist) {
|
|
|
checkcando = SysUserDAL.CheckOPRangeByActionID(module.ACTIONID, ToUSERIDLIST);
|
|
|
if (!checkcando.Success) {
|
|
|
result.SetErrorInfo(checkcando.Message);
|
|
|
}
|
|
|
}
|
|
|
//如不能 则返回所有引起错误的信息
|
|
|
if (!string.IsNullOrWhiteSpace(result.Message) && !result.Success) {
|
|
|
var jsonRespose1 = new MvcShipping.Helper.JsonResponse
|
|
|
{
|
|
|
Success = false,
|
|
|
Message = result.Message,
|
|
|
Data = ""
|
|
|
};
|
|
|
return new ContentResult() { Content = MvcShipping.Helper.JsonConvert.Serialize(jsonRespose1) };
|
|
|
}
|
|
|
|
|
|
//对权限进行设置
|
|
|
|
|
|
StringBuilder sqlstrbase = new StringBuilder();
|
|
|
sqlstrbase.Append("declare @USERID varchar(50) ");
|
|
|
sqlstrbase.Append("declare @CREATEUSER varchar(50) ");
|
|
|
sqlstrbase.Append("declare @FROMUSER varchar(50) ");
|
|
|
sqlstrbase.Append("set @USERID='{0}' ");
|
|
|
sqlstrbase.Append("set @CREATEUSER='{1}' ");
|
|
|
sqlstrbase.Append("set @FROMUSER = '{2}' ");
|
|
|
|
|
|
sqlstrbase.Append("delete from user_action where USERID=@USERID ");
|
|
|
sqlstrbase.Append("insert into user_action (GID,ACTIONID,USERID,CREATEUSER,CREATETIME,MODIFIEDUSER,MODIFIEDTIME) ");
|
|
|
sqlstrbase.Append("select newid(),actionid,@USERID,@CREATEUSER,getdate(),@CREATEUSER,getdate() from user_action where userid = @FROMUSER ");
|
|
|
|
|
|
sqlstrbase.Append("delete from user_authority_range where USERID=@USERID ");
|
|
|
sqlstrbase.Append("insert into user_authority_range (GID,USERID,AUTHORITYID,VISIBLERANGE,OPERATERANGE,CREATEUSER,CREATETIME,MODIFIEDUSER,MODIFIEDTIME) ");
|
|
|
sqlstrbase.Append("select newid(),@USERID,AUTHORITYID,VISIBLERANGE,OPERATERANGE,@CREATEUSER,getdate(),@CREATEUSER,getdate() from user_authority_range where userid = @FROMUSER ");
|
|
|
|
|
|
sqlstrbase.Append("delete from user_authority_range_op where USERID=@USERID ");
|
|
|
sqlstrbase.Append("insert into user_authority_range_op (GID,USERID,AUTHORITYID,OPID,OPNAME,VISIBLERANGE,OPERATERANGE,CREATEUSER,CREATETIME,MODIFIEDUSER,MODIFIEDTIME) ");
|
|
|
sqlstrbase.Append("select newid(),@USERID,AUTHORITYID,OPID,OPNAME,VISIBLERANGE,OPERATERANGE,@CREATEUSER,getdate(),@CREATEUSER,getdate() from user_authority_range_op where userid = @FROMUSER ");
|
|
|
|
|
|
sqlstrbase.Append("delete from user_authority_range_company where USERID=@USERID ");
|
|
|
sqlstrbase.Append("insert into user_authority_range_company (GID,USERID,AUTHORITYID,COMPANYID,VISIBLERANGE,OPERATERANGE,CREATEUSER,CREATETIME,MODIFIEDUSER,MODIFIEDTIME) ");
|
|
|
sqlstrbase.Append("select newid(),@USERID,AUTHORITYID,COMPANYID,VISIBLERANGE,OPERATERANGE,@CREATEUSER,getdate(),@CREATEUSER,getdate() from user_authority_range_company where userid = @FROMUSER ");
|
|
|
|
|
|
|
|
|
foreach (var userid in useridlist) {
|
|
|
string sqlstr = string.Format(sqlstrbase.ToString(), userid,Session["USERID"].ToString(), FromUSERID);
|
|
|
var _r = BasicDataRefDAL.ExecSql(sqlstr);
|
|
|
if (_r == -1) {
|
|
|
var jsonRespose2 = new MvcShipping.Helper.JsonResponse
|
|
|
{
|
|
|
Success = true,
|
|
|
Message = "设置错误,请联系管理员!",
|
|
|
Data = ""
|
|
|
};
|
|
|
return new ContentResult() { Content = MvcShipping.Helper.JsonConvert.Serialize(jsonRespose2) };
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var jsonRespose = new MvcShipping.Helper.JsonResponse
|
|
|
{
|
|
|
Success = true,
|
|
|
Message = "设置完成",
|
|
|
Data = ""
|
|
|
};
|
|
|
return new ContentResult() { Content = MvcShipping.Helper.JsonConvert.Serialize(jsonRespose) };
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|
|
|
public class modeuleClass
|
|
|
{
|
|
|
public string id { get; set; }
|
|
|
public string name { get; set; }
|
|
|
}
|
|
|
|
|
|
} |