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