1730 lines
63 KiB
C#
1730 lines
63 KiB
C#
using Dapper;
|
|
using Newtonsoft.Json;
|
|
using System.Data;
|
|
using YLErp.Abstract;
|
|
using YLErp.BLL;
|
|
using YLErp.DBModels.Consts;
|
|
using YLErp.Modules.DictionaryModule;
|
|
using YLErp.Modules.SystemModule;
|
|
|
|
namespace YLErp.Web.Controllers
|
|
{
|
|
public class SystemController : BaseController
|
|
{
|
|
readonly ErpBaseContext basedb = new ErpBaseContext();
|
|
readonly YLContext yLContext = new YLContext();
|
|
private IKafkaProduce _kafkaProduce;
|
|
public SystemController( IKafkaProduce kafkaProduce)
|
|
{
|
|
_kafkaProduce = kafkaProduce;
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
yldb.Dispose();
|
|
basedb.Dispose();
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
public ActionResult RemoveColumnConfig()
|
|
{
|
|
var uid = CurUser.UserId;
|
|
var toremove = yldb.configcolumn.Where(c => c.userid == uid);
|
|
yldb.configcolumn.RemoveRange(toremove);
|
|
yldb.SaveChanges();
|
|
return Content("");
|
|
}
|
|
|
|
[MyAuthorize("系统管理-部门管理")]
|
|
public ActionResult DepartmentView()
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return NoRightPage();
|
|
}
|
|
|
|
return View();
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult DepartmentJson(int parentid = 0)
|
|
{
|
|
IEnumerable<TreeNode> obj;
|
|
|
|
if (parentid == 0)
|
|
{
|
|
obj = from o in DepartmentBLL.Departments
|
|
select new TreeNode
|
|
{
|
|
id = o.Id,
|
|
name = o.Name,
|
|
pId = o.PId,
|
|
tag = o.DepartmentType,
|
|
open = o.PId == 0,
|
|
area = o.Area,
|
|
tel = o.Tel,
|
|
state = o.State,
|
|
code = o.Code,
|
|
description = o.Description
|
|
};
|
|
}
|
|
else
|
|
{
|
|
obj = from o in DepartmentBLL.GetDepartmentByParent(parentid)
|
|
select new TreeNode
|
|
{
|
|
id = o.Id,
|
|
name = o.Name,
|
|
pId = o.PId,
|
|
tag = o.DepartmentType,
|
|
open = o.PId == 0,
|
|
area = o.Area,
|
|
tel = o.Tel,
|
|
state = o.State,
|
|
code = o.Code,
|
|
description = o.Description
|
|
};
|
|
|
|
}
|
|
return JsonSuccessData(obj.ToArray());
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult UpdateDepartment(int id, IFormCollection collection)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
|
|
var dept = basedb.Departments.FirstOrDefault(o => o.Id == id);
|
|
if (dept == null)
|
|
{
|
|
dept = new Department
|
|
{
|
|
PId = int.Parse(collection["pid"])
|
|
};
|
|
basedb.Departments.Add(dept);
|
|
}
|
|
|
|
if (dept.DepartmentType == null)
|
|
{
|
|
dept.DepartmentType = "";
|
|
}
|
|
|
|
dept.Name = collection["name"];
|
|
dept.DepartmentType = collection["departmenttype"];
|
|
dept.Tel = collection["tel"];
|
|
dept.Area = collection["area"];
|
|
dept.Code = collection["code"];
|
|
dept.Description = collection["description"];
|
|
|
|
basedb.SaveChanges();
|
|
DepartmentsController.IsListOld = true;
|
|
DepartmentBLL.UpdateDepartments();
|
|
return Json(dept);
|
|
}
|
|
[HttpPost]
|
|
public JsonResult UpdateDepartmentParent(int id, int pid)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
|
|
var dept = basedb.Departments.FirstOrDefault(o => o.Id == id);
|
|
if (dept == null)
|
|
{
|
|
return JsonError("找不到部门");
|
|
}
|
|
else if (DepartmentBLL.IsParnet(id, pid))
|
|
{
|
|
return JsonError("不能拖动到子部门下");
|
|
}
|
|
else
|
|
{
|
|
dept.PId = pid;
|
|
basedb.SaveChanges();
|
|
DepartmentsController.IsListOld = true;
|
|
DepartmentBLL.UpdateDepartments();
|
|
}
|
|
return JsonSuccess();
|
|
}
|
|
[HttpPost]
|
|
public JsonResult DeleteDepartment(int id)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return Json("没有权限");
|
|
}
|
|
|
|
var dept = basedb.Departments.FirstOrDefault(o => o.Id == id);
|
|
if (dept == null)
|
|
{
|
|
return Json("找不到节点");
|
|
}
|
|
else
|
|
{
|
|
if (basedb.Departments.Where(o => o.PId == id).Count() > 0)
|
|
{
|
|
return Json("要删除的节点有子节点,请先删除子节点");
|
|
}
|
|
else
|
|
{
|
|
basedb.Database.ExecuteSqlRaw(string.Format("delete from departmentusers where departmentid={0}", id));
|
|
basedb.Departments.Remove(dept);
|
|
basedb.SaveChanges();
|
|
DepartmentsController.IsListOld = true;
|
|
DepartmentBLL.UpdateDepartments();
|
|
}
|
|
}
|
|
return JsonSuccess();
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult DepartmentUser(int id)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
|
|
var list = from o in basedb.DepartmentUsers
|
|
join u in basedb.SystemUsers on o.UserId equals u.Id
|
|
where o.DepartmentId == id
|
|
select new
|
|
{
|
|
userid = o.UserId,
|
|
username = u.LoginName,
|
|
workno = u.Name,
|
|
ismanager = o.IsManager
|
|
};
|
|
return JsonSuccessData(list);
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult DepartmentAddUser(int id, int userid)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
if (userid < 1)
|
|
{
|
|
return JsonError("请选择用户");
|
|
}
|
|
var r = basedb.SystemUsers.FirstOrDefault(o => o.Id == userid);
|
|
//判断用户状态,为1表示“禁用”,则返回false
|
|
if (r.State == 1)
|
|
{
|
|
return JsonError("当前用户为禁用状态,无法分配部门");
|
|
}
|
|
var du = (from o in basedb.DepartmentUsers where o.DepartmentId == id && o.UserId == userid select o).FirstOrDefault();
|
|
if (du == null)
|
|
{
|
|
du = new DepartmentUser { UserId = userid, DepartmentId = id };
|
|
basedb.DepartmentUsers.Add(du);
|
|
basedb.SaveChanges();
|
|
DepartmentBLL.UpdateDepartments();
|
|
}
|
|
return JsonSuccess();
|
|
}
|
|
[HttpPost]
|
|
public JsonResult DepartmentRemoveUser(int id, IFormCollection collection)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
|
|
var users = collection["users[]"];
|
|
if (!users.Any())
|
|
{
|
|
return JsonError("请选择需要移除的部门人员");
|
|
}
|
|
var userlist = users.ToString().Split(',');
|
|
foreach (var s in userlist)
|
|
{
|
|
int.TryParse(s, out var i);
|
|
if (i > 0)
|
|
{
|
|
var du = basedb.DepartmentUsers.FirstOrDefault(o => o.DepartmentId == id && o.UserId == i);
|
|
if (du != null)
|
|
{
|
|
basedb.DepartmentUsers.Remove(du);
|
|
}
|
|
}
|
|
}
|
|
basedb.SaveChanges();
|
|
DepartmentBLL.UpdateDepartments();
|
|
return JsonSuccess();
|
|
}
|
|
[HttpPost]
|
|
public JsonResult DepartmentSetManager(int id, IFormCollection collection)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
|
|
var managers = collection["managers[]"];
|
|
var managerlist = managers.ToString().Split(',');
|
|
foreach (var s in managerlist)
|
|
{
|
|
int.TryParse(s, out var i);
|
|
if (i > 0)
|
|
{
|
|
var du = basedb.DepartmentUsers.FirstOrDefault(o => o.DepartmentId == id && o.UserId == i);
|
|
if (du != null)
|
|
{
|
|
du.IsManager = 1;
|
|
}
|
|
}
|
|
}
|
|
basedb.SaveChanges(); DepartmentBLL.UpdateDepartments();
|
|
return JsonSuccess();
|
|
}
|
|
[HttpPost]
|
|
public JsonResult DepartmentRemoveManager(int id, IFormCollection collection)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
|
|
var managers = collection["managers[]"];
|
|
var managerlist = managers.ToString().Split(',');
|
|
foreach (var s in managerlist)
|
|
{
|
|
int.TryParse(s, out var i);
|
|
if (i > 0)
|
|
{
|
|
var du = basedb.DepartmentUsers.FirstOrDefault(o => o.DepartmentId == id && o.UserId == i);
|
|
if (du != null)
|
|
{
|
|
du.IsManager = 0;
|
|
}
|
|
}
|
|
}
|
|
basedb.SaveChanges();
|
|
DepartmentBLL.UpdateDepartments();
|
|
return JsonSuccess();
|
|
}
|
|
public ActionResult DepartmentUserEdit(int id)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return NoRightPage();
|
|
}
|
|
var d = basedb.Departments.FirstOrDefault(o => o.Id == id);
|
|
return View(d);
|
|
}
|
|
|
|
|
|
/*---------------- Role ----------------------------*/
|
|
|
|
[MyAuthorize("系统管理-角色管理")]
|
|
public ActionResult RoleIndex()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("系统管理-角色管理")]
|
|
[HttpPost]
|
|
public JsonResult RoleQuery(string sidx, string sord, int page, int rows, string name)
|
|
{
|
|
var userSumQuery = from a in basedb.RoleUsers
|
|
group a by a.RoleId into g
|
|
select new { RoleId = (int?)g.Key, Num = (int?)g.Count() };
|
|
|
|
var roleQuery = from r in basedb.Roles
|
|
join a in userSumQuery on r.Id equals a.RoleId into aa
|
|
from ru in aa.DefaultIfEmpty()
|
|
select new RoleDto
|
|
{
|
|
Id = r.Id,
|
|
Name = r.Name,
|
|
OptDate = r.OptDate,
|
|
Remark = r.Remark,
|
|
Position = r.Position,
|
|
RoleUserCount = ru.Num ?? 0,
|
|
};
|
|
|
|
if (!string.IsNullOrWhiteSpace(name))
|
|
{
|
|
name = name.Trim();
|
|
roleQuery = roleQuery.Where(o => o.Name.Contains(name));
|
|
}
|
|
|
|
var queryModel = new PagedQueryModel { PageIndex = page, PageSize = rows };
|
|
|
|
if (string.IsNullOrWhiteSpace(sidx))
|
|
{
|
|
queryModel.SortExpression = $"{nameof(Role.OptDate)} desc,{nameof(RoleDto.Id)} desc";
|
|
}
|
|
else
|
|
{
|
|
queryModel.SortExpression = sidx + " " + sord;
|
|
}
|
|
|
|
var pagedList = roleQuery.ToPagedList(queryModel);
|
|
|
|
return JsonForJqGrid(pagedList);
|
|
}
|
|
|
|
public ActionResult RoleView(int id)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-角色管理"))
|
|
{
|
|
return NoRightPage();
|
|
}
|
|
|
|
var r = basedb.Roles.FirstOrDefault(n => n.Id == id) ?? new Role();
|
|
if (r.Id > 0)
|
|
{
|
|
ViewBag.Funtions = (from o in basedb.RoleFunctions where o.RoleId == id select o).ToList();
|
|
ViewBag.Users = (from o in basedb.RoleUsers where o.RoleId == id select o).ToList();
|
|
}
|
|
return View(r);
|
|
}
|
|
|
|
public ActionResult RoleEdit(int id)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-角色管理"))
|
|
{
|
|
return NoRightPage();
|
|
}
|
|
var r = basedb.Roles.FirstOrDefault(n => n.Id == id) ?? new Role();
|
|
return View(r);
|
|
}
|
|
|
|
[MyAuthorize("系统管理-角色管理")]
|
|
[HttpPost]
|
|
public ActionResult RoleEdit(int id, string name, string remark, IFormCollection collection)
|
|
{
|
|
var r = basedb.Roles.FirstOrDefault(o => o.Id == id);
|
|
if (r == null)
|
|
{
|
|
r = new Role(); basedb.Roles.Add(r);
|
|
}
|
|
r.Name = name;
|
|
r.Remark = remark;
|
|
r.OptDate = DateTime.Now;
|
|
|
|
var positions = new List<RolePosition>();
|
|
if (collection["IsTrader"] == "on")
|
|
{
|
|
positions.Add(new RolePosition { Name = "Trader" });
|
|
}
|
|
r.Position = positions.ToJson();
|
|
//判断不能重名
|
|
if (basedb.Roles.Any(role => role.Name == r.Name && role.Id != r.Id))
|
|
{
|
|
ViewBag.Error = "不能保存同名角色";
|
|
return View(r);
|
|
}
|
|
basedb.SaveChanges();
|
|
return Redirect("../RoleView/" + r.Id);
|
|
}
|
|
|
|
public ActionResult RoleFunctionEdit(int id)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-角色管理"))
|
|
{
|
|
return NoRightPage();
|
|
}
|
|
var role = basedb.Roles.FirstOrDefault(n => n.Id == id);
|
|
if (role == null)
|
|
{
|
|
return Content("角色不存在");
|
|
}
|
|
var roleFunctions = basedb.RoleFunctions.Where(o => o.RoleId == id).ToList();
|
|
var model = new RoleEditModel
|
|
{
|
|
Role = role,
|
|
RoleFunctions = roleFunctions
|
|
};
|
|
return View(model);
|
|
}
|
|
|
|
[HttpPost]
|
|
public ActionResult RoleFunctionEditFormJson(RoleFunctionReq req)
|
|
{
|
|
if (Request.Form.TryGetValue("rights", out var rights) && rights.Count > 0)
|
|
{
|
|
req.rights = rights;
|
|
}
|
|
if (!CurUser.HasRight("系统管理-角色管理"))
|
|
{
|
|
return JsonError("当前登录用户没有用户管理权限");
|
|
}
|
|
|
|
var role = new SysRoleService(CurUser).SaveRoleFunctions(req);
|
|
|
|
return JsonSuccess("修改成功", role);
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult DeleteRole(int id)
|
|
{
|
|
//if (!CurUser.HasRight("系统管理-部门管理"))
|
|
//{
|
|
// return JsonError("没有权限");
|
|
//}
|
|
|
|
var usercount = basedb.RoleUsers.Where(o => o.RoleId == id).Count();
|
|
if (usercount > 0)
|
|
{
|
|
return JsonError("已有用户使用此角色,不能删除");
|
|
}
|
|
else
|
|
{
|
|
if (yLContext.approvalprocess.Any(x => x.roleId == id))
|
|
{
|
|
return JsonError("已有审批流程在使用,不能删除");
|
|
};
|
|
var r = basedb.Roles.FirstOrDefault(o => o.Id == id);
|
|
if (r == null)
|
|
{
|
|
return JsonError("找不到节点");
|
|
}
|
|
else
|
|
{
|
|
basedb.Roles.Remove(r);
|
|
basedb.SaveChanges();
|
|
}
|
|
}
|
|
|
|
return JsonSuccess();
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult GetParentFunctionList(int id)
|
|
{
|
|
var f = basedb.Functions.FirstOrDefault(o => o.Id == id);
|
|
var functionList = basedb.Functions.Where(o => o.Name == f.ParentName).OrderBy(o => o.Sort).Select(o => o.Id).FirstOrDefault();
|
|
return Json(JsonConvert.SerializeObject(functionList));
|
|
}
|
|
|
|
/*----------------------User------------------------------*/
|
|
|
|
[MyAuthorize("系统管理-用户管理")]
|
|
public ActionResult UserIndex()
|
|
{
|
|
if (!CurUser.HasRight("系统管理-用户管理"))
|
|
{
|
|
return NoRightPage();
|
|
}
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("系统管理-用户管理")]
|
|
[HttpPost]
|
|
public JsonResult UserSearchQuery(SystemUserReq req)
|
|
{
|
|
var result = new UserBLL().SearchSystemUserList(req);
|
|
foreach (var item in result.rows)
|
|
{
|
|
item.UserGroup = ConsUserGroup.GetGroupDesc(item.UserGroup);
|
|
}
|
|
return Json(result);
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult UserQuery(UserQueryModel model)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-用户管理"))
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
|
|
string s = ViewUser.BaseSql;
|
|
|
|
//var role = Request.Form["role"] + "";
|
|
//var department = Request.Form["department"] + "";
|
|
//var name = Request.Form["Name"] + "";
|
|
if (!string.IsNullOrWhiteSpace(model.Name))
|
|
{
|
|
s += $" and u.Name like '%{model.Name}%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(model.role))
|
|
{
|
|
s += $" and u.Id in (select userid from roleusers ru join roles r on ru.roleid=r.Id where r.name like '%{model.role}%')";
|
|
//parameters.Add(new SqlParameter("Role", string.Format("%{0}%", role)));
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(model.department))
|
|
{
|
|
s += $" and u.Id in (select userid from departmentusers du join departments d on du.departmentid=d.Id where d.name like '%{model.department}%')";
|
|
//parameters.Add(new SqlParameter("Department", string.Format("%{0}%", department)));
|
|
}
|
|
//var nodept = Request.Form["NoDept"] + "";
|
|
if (model.NoDept == "true")
|
|
{
|
|
s += " and not exists (select 1 from departmentusers du where du.userid=u.Id)";
|
|
}
|
|
//bool.TryParse(Request.Form["State1"], out var state1);
|
|
//bool.TryParse(Request.Form["State2"], out var state2);
|
|
if (model.State1 ^ model.State2)
|
|
{
|
|
if (model.State1)
|
|
{
|
|
s += " and u.state=0";
|
|
}
|
|
|
|
if (model.State2)
|
|
{
|
|
s += " and u.state=1";
|
|
}
|
|
}
|
|
var order = "";
|
|
if (!string.IsNullOrEmpty(model.sidx))
|
|
{
|
|
order = model.sidx + " " + model.sord;
|
|
s += " order by " + order;
|
|
}
|
|
var query = basedb.Database.GetDbConnection().Query<ViewUser>(s).ToArray();
|
|
|
|
var totalrow = query.Count();
|
|
var pagenum = (totalrow - totalrow % model.rows) / model.rows + 1;
|
|
var newquery = (from o in query select o).Take(model.rows * model.page).Skip(model.page * model.rows - model.rows).ToList();// 这种写法是在内存中运算
|
|
foreach (var u in newquery)
|
|
{
|
|
var q1 = (from o in basedb.DepartmentUsers from p in basedb.Departments where o.UserId == u.id && o.DepartmentId == p.Id select p.Name);
|
|
foreach (var departname in q1)
|
|
{
|
|
if (u.Departments == null)
|
|
{
|
|
u.Departments = departname;
|
|
}
|
|
else
|
|
{
|
|
u.Departments += "," + departname;
|
|
}
|
|
}
|
|
var q2 = (from o in basedb.RoleUsers from p in basedb.Roles where o.UserId == u.id && o.RoleId == p.Id select p.Name);
|
|
foreach (var rolename in q2)
|
|
{
|
|
if (u.Roles == null)
|
|
{
|
|
u.Roles = rolename;
|
|
}
|
|
else
|
|
{
|
|
u.Roles += "," + rolename;
|
|
}
|
|
}
|
|
}
|
|
//int records = newquery.Count();
|
|
var jsonData = new
|
|
{
|
|
total = pagenum,
|
|
page = model.page,
|
|
records = totalrow,
|
|
rows = newquery
|
|
};
|
|
return Json(jsonData);
|
|
}
|
|
|
|
public ActionResult UserView(int id)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-用户管理"))
|
|
{
|
|
return NoRightPage();
|
|
}
|
|
var r = basedb.SystemUsers.FirstOrDefault(o => o.Id == id);
|
|
if (r == null)
|
|
{
|
|
r = new SystemUser();
|
|
}
|
|
else
|
|
{
|
|
var roles = (from o in basedb.RoleUsers from p in basedb.Roles where o.UserId == id && p.Id == o.RoleId select p.Name).ToList();
|
|
r.RoleTypeName = string.Join(",", roles);
|
|
|
|
ViewData["AccountPostStr"] = new UserBLL().ToAccountPost(r.AccountPost);
|
|
}
|
|
|
|
return View(r);
|
|
}
|
|
|
|
public ActionResult UserEdit(int id)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-用户管理"))
|
|
{
|
|
return NoRightPage();
|
|
}
|
|
var r = basedb.SystemUsers.FirstOrDefault(o => o.Id == id);
|
|
if (r == null)
|
|
{
|
|
r = new SystemUser();
|
|
}
|
|
if (string.IsNullOrWhiteSpace(r.RoleType))
|
|
{
|
|
var roles = (from o in basedb.RoleUsers where o.UserId == id select o.RoleId).ToList();
|
|
r.RoleType = string.Join(",", roles);
|
|
}
|
|
|
|
r.Password = null;
|
|
return View(r);
|
|
}
|
|
|
|
[MyAuthorize("系统管理-用户管理")]
|
|
public ActionResult UserLevelView(int id)
|
|
{
|
|
ViewBag.Id = id;
|
|
return View();
|
|
}
|
|
|
|
public ActionResult GetChildrenSystemUsers(int parentId)
|
|
{
|
|
return Json(UserBLL.GetChildrenSystemUsers(parentId, true));
|
|
}
|
|
|
|
[HttpPost]
|
|
public ActionResult userEditJson(IFormCollection collection, SystemUserDto req)
|
|
{
|
|
var result = UserEdit(req.Id, req.LoginName, req.Name, req.Password,
|
|
req.State, req.QQ, req.Mobile, req.Tel, req.RoleType, req.Email, req.UserGroup, collection, req.AccountPost, req.ParentId);
|
|
return result;
|
|
}
|
|
|
|
[HttpPost]
|
|
public ActionResult UserEdit(int id, string loginname, string name, string password, int state, string qq,
|
|
string Mobile, string tel, string roletype, string email, string userGroup, IFormCollection collection, int accountPost, int? parentId)
|
|
{
|
|
var roles = roletype?.Split(',');
|
|
|
|
if (!CurUser.HasRight("系统管理-用户管理"))
|
|
{
|
|
return JsonError("当前登录用户没有用户管理权限");
|
|
}
|
|
|
|
var r = basedb.SystemUsers.Find(id);
|
|
if (r == null)
|
|
{
|
|
r = new SystemUser();
|
|
}
|
|
else
|
|
{
|
|
//当交易员改成客户经理时
|
|
if (accountPost == 1)
|
|
{
|
|
using (var db = new YLContext())
|
|
{
|
|
var dbassetList = db.assetunit.ToList();
|
|
foreach (var dbasset in dbassetList.Where(l => l.TraderIdsInt.Contains(r.Id)))
|
|
{
|
|
List<int> cloneid = new List<int>(dbasset.TraderIdsInt);
|
|
cloneid.Remove(r.Id);
|
|
dbasset.TraderIds = string.Join(",", UserBLL.Where(u => cloneid.Contains(u.Id)).Select(u => u.Id));
|
|
dbasset.TraderNames = string.Join(",", UserBLL.Where(u => cloneid.Contains(u.Id)).Select(u => u.Name));
|
|
}
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(loginname))
|
|
{
|
|
return JsonError("登录名不能为空");
|
|
}
|
|
if (string.IsNullOrWhiteSpace(name))
|
|
{
|
|
return JsonError("姓名不能为空");
|
|
}
|
|
if (roles == null || roles.Length == 0)
|
|
{
|
|
return JsonError("请选择至少一个角色");
|
|
}
|
|
if (id == 0 && string.IsNullOrWhiteSpace(password))
|
|
{
|
|
r.Password = "1qaz@WSX3edc";
|
|
}
|
|
else if (loginname != r.LoginName && string.IsNullOrWhiteSpace(password))
|
|
{
|
|
return JsonError("修改用户名时,需要重置密码");
|
|
}
|
|
var CheckPassword = PS.Config.ErpElement.CheckPassword;
|
|
if (password!=null)
|
|
{
|
|
if (CheckPassword && password.Length < 12)
|
|
{
|
|
return JsonError("密码 必须至少12位长度");
|
|
}
|
|
if (CheckPassword && !PasswordValidator.Validate(password))
|
|
{
|
|
return JsonError("密码 必须包含大小写字母,数字,特殊字符,长度不小于12位");
|
|
}
|
|
}
|
|
|
|
var checkuser =
|
|
(from o in basedb.SystemUsers where o.Id != id && o.LoginName == loginname select name).FirstOrDefault();
|
|
if (checkuser != null)
|
|
{
|
|
return JsonError("该用户已存在");
|
|
}
|
|
|
|
if (ModelState.IsValid == false)
|
|
{
|
|
r.Password = null;
|
|
r.LoginName = loginname;
|
|
r.Name = name;
|
|
r.State = state;
|
|
r.QQ = qq;
|
|
r.Mobile = Mobile;
|
|
r.Tel = tel;
|
|
r.Email = email;
|
|
r.RoleType = roletype;
|
|
r.UserGroup = userGroup;
|
|
r.AccountPost = accountPost;
|
|
r.ParentId = parentId;
|
|
return View(r);
|
|
}
|
|
else
|
|
{
|
|
var vo = new SystemUser
|
|
{
|
|
LoginName = loginname,
|
|
Password = password,
|
|
State = state,
|
|
Name = name,
|
|
Email = email,
|
|
QQ = qq,
|
|
Mobile = Mobile,
|
|
Tel = tel,
|
|
BondIP = collection["BondIP"],
|
|
RoleType = roletype,
|
|
UserGroup = userGroup,
|
|
AccountPost = accountPost,
|
|
ParentId = parentId,
|
|
VarietyIds = ""
|
|
};
|
|
|
|
r.Save(basedb, vo);
|
|
Server.CacheProvider.Set("loginUserError^" + loginname.ToLower(), 0, TimeSpan.FromMinutes(120));
|
|
new SysUserService(CurUser).SaveSysUser(r);
|
|
var oldRoleUsers = basedb.RoleUsers.Where(o => o.UserId == r.Id).ToArray();
|
|
|
|
foreach (var ru in oldRoleUsers)
|
|
{
|
|
basedb.RoleUsers.Remove(ru);
|
|
}
|
|
|
|
var roleIdList = new List<int>();
|
|
|
|
foreach (var role in roles)
|
|
{
|
|
var roleUser = basedb.RoleUsers.Add(new RoleUser { UserId = r.Id, RoleId = int.Parse(role) })?.Entity;
|
|
|
|
roleIdList.Add(roleUser.RoleId);
|
|
}
|
|
|
|
if (roleIdList.Count != oldRoleUsers.Length || !roleIdList.All(n => oldRoleUsers.Any(old => old.RoleId == n)))
|
|
{
|
|
var roleNameList = roleIdList.Count > 0
|
|
? basedb.Roles.Where(n => roleIdList.Contains(n.Id)).Select(n => n.Name).ToArray()
|
|
: Array.Empty<string>();
|
|
|
|
var remark = string.Join(",", roleNameList);
|
|
|
|
basedb.SystemLogs.Add(new DBModels.SystemLog
|
|
{
|
|
EventCategory = "系统账户",
|
|
EventName = "设置角色",
|
|
EventData = JsonHelper.Serialize(new
|
|
{
|
|
UserId = r.Id,
|
|
RoleIds = roleIdList
|
|
}),
|
|
Remark = $"用户:{r.Name};登录名:{r.LoginName};用户角色:{remark}"
|
|
})?.Entity.SetOpt(CurUser);
|
|
}
|
|
|
|
basedb.SaveChanges();
|
|
|
|
UserBLL.UpdateUsers();
|
|
|
|
TempData["saved"] = true;
|
|
|
|
return JsonSuccess("更新成功", r);
|
|
}
|
|
}
|
|
|
|
public JsonResult accountAble(int accountIds)
|
|
{
|
|
var r = basedb.SystemUsers.Find(accountIds);
|
|
r.State = 0;
|
|
basedb.SaveChanges();
|
|
new SysUserService(CurUser).UpdateState(accountIds, 0);
|
|
return JsonSuccess("启动账户成功", r);
|
|
}
|
|
|
|
public JsonResult accountDisable(int accountIds)
|
|
{
|
|
var r = basedb.SystemUsers.Find(accountIds);
|
|
r.State = 1;
|
|
basedb.SaveChanges();
|
|
//清理缓存
|
|
Providers.MemoryCacheProvider.Default.Remove("loginUser" + accountIds);
|
|
new SysUserService(CurUser).UpdateState(accountIds, 1);
|
|
SysUserChangeInfo sysUserChangeInfo= new SysUserChangeInfo();
|
|
sysUserChangeInfo.Id = accountIds;
|
|
sysUserChangeInfo.Status = 1;
|
|
sysUserChangeInfo.ForceLoginOut = true;
|
|
new SysUserKafkaService(_kafkaProduce).Send(sysUserChangeInfo);
|
|
return JsonSuccess("禁用账户成功", r);
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult DeleteUser(int id)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-部门管理"))
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
var r = (from o in basedb.SystemUsers where o.Id == id select o).FirstOrDefault();
|
|
if (r == null)
|
|
{
|
|
return JsonError("找不到用户");
|
|
}
|
|
else
|
|
{
|
|
basedb.SystemUsers.Remove(r);
|
|
basedb.SaveChanges();
|
|
new SysUserService(CurUser).RemoveSysUser(id);
|
|
}
|
|
return JsonSuccess();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 选择用户控件使用
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public ActionResult SelectUser()
|
|
{
|
|
return View();
|
|
}
|
|
/// <summary>
|
|
/// 选择用户控件使用
|
|
/// </summary>
|
|
[HttpPost]
|
|
public JsonResult SelectUserQuery(string sidx, string sord, int page, int rows, IFormCollection collection)
|
|
{
|
|
var parameters = new List<object>();
|
|
var query = (from o in basedb.SystemUsers
|
|
join p in basedb.DepartmentUsers on o.Id equals p.UserId
|
|
join q in basedb.Departments on p.DepartmentId equals q.Id
|
|
select new { id = o.Id, Name = o.LoginName, Department = q.Name, DeptId = q.Id });
|
|
|
|
var name = collection["name"] + "";
|
|
var depart = collection["department"] + "";
|
|
var departmentid = collection["departmentid"] + "";//url传来参数
|
|
var mallidstring = collection["mallid"] + "";
|
|
int.TryParse(mallidstring, out var mallid);
|
|
if (name != "")
|
|
{
|
|
query = (from o in query where o.Name.Contains(name) select o);
|
|
}
|
|
if (depart != "")
|
|
{
|
|
query = (from o in query where o.Department.Contains(depart) select o);
|
|
}
|
|
if (int.TryParse(departmentid, out var departmentId))
|
|
{
|
|
query = (from o in query where o.DeptId == departmentId select o);
|
|
}
|
|
var order = "";
|
|
if (sidx != "")
|
|
{
|
|
order = sidx + " " + sord;
|
|
query = (from o in query orderby order select o);
|
|
}
|
|
var list = query.ToList();
|
|
if (mallid > 0)
|
|
{
|
|
list = (from o in list where DepartmentBLL.IsParnet(mallid, o.DeptId) select o).ToList();
|
|
}
|
|
|
|
var totalrow = list.Count();
|
|
var pagenum = (totalrow - totalrow % rows) / rows + 1;
|
|
var newquery = (from o in list select new UserName { id = o.id, Name = o.Name, Department = o.Department }).Take(rows * page).Skip(page * rows - rows).ToList();// 这种写法是在内存中运算
|
|
|
|
var jsonData = new
|
|
{
|
|
total = pagenum,
|
|
page = page,
|
|
records = totalrow,
|
|
rows = newquery
|
|
};
|
|
return Json(jsonData);
|
|
}
|
|
|
|
[MyAuthorize("系统管理-数据字典")]
|
|
public ActionResult Dictionary()
|
|
{
|
|
if (!CurUser.HasRight("系统管理-数据字典"))
|
|
{
|
|
return NoRightPage();
|
|
}
|
|
//这三个权限在 结算管理_财务编码维护,不予在数据字典界面查看
|
|
var financialCodeRights = new List<string>() { "用友客商编码", "财务凭证明细段", "财务凭证排除客户项" };
|
|
|
|
var list = (from o in basedb.Dictionaries.AsNoTracking() where !financialCodeRights.Contains(o.Name) orderby o.Catalog select o).ToList();
|
|
|
|
var dictList = new Dictionary<string, List<Dictionary>>();
|
|
//OUDAL.Dictionary curDict = null;
|
|
foreach (var dict in list)
|
|
{
|
|
|
|
if (!dictList.ContainsKey(dict.Catalog))
|
|
{
|
|
dictList.Add(dict.Catalog, new List<Dictionary>());
|
|
}
|
|
dictList[dict.Catalog].Add(dict);
|
|
}
|
|
return View(dictList);
|
|
}
|
|
[HttpPost]
|
|
public JsonResult GetDictionaryItems(int dictId)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-数据字典"))
|
|
{
|
|
if (CurUser.结算管理_财务编码维护)
|
|
{
|
|
var financialCodeRights = new List<string>() { "用友客商编码", "财务凭证明细段", "财务凭证排除客户项" };
|
|
if (!basedb.Dictionaries.Where(o => financialCodeRights.Contains(o.Name)).Any())
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
|
|
var list = basedb.DictionaryItems.Where(o => o.DictId == dictId).OrderBy(o => o.IndexNum).ToArray();
|
|
return JsonSuccessData(list);
|
|
}
|
|
[HttpPost]
|
|
public JsonResult AddDictionaryItem(int dictId, string name, string shortName)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-数据字典"))
|
|
{
|
|
if (CurUser.结算管理_财务编码维护)
|
|
{
|
|
var financialCodeRights = new List<string>() { "用友客商编码", "财务凭证明细段", "财务凭证排除客户项" };
|
|
if (!basedb.Dictionaries.Where(o => financialCodeRights.Contains(o.Name)).Any())
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(name))
|
|
{
|
|
return JsonError("名称不能为空");
|
|
}
|
|
if (string.IsNullOrEmpty(shortName))
|
|
{
|
|
return JsonError("简称不能为空");
|
|
}
|
|
if (name.Length > 50)
|
|
{
|
|
return JsonError("名称长度超长,无法添加");
|
|
}
|
|
if (shortName.Length > 50)
|
|
{
|
|
return JsonError("简称长度超长,无法添加");
|
|
}
|
|
|
|
var dict = basedb.Dictionaries.FirstOrDefault(d => d.Id == dictId && d.Name == "累计转远期到期日类型");
|
|
if (dict != null)
|
|
{
|
|
var dicI = basedb.DictionaryItems.FirstOrDefault(O => O.DictId == dictId && O.Name == name.Trim() && O.ShortName == shortName.Trim());
|
|
if (dicI != null)
|
|
{
|
|
return JsonError("数据不能重复!");
|
|
}
|
|
}
|
|
|
|
var dictYYClientCode = basedb.Dictionaries.FirstOrDefault(d => d.Id == dictId && d.Name == "用友客商编码");
|
|
if (dictYYClientCode != null)
|
|
{
|
|
var dicI = basedb.DictionaryItems.FirstOrDefault(O => O.DictId == dictId && O.Name == name.Trim());
|
|
if (dicI != null)
|
|
{
|
|
return JsonError("用友客商编码名称不能重复!");
|
|
}
|
|
}
|
|
|
|
var list = (from o in basedb.DictionaryItems where o.DictId == dictId orderby o.IndexNum select o).ToList();
|
|
var next = 0;
|
|
if (list.Count > 0)
|
|
{
|
|
next = list[list.Count - 1].IndexNum + 1;
|
|
}
|
|
|
|
var item = new DictionaryItem { DictId = dictId, Name = name, ShortName = shortName, IndexNum = next };
|
|
basedb.DictionaryItems.Add(item);
|
|
basedb.SaveChanges();
|
|
list.Add(item);
|
|
return JsonSuccessData(list);
|
|
}
|
|
[HttpPost]
|
|
public JsonResult CheckDictionaryItem(int itemId)
|
|
{
|
|
DictionarySerivice dictionarySerivice = new DictionarySerivice();
|
|
var dic = dictionarySerivice.GetForwardDateDic();
|
|
string dicName = dic[itemId];
|
|
dicName = dicName.Trim();
|
|
|
|
var tradelist = (from ta in yLContext.trade_accumulator_option
|
|
join t in yLContext.trade on ta.TradeId equals t.id into newt
|
|
from t in newt.DefaultIfEmpty()
|
|
where ta.ForwardDateType == dicName && t.ValidState != "InValid"
|
|
select ta);
|
|
if (tradelist.Any())
|
|
{
|
|
return JsonSuccess();
|
|
}
|
|
else
|
|
{
|
|
return JsonError();
|
|
}
|
|
}
|
|
[HttpPost]
|
|
public JsonResult EditDictionaryItem(int itemId, string name, string shortName)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-数据字典"))
|
|
{
|
|
if (CurUser.结算管理_财务编码维护)
|
|
{
|
|
var financialCodeRights = new List<string>() { "用友客商编码", "财务凭证明细段", "财务凭证排除客户项" };
|
|
if (!basedb.Dictionaries.Where(o => financialCodeRights.Contains(o.Name)).Any())
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(name))
|
|
{
|
|
return JsonError("名称不能为空");
|
|
}
|
|
if (string.IsNullOrEmpty(shortName))
|
|
{
|
|
return JsonError("简称不能为空");
|
|
}
|
|
if (name.Length > 50)
|
|
{
|
|
return JsonError("名称长度超长,无法添加");
|
|
}
|
|
if (shortName.Length > 50)
|
|
{
|
|
return JsonError("简称长度超长,无法添加");
|
|
}
|
|
|
|
var item = basedb.DictionaryItems.Find(itemId);
|
|
if (item == null)
|
|
{
|
|
return JsonError("找不到条目");
|
|
}
|
|
else
|
|
{
|
|
|
|
var dict = basedb.Dictionaries.Where(O => O.Id == item.DictId).FirstOrDefault();
|
|
if (dict != null && dict.Name == "累计转远期到期日类型")
|
|
{
|
|
var dicI = basedb.DictionaryItems.FirstOrDefault(O => O.Id != itemId && O.Name == name.Trim() && O.ShortName == shortName.Trim());
|
|
if (dicI != null)
|
|
{
|
|
return JsonError("数据不能重复!");
|
|
}
|
|
}
|
|
if (dict != null && dict.Name == "行业")
|
|
{
|
|
using (var clientDb = DbContextFactory.GetClientDbContext(CurUser))
|
|
{
|
|
var clientArr = clientDb.client.Where(O => O.BusinessType == item.Name).ToArray();
|
|
foreach (var client in clientArr)
|
|
{
|
|
client.BusinessType = name;
|
|
}
|
|
clientDb.SaveChanges();
|
|
}
|
|
}
|
|
|
|
if (dict.Name == "用友客商编码")
|
|
{
|
|
var dicI = basedb.DictionaryItems.FirstOrDefault(O => O.DictId == item.DictId && O.Name == name.Trim());
|
|
if (dicI != null)
|
|
{
|
|
return JsonError("用友客商编码名称不能重复!");
|
|
}
|
|
}
|
|
|
|
item.Name = name;
|
|
item.ShortName = shortName;
|
|
basedb.SaveChanges();
|
|
|
|
}
|
|
return JsonSuccess();
|
|
}
|
|
[HttpPost]
|
|
public JsonResult DeleteDictionaryItem(int itemId)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-数据字典"))
|
|
{
|
|
if (CurUser.结算管理_财务编码维护)
|
|
{
|
|
var financialCodeRights = new List<string>() { "用友客商编码", "财务凭证明细段", "财务凭证排除客户项" };
|
|
if (!basedb.Dictionaries.Where(o => financialCodeRights.Contains(o.Name)).Any())
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
|
|
var item = basedb.DictionaryItems.Find(itemId);
|
|
if (item == null)
|
|
{
|
|
return JsonError("找不到条目");
|
|
}
|
|
else
|
|
{
|
|
var dictId = item.DictId;
|
|
basedb.DictionaryItems.Remove(item);
|
|
basedb.SaveChanges();
|
|
var list = (from o in basedb.DictionaryItems where o.DictId == dictId orderby o.IndexNum select o).ToList();
|
|
var next = 0;
|
|
if (list.Count > 0)
|
|
{
|
|
next = list[list.Count - 1].IndexNum + 1;
|
|
}
|
|
return JsonSuccessData(list);
|
|
}
|
|
}
|
|
public JsonResult ChangeDictionaryItemIndex(int itemId, int increase)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-数据字典"))
|
|
{
|
|
if (CurUser.结算管理_财务编码维护)
|
|
{
|
|
var financialCodeRights = new List<string>() { "用友客商编码", "财务凭证明细段", "财务凭证排除客户项" };
|
|
if (!basedb.Dictionaries.Where(o => financialCodeRights.Contains(o.Name)).Any())
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
|
|
var item = basedb.DictionaryItems.Find(itemId);
|
|
if (item == null)
|
|
{
|
|
return JsonError("找不到条目");
|
|
}
|
|
else
|
|
{
|
|
DictionaryItem another = null;
|
|
if (increase > 0)
|
|
{
|
|
another = (from o in basedb.DictionaryItems
|
|
where o.DictId == item.DictId && o.IndexNum > item.IndexNum
|
|
orderby o.IndexNum
|
|
select o).FirstOrDefault();
|
|
}
|
|
else
|
|
{
|
|
another = (from o in basedb.DictionaryItems
|
|
where o.DictId == item.DictId && o.IndexNum < item.IndexNum
|
|
orderby o.IndexNum descending
|
|
select o).FirstOrDefault();
|
|
}
|
|
|
|
if (another == null)
|
|
{
|
|
return JsonError("找不到可以交换位置的条目");
|
|
}
|
|
else
|
|
{
|
|
var temp = item.IndexNum;
|
|
item.IndexNum = another.IndexNum;
|
|
another.IndexNum = temp;
|
|
basedb.SaveChanges();
|
|
}
|
|
}
|
|
|
|
var list = (from o in basedb.DictionaryItems where o.DictId == item.DictId orderby o.IndexNum select o).ToList();
|
|
|
|
return JsonSuccessData(list);
|
|
}
|
|
[HttpPost]
|
|
public JsonResult UpDictionaryItem(int itemid)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-数据字典"))
|
|
{
|
|
if (CurUser.结算管理_财务编码维护)
|
|
{
|
|
var financialCodeRights = new List<string>() { "用友客商编码", "财务凭证明细段", "财务凭证排除客户项" };
|
|
if (!basedb.Dictionaries.Where(o => financialCodeRights.Contains(o.Name)).Any())
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
|
|
return ChangeDictionaryItemIndex(itemid, -1);
|
|
}
|
|
[HttpPost]
|
|
public JsonResult DownDictionaryItem(int itemid)
|
|
{
|
|
if (!CurUser.HasRight("系统管理-数据字典"))
|
|
{
|
|
if (CurUser.结算管理_财务编码维护)
|
|
{
|
|
var financialCodeRights = new List<string>() { "用友客商编码", "财务凭证明细段", "财务凭证排除客户项" };
|
|
if (!basedb.Dictionaries.Where(o => financialCodeRights.Contains(o.Name)).Any())
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return JsonError("没有权限");
|
|
}
|
|
}
|
|
|
|
return ChangeDictionaryItemIndex(itemid, 1);
|
|
}
|
|
|
|
[MyAuthorize("系统管理")]
|
|
public ViewResult ResetCache()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("系统管理")]
|
|
public JsonResult ResetCacheFunction()
|
|
{
|
|
DepartmentBLL.UpdateDepartments();
|
|
FunctionHelper.Initialize();
|
|
UserBLL.UpdateUsers();
|
|
AppHelper.ResetMenus();
|
|
Providers.MemoryCacheProvider.Default.FlushAll();
|
|
Server.CacheProvider.FlushAll();
|
|
Modules.DataCacheModule.DataCacheManager.ResetDataCache();
|
|
return Json(1);
|
|
}
|
|
|
|
[MyAuthorize("系统管理")]
|
|
public JsonResult SyncFunctionRight()
|
|
{
|
|
var functionRightXmlFilePath = Server.MapPath("/App_Data/FunctionRight.xml");
|
|
var resultMessage = new SysFunctionService(CurUser).SyncFunctionRight(functionRightXmlFilePath);
|
|
return Json(resultMessage);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 按角色查看用户
|
|
/// </summary>
|
|
public ActionResult RoleUserList(int id)
|
|
{
|
|
ViewBag.roleId = id;
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("系统管理-交易权限")]
|
|
public ActionResult SystemUserVariety()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
public JsonResult RoleUserQuery(SystemUserReq req)
|
|
{
|
|
if (req.sidx.IsNullOrWhiteSpace())
|
|
{
|
|
req.sidx = "Id";
|
|
}
|
|
var query = from source in basedb.SystemUsers
|
|
join roleUser in basedb.RoleUsers on source.Id equals roleUser.UserId into roleUser2
|
|
from roleUser in roleUser2.DefaultIfEmpty()
|
|
where roleUser.RoleId == req.RoleId
|
|
select
|
|
new ViewUser
|
|
{
|
|
id = source.Id,
|
|
LoginName = source.LoginName,
|
|
Name = source.Name,
|
|
Email = source.Email,
|
|
Tel = source.Tel,
|
|
Mobile = source.Mobile,
|
|
BondIP = source.BondIP,
|
|
RoleId = roleUser.RoleId,
|
|
State = source.State
|
|
};
|
|
string departmentQuery(int userId)
|
|
{
|
|
var departQuery = from departUser in basedb.DepartmentUsers
|
|
join depart in basedb.Departments on departUser.DepartmentId equals depart.Id
|
|
where departUser.UserId == userId
|
|
select depart.Name;
|
|
return string.Join(",", departQuery.Distinct());
|
|
}
|
|
|
|
Func<int, string> roleQuery = (userId) =>
|
|
{
|
|
var rQuery = from roleUser in basedb.RoleUsers
|
|
join role in basedb.Roles on roleUser.RoleId equals role.Id
|
|
where roleUser.UserId == userId
|
|
select role.Name;
|
|
return string.Join(",", rQuery.Distinct());
|
|
};
|
|
|
|
var result = query.ToSearchList(req);
|
|
foreach (var r in result.rows)
|
|
{
|
|
r.Departments = departmentQuery(r.id);
|
|
r.Roles = roleQuery(r.id);
|
|
}
|
|
return Json(result);
|
|
}
|
|
|
|
public static List<Role> GetUserRoles(int userid)
|
|
{
|
|
using (var baseCon = new ErpBaseContext())
|
|
{
|
|
var UserRoles = (from role in baseCon.Roles
|
|
join roleUser in baseCon.RoleUsers on role.Id equals roleUser.RoleId
|
|
where roleUser.UserId == userid
|
|
select role).ToList();
|
|
return UserRoles;
|
|
}
|
|
}
|
|
|
|
public static List<SelectListItem> GetDictionaryItems(string name)
|
|
{
|
|
var signTypes = new List<SelectListItem>();
|
|
using (var basedb = new ErpBaseContext())
|
|
{
|
|
var dicid = basedb.Dictionaries.Where(o => o.Name == name).Select(o => o.Id).FirstOrDefault();
|
|
return basedb.DictionaryItems.Where(o => o.DictId == dicid).Select(o => new SelectListItem()
|
|
{
|
|
Text = o.Name,
|
|
Value = o.ShortName
|
|
}).ToList();
|
|
}
|
|
}
|
|
|
|
public JsonResult GetSystemUserVariety(SystemUserVarietyReq systemUserVarietyReq)
|
|
{
|
|
var result = UserBLL.GetSystemUserVariety(systemUserVarietyReq);
|
|
return Json(result);
|
|
}
|
|
|
|
public ActionResult UserVarietyEdit(int UserId)
|
|
{
|
|
var user = new SystemUser();
|
|
bool IsAll = false;
|
|
if (UserId != 0)
|
|
{
|
|
user = DbContextFactory.GetErpBaseContext().SystemUsers.Where(a => a.Id == UserId).FirstOrDefault();
|
|
var varietyIds = varietyController.GetAllvariety().Select(a => Convert.ToInt32(a.Value));
|
|
if (user != null && user.VarietyIdList.Any())
|
|
{
|
|
if (varietyIds.All(a => user.VarietyIdList.Any(b => b == a)))
|
|
{
|
|
IsAll = true;
|
|
}
|
|
}
|
|
|
|
}
|
|
ViewBag.IsAll = IsAll;
|
|
return View(user);
|
|
}
|
|
|
|
public ActionResult SaveUserVarietyEdit(int UserId, string VarietyIds)
|
|
{
|
|
UserBLL.SetUserVariety(UserId, VarietyIds);
|
|
return JsonSuccess("保存成功");
|
|
}
|
|
|
|
public static List<SelectListItem> GetUserNames()
|
|
{
|
|
return UserBLL.GetSystemsByUserId().Select(a => new SelectListItem()
|
|
{
|
|
Text = a.Name,
|
|
Value = a.Id + ""
|
|
}).ToList();
|
|
}
|
|
|
|
#region 审批组
|
|
/// <summary>
|
|
/// 审批组页面
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[MyAuthorize("系统管理-审批组")]
|
|
public ActionResult ApplovalGroupIndex()
|
|
{
|
|
return View();
|
|
}
|
|
/// <summary>
|
|
/// 查询
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public ActionResult ApplovalGroupSearch(ApprovalGroupRequest req)
|
|
{
|
|
List<approvalgroups> list = new List<approvalgroups>();
|
|
var groups = basedb.approvalgroups.AsNoTracking().ToList();
|
|
var groupMembers = basedb.approvalgroupmembers.AsNoTracking().ToList();
|
|
req.MemberName = req.MemberName != null ? req.MemberName.Trim() : "";
|
|
var sysUsers = basedb.SystemUsers.AsNoTracking().ToList();
|
|
if (!string.IsNullOrEmpty(req.MemberName))
|
|
{
|
|
var query = from member in groupMembers
|
|
join user in sysUsers on member.memberId equals user.Id
|
|
where user.Name.Contains(req.MemberName) || user.LoginName.Contains(req.MemberName)
|
|
select member;
|
|
groupMembers = query.ToList(); ;
|
|
}
|
|
var memberIds = groupMembers.Select(s => s.memberId).ToList();
|
|
foreach (var group in groups)
|
|
{
|
|
group.approvalgroupmembers = groupMembers.Where(x => x.groupId == group.id).ToList();
|
|
foreach (var groupMember in group.approvalgroupmembers)
|
|
{
|
|
groupMember.member = sysUsers.FirstOrDefault(x => x.Id == groupMember.memberId);
|
|
}
|
|
if (!string.IsNullOrEmpty(req.MemberName) && group.approvalgroupmembers.Any())
|
|
{
|
|
list.Add(group);
|
|
}
|
|
else
|
|
{
|
|
list.Add(group);
|
|
}
|
|
}
|
|
list = list.OrderByDescending(o => o.id).ToList(); ;
|
|
return JsonSuccess("", list);
|
|
}
|
|
/// <summary>
|
|
/// 审批组保存
|
|
/// </summary>
|
|
/// <param name="req"></param>
|
|
/// <returns></returns>
|
|
public ActionResult SaveApplovalGroup(approvalgroups req)
|
|
{
|
|
req.groupName = req.groupName.Trim();
|
|
if (string.IsNullOrEmpty(req.groupName))
|
|
{
|
|
return JsonError("审批组名称不能为空");
|
|
}
|
|
bool edit = req.id > 0;
|
|
approvalgroups save;
|
|
if (edit)
|
|
{
|
|
save = basedb.approvalgroups.Find(req.id);
|
|
if (save == null)
|
|
{
|
|
return JsonError("审批组不存在");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
save = new approvalgroups();
|
|
}
|
|
var checkGroup = basedb.approvalgroups.Any(x => x.groupName == req.groupName && x.id != req.id);
|
|
if (checkGroup)
|
|
{
|
|
return JsonError("审批组已存在");
|
|
}
|
|
save.groupName = req.groupName;
|
|
if (!edit)
|
|
{
|
|
basedb.approvalgroups.Add(save);
|
|
}
|
|
basedb.SaveChanges();
|
|
return JsonSuccess("保存成功");
|
|
}
|
|
/// <summary>
|
|
/// 删除组
|
|
/// </summary>
|
|
/// <param name="groupId"></param>
|
|
/// <returns></returns>
|
|
public ActionResult DeleteApplovalGroup(int groupId)
|
|
{
|
|
var group = basedb.approvalgroups.Find(groupId);
|
|
if (group != null)
|
|
{
|
|
var members = basedb.approvalgroupmembers.Where(x => x.groupId == groupId);
|
|
var memberIds = members.Select(x => x.memberId).ToList();
|
|
//属于groupId审批组or不属于groupId审批组且流程的审批组id>0
|
|
if (CheckGroupIsUse(groupId, memberIds))
|
|
{
|
|
throw new ServiceException("该审批组有审批流程在使用");
|
|
}
|
|
basedb.approvalgroupmembers.RemoveRange(members);
|
|
basedb.approvalgroups.Remove(group);
|
|
basedb.SaveChanges();
|
|
}
|
|
return JsonSuccess("删除成功");
|
|
}
|
|
/// <summary>
|
|
/// 审批组成员保存
|
|
/// </summary>
|
|
/// <param name="memberList"></param>
|
|
/// <returns></returns>
|
|
public ActionResult SaveApplovalGroupMember(List<approvalgroupmembers> memberList)
|
|
{
|
|
if (memberList.Any())
|
|
{
|
|
foreach (approvalgroupmembers member in memberList)
|
|
{
|
|
var merberExist = basedb.approvalgroupmembers.FirstOrDefault(x => x.memberId == member.memberId && x.id != member.id);
|
|
if (merberExist != null)
|
|
{
|
|
var group = basedb.approvalgroups.Find(merberExist.groupId);
|
|
var user = basedb.SystemUsers.Find(member.memberId);
|
|
return JsonError($"{user.Name}已存在审批组[{group.groupName}]");
|
|
}
|
|
basedb.approvalgroupmembers.Add(member);
|
|
}
|
|
basedb.SaveChanges();
|
|
}
|
|
return JsonSuccess("保存成功");
|
|
}
|
|
/// <summary>
|
|
/// 审批组成员删除
|
|
/// </summary>
|
|
/// <param name="memberList"></param>
|
|
/// <returns></returns>
|
|
public ActionResult DeleteApplovalGroupMember(List<int> ids)
|
|
{
|
|
if (ids.Any())
|
|
{
|
|
var memberList = basedb.approvalgroupmembers.Where(x => ids.Contains(x.memberId));
|
|
var groupId = memberList.First().groupId;
|
|
//审批组 是否已在已进行的审批流程中
|
|
if (CheckGroupIsUse(groupId, ids))
|
|
{
|
|
throw new ServiceException("该审批组有审批流程在使用,不能删除成员");
|
|
}
|
|
|
|
basedb.approvalgroupmembers.RemoveRange(memberList);
|
|
basedb.SaveChanges();
|
|
}
|
|
return JsonSuccess("删除成功");
|
|
}
|
|
/// <summary>
|
|
/// 获取未加入审核组成员
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public ActionResult GetApplovalSysUserList(string name)
|
|
{
|
|
name = name != null ? name.Trim() : "";
|
|
var groupMembers = basedb.approvalgroupmembers.AsNoTracking().Select(x => x.memberId).ToList();
|
|
var query = from user in basedb.SystemUsers
|
|
where !groupMembers.Contains(user.Id) && user.State == 0
|
|
select user;
|
|
var sysUsers = query.ToList();
|
|
if (!string.IsNullOrEmpty(name))
|
|
{
|
|
sysUsers = sysUsers.Where(x => x.LoginName.Contains(name) || x.Name.Contains(name)).ToList();
|
|
}
|
|
return JsonSuccess("", sysUsers);
|
|
}
|
|
/// <summary>
|
|
/// 校验审批组是否在已使用流程中
|
|
/// </summary>
|
|
/// <param name="groupId"></param>
|
|
/// <param name="memberIds">人员id集合</param>
|
|
/// <returns></returns>
|
|
private bool CheckGroupIsUse(int groupId, List<int> memberIds)
|
|
{
|
|
//属于groupId审批组or不属于groupId审批组且流程的审批组id>0
|
|
var checkUse1 = false;
|
|
var checkUse2 = false;
|
|
var approvalprocessList = yLContext.approvalprocess.AsNoTracking().ToList();
|
|
var approcessMembers = basedb.approvalgroupmembers.AsNoTracking().ToList();
|
|
var branch1 = approvalprocessList.FirstOrDefault(x => x.approvalGroupId == groupId && x.approvalCondition == 1);//属于情况分支
|
|
var branch2 = approvalprocessList.Where(x => x.approvalGroupId != groupId && x.approvalCondition == 2 && x.approvalGroupId > 0);//不属于情况分支
|
|
List<int> roleIds = new List<int>();
|
|
if (branch1 != null)
|
|
{
|
|
var node = branch1.node;
|
|
checkUse1 = yLContext.trade.Any(x => x.ProcessOrderBranch == node && x.ProcessOrderId >= branch1.order);
|
|
if (checkUse1)
|
|
{
|
|
var approcessBanch1Members = approcessMembers.Where(x => x.groupId == groupId).Select(x => x.memberId).ToList();
|
|
if (approcessBanch1Members.Count - memberIds.Count == 0)//该组全删
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
if (branch2.Count() > 0)
|
|
{
|
|
var _branch2 = branch2.First();
|
|
checkUse2 = yLContext.trade.Any(x => x.ProcessOrderBranch != 0 && x.ProcessOrderId > _branch2.order);
|
|
if (checkUse2)
|
|
{
|
|
var approcessBanch1Members = approcessMembers.Where(x => !memberIds.Contains(x.memberId)).Select(x => x.memberId).ToList();
|
|
if (approcessBanch1Members.Count - memberIds.Count == 0)//不属于该组的全删
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 批量设置模型参数
|
|
|
|
[MyAuthorize("系统管理-批量设置模型参数")]
|
|
public ActionResult DividendRateUpdate()
|
|
{
|
|
dividendrate_record record = new dividendrate_record()
|
|
{
|
|
DividendRate = 0,
|
|
ValueDate = valuedateBLL.ValueDate,
|
|
TradeType = "雪球期权",
|
|
UnderlyingCode = "",
|
|
OptionType = "全部"
|
|
};
|
|
return View(record);
|
|
}
|
|
|
|
[MyAuthorize("系统管理-批量设置模型参数")]
|
|
public JsonResult DividendRateUpdateQuwey(dividendrate_record dividendrate_Record)
|
|
{
|
|
new DividendrateRecordService(CurUser).ChangeDividendrate(dividendrate_Record);
|
|
return JsonSuccess();
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|