using CRM.Core.DTO; using Ninject; using System; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using System.Web.UI; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.Common.Employee; using WX.CRM.IBLL.Base; using WX.CRM.IBLL.Util; using WX.CRM.Model.Entity; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.Base { //[SessionState(SessionStateBehavior.Disabled)] public class InnerUserController : BaseController { private IBAS_INNERUSER inneruserBiz; private IBAS_INNERUSER_Q inneruserBiz_Q; private IBAS_INNERUSERGROUP inneruserGroupBiz; private IBAS_INNERUSERGROUP_Q inneruserGroupBiz_Q; private IBAS_INNERUSER_EXT_Q inneruserExtend_Q; private IBAS_INNERUSER_EXT inneruserExtend; private IBAS_USERGROUPCHANGELOG userGroupChangeLog; private IBAS_SALESDEPARTMENT_Q bassaledepartment_Q; private ICACHE_Q _cacheQ; IBAS_INNERUSERROLE innerUserRoleBiz; [Inject] public IBAS_INNERUSERROLE_Q _inneruserRole { get; set; } [Inject] public IBAS_INNERGROUP_Q _INNERGROUP_Q { get; set; } [Inject] public IBAS_INNERUSERSALT _IBAS_INNERUSERSALT { get; set; } [Inject] public IBAS_INNERUSERSALT_Q _IBAS_INNERUSERSALT_Q { get; set; } ValidationErrors errors = new ValidationErrors(); public InnerUserController(IBAS_INNERUSER _inneruserBiz, IBAS_INNERUSER_Q _inneruserBiz_Q, IBAS_INNERUSERGROUP _inneruserGroupBiz, IBAS_INNERUSERGROUP_Q _inneruserGroupBiz_Q , IBAS_INNERUSER_EXT_Q _inneruserExtend_Q, IBAS_INNERUSER_EXT _inneruserExtend, IBAS_USERGROUPCHANGELOG _userGroupChangeLog, ICACHE_Q cacheQ, IBAS_INNERUSERROLE _innerUserRoleBiz , IBAS_SALESDEPARTMENT_Q _bassaledepartment_Q) { this.inneruserBiz = _inneruserBiz; this.inneruserBiz_Q = _inneruserBiz_Q; this.inneruserGroupBiz = _inneruserGroupBiz; this.inneruserGroupBiz_Q = _inneruserGroupBiz_Q; this.inneruserExtend_Q = _inneruserExtend_Q; this.inneruserExtend = _inneruserExtend; this.userGroupChangeLog = _userGroupChangeLog; this._cacheQ = cacheQ; this.innerUserRoleBiz = _innerUserRoleBiz; this.bassaledepartment_Q = _bassaledepartment_Q; } #region 首页 [AuthorizeRedirect(Roles = InitRights.CONST_员工管理)] public ActionResult Index() { //ToolBar ToolBar tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.员工管理, userRightId); tool.AllowButton(toolbtn); // tool.AllowButton("Create", "Edit", "Other1", "Details", "Delete", "Export", "Other2"); tool.AddOtherButton("Other1", "修改组", "icon-lookup", "FenPei_Click", true); tool.AddOtherButton("Other2", "查看调动日志", "icon-edit", "DiaoDong_Click", true); tool.AddOtherButton("Other3", "查看扩展属性变动日志", "icon-search", "ExtendChange_Click", true); tool.AddOtherButton("Other4", "停用设置", "icon-edit", "DismissChange_Click", true); tool.AddOtherButton("Other5", "", "", "", true); tool.AddOtherButton("Other6", "", "", "", false); tool.AddOtherButton("Other7", "设置", "icon-edit", "Setting_Click", true); tool.AddOtherButton("Other8", "修改密码", "icon-edit", "ChangePassWord_Click", true); ViewBag.ToolBar = tool; Pager pager = new Pager() { page = 1, rows = 10 }; string tableId = "tablist"; Table tab = new Table(tableId); tab.isCheckbox = true; tab.AddHiddenHeadCol("pkid", "ID");//影藏列 tab.AddHeadCol("map_eID", "", "工号", true); tab.AddHeadCol("map_uName", "", "姓名", true); //tab.AddHeadCol("map_trueName", "", "真实姓名"); tab.AddHeadCol("gName", "", "销售组"); tab.AddHeadCol("deptName", "", "部门"); tab.AddHeadCol("rolesNames", "", "角色 "); //tab.AddHeadCol("futuresStatus", "", ""); //tab.AddHeadCol("traderStatus", "", ""); //tab.AddHeadCol("tutorStatus", "", ""); //tab.AddHeadCol("MANAGERSTATUS", "", "客服经理"); //tab.AddHeadCol("GENERALCUSTOMER", "", "客服"); //tab.AddHeadCol("SENIORCUSTOMER", "", "高级客服"); tab.AddHeadCol("map_gender", "", "性别"); //tab.AddHeadCol("map_birthday", "", "生日", true); tab.AddHeadCol("map_EntryDate", "", "入职时间", true); //tab.AddHeadCol("map_POSITIVETIME", "", "转正时间", true); tab.AddHeadCol("map_isDismiss", "", "是否停用"); tab.AddHeadCol("map_dismissTime", "", "停用时间", true); tab.AddHeadCol("logTime", "", "最后登录时间", true); tab.AddHeadCol("logIp", "", "登录IP", true); tab.AddHeadCol("telNum", "", "登录分机号", true); //tab.AddHeadCol("map_dismissType", "", "离职类型"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "10,20,50"); return View(); } #endregion #region 组织结构员工列表 //[AuthorizeRedirect(Roles = InitRights.CONST_组织结构图)] public ActionResult OrganizationMapUser() { ToolBar tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.组织结构图, userRightId); tool.AllowButton(toolbtn); //tool.AllowButton(new string[] { "Other7","Other8" }); tool.AddOtherButton("Other1", "分配角色", "icon-edit", "Setting_Click", true); tool.AddOtherButton("Other2", "修改密码", "icon-edit", "ChangePassWord_Click", true); ViewBag.ToolBar = tool; //tablegrid Pager pager = new Pager() { order = "companyId", page = 1, rows = 10 }; string tableId = "tablist"; Table tab = new Table(tableId); tab.isCheckbox = true; tab.AddHiddenHeadCol("pkid", "ID");//影藏列 tab.AddHeadCol("map_eID", "", "工号", true); tab.AddHeadCol("map_uName", "", "姓名", true); //tab.AddHeadCol("map_trueName", "", "真实姓名", true); tab.AddHeadCol("gName", "", "销售组"); tab.AddHeadCol("deptName", "", "部门"); tab.AddHeadCol("rolesNames", "", "角色 "); //tab.AddHeadCol("futuresStatus", "", ""); //tab.AddHeadCol("traderStatus", "", ""); //tab.AddHeadCol("tutorStatus", "", ""); //tab.AddHeadCol("MANAGERSTATUS", "", "客服经理"); //tab.AddHeadCol("GENERALCUSTOMER", "", "客服"); //tab.AddHeadCol("SENIORCUSTOMER", "", "高级客服"); tab.AddHeadCol("map_gender", "", "性别"); //tab.AddHeadCol("map_birthday", "", "生日", true); tab.AddHeadCol("map_EntryDate", "", "入职时间", true); //tab.AddHeadCol("map_POSITIVETIME", "", "转正时间", true); tab.AddHeadCol("map_isDismiss", "", "是否停用"); tab.AddHeadCol("map_dismissTime", "", "停用时间", true); tab.AddHeadCol("logTime", "", "最后登录时间", true); tab.AddHeadCol("logIp", "", "登录IP", true); tab.AddHeadCol("telNum", "", "登录分机号", true); //tab.AddHeadCol("map_dismissType", "", "离职类型"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetTable() + Pagination.GetPage(pager, tableId, "10,20,50"); string departMentIds = string.Empty; string groupIds = string.Empty; string otherFilter = string.Empty; if (Request.QueryString["type"] == "d") { string[] ids = Request.QueryString["fid"].Split(','); foreach (string fid in ids) { if (fid.IndexOf("g_") > -1) { groupIds += fid.Replace("g_", "") + ","; } else departMentIds += fid + ","; } if (groupIds.Length > 0) groupIds = groupIds.Substring(0, groupIds.Length - 1); if (departMentIds.Length > 0) departMentIds = departMentIds.Substring(0, departMentIds.Length - 1); //departMentIds = Request.QueryString["fid"].Replace("g_", ""); } if (Request.QueryString["type"] == "g") { groupIds = Request.QueryString["fid"].Replace("g_", ""); } if (Request.QueryString["type"] == "u") { otherFilter = Request.QueryString["fid"].Replace("g_", ""); } ViewBag.departMentIds = departMentIds; ViewBag.groupIds = groupIds; ViewBag.otherFilter = otherFilter; return View(); } #endregion #region 列表 /// /// 按照条件获取数据 /// /// /// /// [AuthorizeRedirect(Roles = InitRights.CONST_组织结构图)] public JsonResult GetHtmlList(Pager pager, string columns) { ///System.Threading.Thread.Sleep(1000*60*10); string innerGroupId = Request.Form["innerGroupId"]; string innerDeptId = Request.Form["innerDeptId"]; string eId = Request.Form["eId"]; string uName = Request.Form["uName"]; string gender = Request.Form["gender"]; string isDismiss = Request.Form["isDismiss"]; string dismissType = Request.Form["dismissType"]; string dismissTime1 = Request.Form["dismissTime1"]; string dismissTime2 = Request.Form["dismissTime2"]; string EntryDate1 = Request.Form["EntryDate1"]; string EntryDate2 = Request.Form["EntryDate2"]; string isfutures = Request.Form["futures"]; string istrader = Request.Form["trader"]; string istutor = Request.Form["tutor"]; string isManager = Request.Form["Manager"]; string positiveTime1 = Request.Form["PositiveTime1"]; string positiveTime2 = Request.Form["PositiveTime2"]; string otherFilter = Request.Form["otherFilter"]; Table table = new Table(columns, true); table.isCheckbox = true; table.gridPager = pager; pager.order = "desc"; List list = inneruserBiz_Q.GetList(ref pager, innerGroupId, innerDeptId, eId, uName, gender, isDismiss, dismissType, dismissTime1, dismissTime2, EntryDate1, EntryDate2, isfutures, istrader, istutor, isManager, positiveTime1, positiveTime2, otherFilter); foreach (WX.CRM.Model.Entity.BAS_INNERUSER_Extend model in list) { table.AddHiddenCol(model.INNERUSER.PKID.ToString()); table.AddCol(model.INNERUSER.EID); table.AddCol(model.INNERUSER.UNAME); //table.AddCol(model.INNERUSER.TRUENAME); table.AddCol(model.GNAME); table.AddCol(model.DEPTNAME); table.AddCol("text-align:left", "", "   " + model.ROLESNAMES); //table.AddCol(model.FUTURESSTATUS == 1 ? "是" : "否"); //table.AddCol(model.TRADERSTATUS == 1 ? "是" : "否"); //table.AddCol(model.TUTORSTATUS == 1 ? "是" : "否"); //table.AddCol(model.MANAGERSTATUS == 1 ? "是" : "否"); //table.AddCol(model.GENERALCUSTOMER == 1 ? "是" : "否"); //table.AddCol(model.SENIORCUSTOMER == 1 ? "是" : "否"); table.AddCol(model.INNERUSER.GENDER == "m" ? "男" : "女"); //table.AddCol(model.INNERUSER.BIRTHDAY.ToString("yyyy.MM.dd")); table.AddCol(model.INNERUSER.ENTRYDATE.ToUnityString(1)); //table.AddCol(model.INNERUSER.POSITIVETIME.ToUnityString(1)); table.AddCol((model.INNERUSER.ISDISMISS == 1 ? "是" : "否")); table.AddCol(model.INNERUSER.DISMISSTIME.ToUnityString(1)); table.AddCol(model.LOGINTIME); table.AddCol(model.LOGINIP); table.AddCol(model.TELNUM); //table.AddCol(model.INNERUSER.DISMISSTYPE == null ? "" : (model.INNERUSER.DISMISSTYPE.Value == 1 ? "正常离职" : "其他离职")); table.AddRow(); } var json = new { totalPages = pager.totalPages, totalRows = pager.totalRows, rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } #endregion #region 详细 [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Details)] public ActionResult Details(string id) { WX.CRM.Model.Entity.BAS_INNERUSER model = new WX.CRM.Model.Entity.BAS_INNERUSER(); if (id != null) { model = inneruserBiz_Q.GetModel(Convert.ToDecimal(id)); } return View(model); } #endregion [HttpGet] [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Other1)] public ActionResult ChangeUserGroup(decimal id) { string isAdd = "false"; WX.CRM.Model.Entity.BAS_INNERUSERGROUP innerGroupModel = null; innerGroupModel = inneruserGroupBiz_Q.GetModel(id); if (innerGroupModel == null) { isAdd = "true"; innerGroupModel = new WX.CRM.Model.Entity.BAS_INNERUSERGROUP(); innerGroupModel.INNERUSERID = id; } ViewBag.isAdd = isAdd; ViewBag.innerGroupModel = innerGroupModel; return View(innerGroupModel); } [HttpPost] [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Other1)] public JsonResult ChangeUserGroup(WX.CRM.Model.Entity.BAS_INNERUSERGROUP rmodel, bool isAdd, decimal? oldGID) { if (!ModelState.IsValid) return JsonHandler.ValidateFailMessage(); rmodel.INNERUSERID = rmodel.INNERUSERID; if (isAdd) rmodel.CREATEUSER = UserId; else rmodel.UPDATEUSER = UserId; bool result = inneruserGroupBiz.Save(ref errors, rmodel); if (result == true) { BAS_USERGROUPCHANGELOG logModel = new BAS_USERGROUPCHANGELOG(); logModel.NEWGROUPID = rmodel.GID; logModel.OLDGROUPID = oldGID; logModel.SALESID = rmodel.INNERUSERID; logModel.INDATE = rmodel.inDate; logModel.OUTDATE = Convert.ToDateTime("2050-01-01"); result = userGroupChangeLog.Save(ref errors, logModel); } InnerUserHelper.Instance.ClearCache(); CacheHelper.Remove("cache_InnerUserGroup_getList"); return JsonHandler.ManageMessage(errors, result); } #region 编辑 [HttpGet] [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Edit)] public ActionResult Edit(string id) { string bas_key = _cacheQ.GetValue_Parameter("Bas_CanUpdateTrueName"); WX.CRM.Model.Entity.BAS_INNERUSER model = new WX.CRM.Model.Entity.BAS_INNERUSER(); WX.CRM.Model.Entity.BAS_INNERUSERGROUP innerGroupModel = new WX.CRM.Model.Entity.BAS_INNERUSERGROUP(); WX.CRM.Model.Entity.BAS_INNERUSER_EXT extendModel = new WX.CRM.Model.Entity.BAS_INNERUSER_EXT(); model.PASSWORD = ""; model.map_CPASSWORD = ""; if (id == null) { model.DISMISSTIME = DateTime.MinValue; model.ENTRYDATE = DateTime.MinValue; model.POSITIVETIME = DateTime.MinValue; model.GENDER = "m"; model.ISDISMISS = 0; model.ISHIDE = 0; extendModel.FXH_FUTURESSTATUS = 1; extendModel.FXH_TRADERSTATUS = 0; extendModel.FXH_TUTORSTATUS = 0; //extendModel.GJS_CUSTOMERMANAGER = 0; //extendModel.GENERALCUSTOMER = 0; //extendModel.SENIORCUSTOMER = 0; //extendModel.CustomerType = 0; } else { model = inneruserBiz_Q.GetModel(Convert.ToDecimal(id)); model.DISMISSTIME = model.DISMISSTIME == null ? DateTime.MinValue : model.DISMISSTIME; model.ENTRYDATE = model.ENTRYDATE == null ? DateTime.MinValue : model.ENTRYDATE; model.POSITIVETIME = model.POSITIVETIME == null ? DateTime.MinValue : model.POSITIVETIME; model.map_CPASSWORD = model.map_PASSWORD; innerGroupModel = inneruserGroupBiz_Q.GetModel(model.PKID); extendModel = inneruserExtend_Q.GetModel_InneruserExt(Convert.ToDecimal(id)); } ViewBag.innerGroupModel = innerGroupModel; ViewBag.inneruserExtend = extendModel; if (!string.IsNullOrEmpty(bas_key)) { ViewBag.isCanUpdateTrueName = bas_key;//1:可以修改 0(或者空)不可以修改 } else { ViewBag.isCanUpdateTrueName = "0"; } // ViewBag.HasAll = isSearchAll(); return View(model); } public bool isSearchAll() { string roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);//管理员 查看所有 return (roleCodes.IndexOf("[GLY]") > -1); } [HttpPost] [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Edit)] public JsonResult Edit(WX.CRM.Model.Entity.BAS_INNERUSER model, WX.CRM.Model.Entity.BAS_INNERUSER_EXT emodel) { ModelState.Remove("map_PASSWORD3"); ModelState.Remove("map_PASSWORD2"); ModelState.Remove("map_PASSWORD"); ModelState.Remove("map_CPASSWORD"); ModelState.Remove("map_CPASSWORD2"); ModelState.Remove("map_SnCode"); if (model.PKID == 0) { if (!ModelState.IsValid) return JsonHandler.ValidateFailMessage(); } else { ModelState.Remove("PASSWORD"); if (!ModelState.IsValid) return JsonHandler.ValidateFailMessage(); } model.DISMISSTYPE = model.DISMISSTYPE == -1 ? null : model.DISMISSTYPE; if (model.PKID == 0) { model.CTIME = DateTime.Now; model.CREATEUSER = UserId; model.POSITIVETIME = model.POSITIVETIME == null ? model.ENTRYDATE : model.POSITIVETIME; string user_salt = Utility.CreateRandomSatl(8); if (!string.IsNullOrEmpty(model.PASSWORD)) { model.PASSWORD = Utility.Sha512(model.PASSWORD + user_salt); } decimal pkid = inneruserBiz.Create(ref errors, model); //rmodel.INNERUSERID = pkid; //rmodel.CREATEUSER = UserId; if (pkid > 0) { emodel.INNERUSERID = pkid; //inneruserGroupBiz.Save(ref errors, rmodel); inneruserExtend.Create_InnerUserExtend(ref errors, emodel); BAS_INNERUSERSALT userSaltModel = new BAS_INNERUSERSALT(); userSaltModel.INNERUSERID = pkid; userSaltModel.EID = model.EID; userSaltModel.PWDSALT = user_salt; userSaltModel.CTIME = DateTime.Now; userSaltModel.CREATEUSER = UserId; _IBAS_INNERUSERSALT.Create(userSaltModel); } bool scucced = true; if (pkid == 0) scucced = false; InnerUserHelper.Instance.ClearCache(); CacheHelper.Remove("cache_user_list"); return JsonHandler.InsertMessage(errors, scucced); } else { model.UTIME = DateTime.Now; model.UPDATEUSER = UserId; model.POSITIVETIME = model.POSITIVETIME == null ? model.ENTRYDATE : model.POSITIVETIME; string user_salt = _IBAS_INNERUSERSALT_Q.getUserSalt(model.PKID, model.EID).PWDSALT; if (!string.IsNullOrEmpty(model.PASSWORD)) { model.PASSWORD = Utility.Sha512(model.PASSWORD + user_salt); } bool scucced = inneruserBiz.Update(ref errors, model); //rmodel.INNERUSERID = model.PKID; //rmodel.CREATEUSER = UserId; //rmodel.UPDATEUSER = UserId; emodel.INNERUSERID = model.PKID; //inneruserGroupBiz.Save(ref errors, rmodel); inneruserExtend.Update_InnerUserExtend(ref errors, emodel, UserId); InnerUserHelper.Instance.ClearCache(); CacheHelper.Remove("cache_user_list"); return JsonHandler.UpdateMessage(errors, scucced); } } #endregion #region 员工在离职编辑 [HttpGet] [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Other4)] public ActionResult EditDismiss(string id) { BAS_INNERUSER model = inneruserBiz_Q.GetModel(Convert.ToDecimal(id)); model.DISMISSTIME = model.DISMISSTIME ?? DateTime.Now; return View(model); } [HttpPost] [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Other4)] public JsonResult EditDismiss(WX.CRM.Model.Entity.BAS_INNERUSER model) { if (model.ISDISMISS == 0) { model.DISMISSTIME = null; model.DISMISSTYPE = null; } model.UTIME = DateTime.Now; model.UPDATEUSER = UserId; inneruserBiz.UpdateDismiss(model, UserId); InnerUserHelper.Instance.ClearCache(); CacheHelper.Remove("cache_user_list"); return JsonHandler.ManageMessage("修改成功", true); } #endregion #region 员工客服状态编辑 [HttpGet] [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Other6)] public ActionResult EditUserCustomer(string id, string eid) { BAS_INNERUSER_EXT extendModel = inneruserExtend_Q.GetModel_InneruserExt(Convert.ToDecimal(id)); ViewBag.map_eID = eid; return View(extendModel); } [HttpPost] [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Other6)] public JsonResult EditUserCustomer(WX.CRM.Model.Entity.BAS_INNERUSER_EXT emodel) { inneruserExtend.Update_UserCustomer(emodel, UserId); InnerUserHelper.Instance.ClearCache(); return JsonHandler.ManageMessage("修改成功", true); } #endregion #region 删除 /// /// 删除数据 /// /// /// [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Delete)] public JsonResult Delete(string id) { if (string.IsNullOrWhiteSpace(id)) return JsonHandler.ManageMessage("参数错误", false); bool result = inneruserBiz.Delete(ref errors, Convert.ToDecimal(id)); InnerUserHelper.Instance.ClearCache(); return JsonHandler.DeleteMessage(errors, result); } #endregion #region 修改个人信息 [HttpGet] [Authorize] public ActionResult ChangeUserIfo() { ModelState.Remove("map_PASSWORD"); //加上这句就行了 WX.CRM.Model.Entity.BAS_INNERUSER model = inneruserBiz_Q.GetModel(UserId); model.map_CPASSWORD = model.map_PASSWORD; return View(model); } [HttpPost] [Authorize] public ActionResult ChangeUserIfo(WX.CRM.Model.Entity.BAS_INNERUSER ChangeModel) { WX.CRM.Model.Entity.BAS_INNERUSER model = inneruserBiz_Q.GetModel(UserId); var apiResult = ChangeThirdPassWord(model.EID, ChangeModel.PASSWORD); if (apiResult.ret != 0) { errors.Add($"工号【{model.EID}】修改密码失败,失败原因【{apiResult.msg}】,请到员工系统进行核对"); return JsonHandler.UpdateMessage(errors, false); } model.map_PASSWORD = ChangeModel.map_PASSWORD; model.map_CPASSWORD = ChangeModel.map_CPASSWORD; string user_salt = _IBAS_INNERUSERSALT_Q.getUserSalt(model.PKID, model.EID).PWDSALT; model.PASSWORD = Utility.Sha512(model.PASSWORD + user_salt); model.UPDATEUSER = UserId; model.UTIME = DateTime.Now; bool scucced = inneruserBiz.Update(ref errors, model); InnerUserHelper.Instance.ClearCache(); return JsonHandler.UpdateMessage(errors, scucced); } #endregion #region 检查员工是否存在 [OutputCache(Location = OutputCacheLocation.None, NoStore = true)] public ActionResult CheckUserByEid() { string Usereid = Request.QueryString[Request.QueryString.GetKey(0)]; decimal eid; bool isValidate = false; if (decimal.TryParse(Usereid, out eid)) { var user = inneruserBiz_Q.getInnerUserByEid(eid); if (user != null) isValidate = true; } return Json(isValidate, JsonRequestBehavior.AllowGet); } #endregion #region Excel导出 /// /// 导出所有信息 /// /// [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Export)] public FileResult ExportAll() { Pager pager = new Pager() { order = "asc", rows = int.MaxValue, sort = "pkid" }; string checkedFilds = PageRequest.GetQueryString("checkedFilds"); string checkedTitles = PageRequest.GetQueryString("checkedTitles"); List list = inneruserBiz_Q.GetList(ref pager, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""); return File(ExcelHelper.ExportListModelToExcel(list, "员工列表", 10000, checkedFilds, checkedTitles, DataFormart), "application/ms-excel", PageRequest.GetDlownLoadName("员工列表--所有.xls")); } //用作委托传递 public string DataFormart(string key, object value) { string formartValue = string.Empty; switch (key) { case "map_GENDER": switch (Convert.ToString(value)) { case "m": formartValue = "男"; break; case "f": formartValue = "女"; break; default: formartValue = ""; break; }; break; case "map_DISMISSTYPE": switch (Convert.ToString(value)) { case "1": formartValue = "正常离职"; break; case "0": formartValue = "其他离职"; break; default: formartValue = ""; break; } ; break; case "map_ISDISMISS": switch (Convert.ToString(value)) { case "0": formartValue = "未离职"; break; case "1": formartValue = "已离职"; break; default: formartValue = ""; break; } ; break; case "FUTURESSTATUS": formartValue = (value ?? "0").ToString() == "1" ? "是" : "否"; break; case "TRADERSTATUS": formartValue = (value ?? "0").ToString() == "1" ? "是" : "否"; break; case "TUTORSTATUS": formartValue = (value ?? "0").ToString() == "1" ? "是" : "否"; break; case "MANAGERSTATUS": formartValue = (value ?? "0").ToString() == "1" ? "是" : "否"; break; case "GENERALCUSTOMER": formartValue = (value ?? "0").ToString() == "1" ? "是" : "否"; break; case "SENIORCUSTOMER": formartValue = (value ?? "0").ToString() == "1" ? "是" : "否"; break; default: formartValue = string.Format("{0}", value); break; } return formartValue; } /// /// 导出当前页面 /// /// [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Export)] public FileResult ExportCurrentPage() { Pager pager = PageRequest.GetGirdPager(); string checkedFilds = PageRequest.GetQueryString("checkedFilds"); string innerGroupId = Request.QueryString["innerGroupId"]; string innerDeptId = Request.QueryString["innerDeptId"]; string eId = Request.QueryString["eId"]; string uName = Request.QueryString["uName"]; string gender = Request.QueryString["gender"]; string isDismiss = Request.QueryString["isDismiss"]; string dismissType = Request.QueryString["dismissType"]; string dismissTime1 = Request.QueryString["dismissTime1"]; string dismissTime2 = Request.QueryString["dismissTime2"]; string EntryDate1 = Request.QueryString["EntryDate1"]; string EntryDate2 = Request.QueryString["EntryDate2"]; string isfutures = Request.QueryString["futures"]; string istrader = Request.QueryString["trader"]; string istutor = Request.QueryString["tutor"]; string isManager = Request.Form["Manager"]; string positiveTime1 = Request.QueryString["PositiveTime1"]; string positiveTime2 = Request.QueryString["PositiveTime2"]; List list = inneruserBiz_Q.GetList(ref pager, innerGroupId, innerDeptId, eId, uName, gender, isDismiss, dismissType, dismissTime1, dismissTime2, EntryDate1, EntryDate2, isfutures, istrader, istutor, isManager, positiveTime1, positiveTime2); return File(ExcelHelper.ExportListModelToExcel(list, "员工列表", 10000, checkedFilds, DataFormart), "application/ms-excel", PageRequest.GetDlownLoadName("员工列表--当前页.xls")); } /// /// 导出条件下的全部数据 /// /// [AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Export)] public FileResult ExportCurrentAllPage() { Pager pager = new Pager() { order = "asc", rows = int.MaxValue, sort = "pkid" }; string checkedFilds = PageRequest.GetQueryString("checkedFilds"); string innerGroupId = Request.QueryString["innerGroupId"]; string innerDeptId = Request.QueryString["innerDeptId"]; string eId = Request.QueryString["eId"]; string uName = Request.QueryString["uName"]; string gender = Request.QueryString["gender"]; string isDismiss = Request.QueryString["isDismiss"]; string dismissType = Request.QueryString["dismissType"]; string dismissTime1 = Request.QueryString["dismissTime1"]; string dismissTime2 = Request.QueryString["dismissTime2"]; string EntryDate1 = Request.QueryString["EntryDate1"]; string EntryDate2 = Request.QueryString["EntryDate2"]; string isfutures = Request.QueryString["futures"]; string istrader = Request.QueryString["trader"]; string istutor = Request.QueryString["tutor"]; string isManager = Request.Form["Manager"]; string positiveTime1 = Request.QueryString["PositiveTime1"]; string positiveTime2 = Request.QueryString["PositiveTime2"]; List list = inneruserBiz_Q.GetList(ref pager, innerGroupId, innerDeptId, eId, uName, gender, isDismiss, dismissType, dismissTime1, dismissTime2, EntryDate1, EntryDate2, isfutures, istrader, istutor, isManager, positiveTime1, positiveTime2); return File(ExcelHelper.ExportListModelToExcel(list, "员工列表", 10000, checkedFilds, DataFormart), "application/ms-excel", PageRequest.GetDlownLoadName("员工列表--条件所有.xls")); } #endregion public ActionResult InnsuerTree() { var glist = _INNERGROUP_Q.GetList(); var ulist = inneruserBiz_Q.GetList(); var uglist = inneruserGroupBiz_Q.GetList(); var org = glist.ConvertAll(item => new treenode() { id = item.GID, name = item.GNAME } ); foreach (var g in org) { var ug = from t1 in uglist join t2 in ulist on t1.INNERUSERID equals t2.PKID where t1.GID == g.id select new { t2.EID, t2.UNAME, t1.GID }; g.children = ug.ToList() .ConvertAll(item3 => new treenode() { id = item3.EID, name = item3.UNAME } ); } ViewData["GLIST"] = glist; return Json(org, JsonRequestBehavior.AllowGet); } public class treenode { public decimal id { get; set; } public string name { get; set; } public int resnum { get; set; } public List children { get; set; } } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_角色权限管理)] public ActionResult InitInnerUser(int? eid) { var list = inneruserBiz_Q.GetAllList(); if (eid != null) { list = list.Where(o => o.EID == eid).ToList(); } foreach (BAS_INNERUSER model in list) { if (model.EID != 10000) { string user_salt = _IBAS_INNERUSERSALT_Q.getUserSalt(model.PKID, model.EID).PWDSALT; BAS_INNERUSERSALT userSaltModel = new BAS_INNERUSERSALT(); userSaltModel.INNERUSERID = model.PKID; userSaltModel.EID = model.EID; userSaltModel.PWDSALT = user_salt; userSaltModel.CTIME = DateTime.Now; userSaltModel.CREATEUSER = UserId; _IBAS_INNERUSERSALT.Create(userSaltModel); model.PASSWORD = Utility.Sha512("abc123" + user_salt); bool scucced = inneruserBiz.Update(ref errors, model); } } return View(); } #region 修改密码 [HttpGet] //[AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Other8)] [AuthorizeToolBarMore(new string[] { InitRights.CONST_员工管理, InitRights.CONST_组织结构图 }, new int[] { InitToolBar.CONST_Other8, InitToolBar.CONST_Other2 })] public ActionResult EditPassWord(string pkids) { if (pkids == "") { throw new Exception("请至少勾选一行"); } var userIdList = pkids.Split(',').Select(n => Convert.ToDecimal(n)).ToList(); USER_EDITPASSWORDVIEW model = new USER_EDITPASSWORDVIEW(); var userList = inneruserBiz_Q.GetAllList().Where(n => userIdList.Contains(n.PKID)).ToList(); if (userIdList.Count == 0) { throw new Exception("找不到勾选的用户"); } model.Pkid = pkids; model.Name = string.Join(",", userList.Select(n => n.UNAME).ToList()); return View(model); } [HttpPost] //[AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Other8)] [AuthorizeToolBarMore(new string[] { InitRights.CONST_员工管理, InitRights.CONST_组织结构图 }, new int[] { InitToolBar.CONST_Other8, InitToolBar.CONST_Other2 })] public JsonResult EditPassWord(USER_EDITPASSWORDVIEW model) { bool scucceed = false; if (!string.IsNullOrEmpty(model.Pkid)) { var userIdList = model.Pkid.Split(',').Select(n => Convert.ToDecimal(n)).ToList(); var userList = inneruserBiz_Q.GetAllList().Where(n => userIdList.Contains(n.PKID)).ToList(); foreach (var entry in userList) { var apiResult = ChangeThirdPassWord(entry.EID, model.PASSWORD); if (apiResult.ret != 0) { errors.Add($"工号【{entry.EID}】修改密码失败,失败原因【{apiResult.msg}】,请到员工系统进行核对"); continue; } string user_salt = _IBAS_INNERUSERSALT_Q.getUserSalt(entry.PKID, entry.EID).PWDSALT; entry.PASSWORD = Utility.Sha512(model.PASSWORD + user_salt); entry.UPDATEUSER = UserId; entry.UTIME = DateTime.Now; scucceed = inneruserBiz.Update(ref errors, entry); if (!scucceed) { return JsonHandler.UpdateMessage(errors, scucceed); } } } InnerUserHelper.Instance.ClearCache(); CacheHelper.Remove("cache_user_list"); return JsonHandler.UpdateMessage(errors, scucceed); } /// /// 修改sso密码 /// /// public ApiResult ChangeThirdPassWord(decimal eid,string passWord) { var ssoUrl = System.Configuration.ConfigurationManager.AppSettings["SSOUrl"]; var appid = System.Configuration.ConfigurationManager.AppSettings["appid"]; var appSecret = System.Configuration.ConfigurationManager.AppSettings["appSecret"]; if(string.IsNullOrEmpty(ssoUrl) || string.IsNullOrEmpty(appid) || string.IsNullOrWhiteSpace(appSecret)) { LogHelper.Error($"请配置相关sso密钥配置【{ssoUrl}】【{appid}】【{appSecret}】"); throw new Exception("请配置相关sso密钥配置"); } ApiDockHelper dock = new ApiDockHelper(appid, appSecret); Dictionary dic = new Dictionary(); ssoUrl = ssoUrl + "/v1/api/open/sso/changePassword"; var md5PassWord = dock._md5(passWord); dic.Add("employeeId", eid.ToString()); dic.Add("password", md5PassWord); ApiResult model = dock.PostApi(ssoUrl, dic); return model; } #endregion #region 设置 [HttpGet] //[AuthorizeToolBar(InitRights.CONST_员工管理, InitToolBar.CONST_Other8)] [AuthorizeToolBarMore(new string[] { InitRights.CONST_员工管理, InitRights.CONST_组织结构图 }, new int[] { InitToolBar.CONST_Other7, InitToolBar.CONST_Other1 })] public ActionResult EditSetting(string pkids) { ViewBag.isAdmin = Eid == 10000 ? "1" : "0"; var view = new BAS_INNERUSER_SETTINGVIEW(); var userIdList = pkids.Split(',').Select(n => Convert.ToDecimal(n)).ToList(); //获取所有角色 var roleList = _inneruserRole.GetInneruserRoleByUserIdList(userIdList); //当所有用户的角色都相同的时候 赋值 var groupCount = roleList.GroupBy(n => n.ROLEID).Select(n => new { Roleid = n.Key, Count = n.Count() }).ToList(); if (!groupCount.Exists(n => n.Count != userIdList.Count())) { view.ulRoleIds = string.Join(",", groupCount.Select(n => n.Roleid).ToList()); } view.INNERUSERIDLIST = pkids; ViewBag.isAdd = false; return View(view); } [HttpPost] [AuthorizeToolBarMore(new string[] { InitRights.CONST_员工管理, InitRights.CONST_组织结构图 }, new int[] { InitToolBar.CONST_Other7, InitToolBar.CONST_Other1 })] public JsonResult EditSetting(WX.CRM.Model.Entity.BAS_INNERUSER_SETTINGVIEW model) { var result = true; if (!ModelState.IsValid) return JsonHandler.ValidateFailMessage(); List userIds = model.INNERUSERIDLIST.Split(',').Select(n => Convert.ToDecimal(n)).ToList(); //赋值权限 result = innerUserRoleBiz.Save(ref errors, 0, model.ulRoleIds, model.INNERUSERIDLIST); InnerUserHelper.Instance.ClearCache(); CacheHelper.Remove("cache_InnerUserGroup_getList"); return JsonHandler.ManageMessage(errors, result); } #endregion /// /// 属性改变后规则回收 /// /// /// //public JsonResult RecoveryCommissionRule() //{ // try // { // inneruserBiz.ExecRuleByChangeAttr(); // var lis = new { result = 1, msg = "成功!" }; // return Json(lis, JsonRequestBehavior.AllowGet); // } // catch (Exception ex) // { // var lis = new { result = 0, msg = ex.Message }; // return Json(lis, JsonRequestBehavior.AllowGet); // } //} /// /// 组织结构树 /// /// public JsonResult GetInneruserTree(bool hasUser = true, string currentRight = null) { var level = LevelSSO(currentRight); var obj = _cacheQ.GetInneruserTree(true); //if (level == "All") //{ // return Json(obj, JsonRequestBehavior.AllowGet); ; //} //else if (level == "Dept") //{ // var list = (List)obj; // var data = CreateInneruserTree(new List(), list); //} //else if (level == "Self") //{ //} /* List objjson = new List(); if (type == 1) { objjson.Add(new { id = "0", text = "全部", iconCls = "icon-group" }); } objjson.AddRange(obj); if (type == 3) { objjson.Insert(0, new { id = "0", text = "全部", iconCls = "icon-group" }); }*/ return Json(obj, JsonRequestBehavior.AllowGet); ; } private List CreateInneruserTree(List list, List obj) { foreach(var item in obj) { if (item == null) continue; if (userOnGroupId.ToList().Contains(item.value.Value)) { if (!list.Any(x => x.value == item.value)) { list.Add(item); } } else { if (item.children != null && item.children.Any()) { list.AddRange(CreateInneruserTree(list, item.children)); } } } return list; } } }