using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text.RegularExpressions; using System.Web.Mvc; using CommonHelper; using CommonHelper.Redis; using CommonHelper.Weixin; using GasolineBlend.BLL; using GasolineBlend.Entity; using GasolineBlend.Filter; using NPOI.SS.Formula.Functions; using NPOI.Util; using RiskControl.NewService.ThirdPartyApi; namespace GasolineBlend.Controllers { public class UserController : BaseController { private AccountBLL _acc = new AccountBLL(); /// /// 获取用户信息列表 /// /// /// /// /// [HttpPost] public ActionResult GetAccountList(int RoleId, int CompanyId,int UserIdExclude=0) { try { if (RoleId == (int)UserRoleType.CommonAdmin)//企业管理员列表 { var list = _acc.GetAccountList(RoleId); return SuccessNoShow(data: list); } else if (RoleId == (int)UserRoleType.User) //普通用户列表 { //if (UserIdExclude == 0) //包括本用户 //{ var list = _acc.GetAccountList(RoleId, CompanyId); //取消UserIdExclude的赋值 return SuccessNoShow(data: list); //} //else //{ // var list = _acc.GetAccountList(RoleId, CompanyId,UserIdExclude); // return SuccessNoShow(data: list); //} } else { return Error(); } } catch (Exception e) { LogHelper.Write(Level.Error, "获取存量现金资产列表 GetAssessCapitalList", e, OperatorProvider.Instance.Current==null?"GuestEx":OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 根据公司获取账户列表 /// /// /// [HttpPost] public ActionResult GetAccountListByCompanyId(int MoneyMonitorId,int CompanyId=0) { try { var list = _acc.GetAccountListByCompany((int)UserRoleType.User, CompanyId, MoneyMonitorId); return SuccessNoShow(data: list); } catch (Exception e) { LogHelper.Write(Level.Error, "根据公司获取账户列表 GetAccountListByCompanyId", e, OperatorProvider.Instance.Current==null?"GuestEx":OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 根据公司获取账户列表 /// /// /// [HttpPost] public ActionResult GetAccountByCompanyId(int CompanyId = 0) { try { var list = _acc.GetAccountByCompanyId(CompanyId); return SuccessNoShow(data: list); } catch (Exception e) { LogHelper.Write(Level.Error, "根据公司获取账户列表 GetAccountByCompanyId", e, OperatorProvider.Instance.Current==null?"GuestEx":OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 通过token获取用户信息 /// /// /// [HttpPost] public ActionResult GetUserInfo(string token="",int id=-1,string Name="") { try { PageRouteBLL pageRouteBLL = new PageRouteBLL(); PageRoute CurrentInfo = null; if (token=="" || id==null) //OperatorProvider.Instance.Current == null || OperatorProvider.Instance.Current.Token != token || { //return ErrorNoShow("用户信息失效,请重新登录!"); Name = Name == "" ? "newsFlashEx_tool" : Name; CurrentInfo = pageRouteBLL.GetPageRouteInfo(Name); if (CurrentInfo != null) { var PathList = pageRouteBLL.GetPathArr(CurrentInfo.TypeId); var PathName = PathList.Select(p => p.Name).ToList(); var Path = string.Join(",", PathName.ToArray()); var accessArr = Path.Split(','); var obj = new { name = "default", //用户名 access = accessArr, //权限管理 user_id = 0, //用户id currentRedirect = CurrentInfo.Redirect,//当前存储路由 avator = "https://file.iviewui.com/dist/a0e88e83800f138b94d2414621bd9704.png" //头像//头像URL }; return SuccessNoShow(data: obj); } else { return ErrorNoShow(); } } else { Account account = _acc.GetAccount(OperatorProvider.Instance.Current.UserId); Name = Name == "backEvaluateReport" ? "accessReportList" : Name; if (Name == "chooseAssess") { Name = "accessReportList"; } if (account.RoleId == (int)UserRoleType.SuperAdmin) { CurrentInfo = pageRouteBLL.GetPageRouteInfo("accountManagement_s"); } else if (account.RoleId == (int)UserRoleType.CommonAdmin) { CurrentInfo = pageRouteBLL.GetPageRouteInfo("accountManagement"); } else { CurrentInfo = pageRouteBLL.GetPageRouteInfo(Name); } if (CurrentInfo == null) { //LogHelper.Error($"当前路由获取为空,当前账号为:{OperatorProvider.Instance.Current.LoginName},传入参数为:{Name}"); PageRoute pageRoute = new PageRoute() { TypeId = 3, Redirect = "newsFlashEx_tool" }; CurrentInfo = pageRoute; } if (id > 0)//获取用户全面的信息 { if (id == OperatorProvider.Instance.Current.UserId) { account.Password = ""; return SuccessNoShow(data: account); } else { return Error("当前用户非登录用户!请重新登录!"); } } else //获取用户定制的信息 { string userType = "no_admin";//(account.DefaultProjId == 0 ? "" : "no_admin"); if (account.RoleId == (int)UserRoleType.SuperAdmin) { userType = "super_admin"; } else if (account.RoleId == (int)UserRoleType.CommonAdmin) { userType = "company_admin"; } if (CurrentInfo.TypeId != 2 && CurrentInfo.TypeId != 9) { bool EditFlag = (account.DefaultProjId == 0 //编辑还是只读模式 ? true : account.DefaultMode != (int)DefaultModeType.Edit); Project project = new Project(); var Flags = _acc.GetUserFlag(account.DefaultProjId, OperatorProvider.Instance.Current.UserId, ref project); bool RateModeFlag = Flags[0]; //新利率期限是否更新 bool WorkFlowFlag = Flags[1]; //处理流程按钮是否显示 var ProjectBasic = project == null //项目基础信息的数组 ? new string[] { "无默认项目", "", "" } : new string[] { project.Title, project.Department, project.Person }; //资金显示 var MoneyMonitorShow = (account.MoneyMonitorId == 0 ? false : true); //资金监控修改权限 var MoneyMonitorFlag = (account.MoneyMonitorId == 1 ? true : false); //企业监控显示 var CompanyMonitorShow = (account.CompanyMonitorId == 0 ? false : true); //企业监控改权限 var CompanyMonitorFlag = (account.CompanyMonitorId == 1 ? true : false); string access = ""; if (userType != "no_admin") { int TypeId = userType == "super_admin" ? -2 : -3; var PathList = pageRouteBLL.GetPathArr(TypeId); var PathName = PathList.Select(p => p.Name).ToList(); if (TypeId == -2) { access = userType; var Path = string.Join(",", PathName.ToArray()); access += "," + Path; account.CurrentRedirect = "accountManagement_s"; account.CurrentTypeId = TypeId; account.CurrentTypeName = "accountManagement_s"; } else { access = userType; var Path = string.Join(",", PathName.ToArray()); access += "," + Path; account.CurrentRedirect = "accountManagement"; account.CurrentTypeId = TypeId; account.CurrentTypeName = "accountManagement"; } } else { var PathList = pageRouteBLL.GetPathArr(/*account.CurrentTypeId*/CurrentInfo.TypeId); var PathName = PathList.Select(p => p.Name).ToList(); _acc.UpdCurrentTypeId(PathList[0].TypeId, PathList[0].Name, PathList[0].Redirect, OperatorProvider.Instance.Current.UserId); var PathAll = pageRouteBLL.GetPathList(/*account.CurrentTypeId*/CurrentInfo.TypeId); if (MoneyMonitorShow == false) { PathName.Remove("diligenceTools2s"); } if (CompanyMonitorShow == false) { PathName.Remove("enterpriseControls"); } //PathName = PathName.OrderByDescending(x => x == Name).ToList(); var Path = string.Join(",", PathName.ToArray()); access = Path; } var accessArr = access.Split(','); var obj = new { name = OperatorProvider.Instance.Current.LoginName, //用户名 user_id = OperatorProvider.Instance.Current.UserId, //用户id releName = account.RealName,//真实姓名 access = accessArr, //权限管理 currentRedirect = CurrentInfo.Redirect,//当前存储路由 token = token, //不要 company_id = account.CompanyId, //上级用户的id defaultproj_id = account.DefaultProjId, defaultrategrade = account.RateGradeFlag, //1-启用评级主标尺 0-不启用评级主标尺 defaultmode = EditFlag, //0-编辑false 1-只能查看true defaultratemode = !RateModeFlag, //1代表一致无需更新利率期限,0代表需要更新利率期限 RateModeFlag defaultworkflow = WorkFlowFlag, //0-隐藏处理流程按钮false,1-显示处理流程按钮true defaultmoneymonitorflag = MoneyMonitorFlag,//资金查看权限 0代表不能查看 1代表能查看 2代表能修改 defaultcommonitorflag = CompanyMonitorFlag,//企业查看权限 0代表不能查看 1代表能查看 2代表能修改 defaultprojbasic = ProjectBasic, avator = "https://file.iviewui.com/dist/a0e88e83800f138b94d2414621bd9704.png" //头像//头像URL }; if (account.CurrentTypeId == 1) { return ((account.DefaultProjId > 0 && userType == "no_admin") || userType != "no_admin") ? SuccessNoShow(data: obj) : Success("系统无默认项目,请选择已有项目或创建新项目!", true, ShowDetail.ModalInfo.GetDisplayName(), obj); } else { return SuccessNoShow(data: obj); } } else //极速版 { bool EditFlag = (account.DefaultProjIdEx == 0 //编辑还是只读模式 ? true : account.DefaultModeEx != (int)DefaultModeType.Edit); ProjectEx project = new ProjectEx(); var Flags = _acc.GetUserFlagEx(account.DefaultProjIdEx, OperatorProvider.Instance.Current.UserId, ref project); bool RateModeFlag = Flags[0]; //新利率期限是否更新 bool WorkFlowFlag = Flags[1]; //处理流程按钮是否显示 var ProjectBasic = project == null //项目基础信息的数组 ? new string[] { "无默认项目", "", "" } : new string[] { project.Title, project.Department, project.Person }; //资金显示 var MoneyMonitorShow = (account.MoneyMonitorId == 0 ? false : true); //资金监控修改权限 var MoneyMonitorFlag = (account.MoneyMonitorId == 1 ? true : false); //企业监控显示 var CompanyMonitorShow = (account.CompanyMonitorId == 0 ? false : true); //企业监控改权限 var CompanyMonitorFlag = (account.CompanyMonitorId == 1 ? true : false); string access = ""; if (userType != "no_admin") { int TypeId = userType == "super_admin" ? -2 : -3; var PathList = pageRouteBLL.GetPathArr(TypeId); var PathName = PathList.Select(p => p.Name).ToList(); //var PathAll = pageRouteBLL.GetPathList(TypeId); if (TypeId == -2) { access = userType; var Path = string.Join(",", PathName.ToArray()); access += "," + Path; account.CurrentRedirect = "accountManagement_s"; account.CurrentTypeId = TypeId; account.CurrentTypeName = "accountManagement_s"; } else { access = userType; var Path = string.Join(",", PathName.ToArray()); access += "," + Path; account.CurrentRedirect = "accountManagement"; account.CurrentTypeId = TypeId; account.CurrentTypeName = "accountManagement"; } } else { var PathList = pageRouteBLL.GetPathArr(/*account.CurrentTypeId*/CurrentInfo.TypeId); _acc.UpdCurrentTypeId(PathList[0].TypeId, PathList[0].Name, PathList[0].Redirect, OperatorProvider.Instance.Current.UserId); var PathName = PathList.Select(p => p.Name).ToList(); //var PathAll = pageRouteBLL.GetPathList(/*account.CurrentTypeId*/CurrentInfo.TypeId); if (MoneyMonitorShow == false) { PathName.Remove("diligenceTools2s"); } if (CompanyMonitorShow == false) { PathName.Remove("enterpriseControls"); } // PathName = PathName.OrderByDescending(x => x == Name).ToList(); var Path = string.Join(",", PathName.ToArray()); access = Path; //if (access == "" || account.CurrentRedirect == "" || account.CurrentTypeName == "" || account.CurrentTypeId == 0) //{ // access = "newdiligenceTools"; // account.CurrentRedirect = "newsFlashEx_tool"; // account.CurrentTypeId = 3; // account.CurrentTypeName = "newdiligenceTools"; // LogHelper.Error($"当前路由获取为空,当前账号为:{OperatorProvider.Instance.Current.LoginName}"); //} //else if (PathAll.Find(p => p.Name == account.CurrentTypeName && p.Redirect == account.CurrentRedirect) == null) //{ // access = "newdiligenceTools"; // account.CurrentRedirect = "newsFlashEx_tool"; // account.CurrentTypeId = 3; // account.CurrentTypeName = "newdiligenceTools"; // LogHelper.Error($"当前路由获取错误(CurrentTypeName为:{account.CurrentTypeName}CurrentRedirect为:{account.CurrentRedirect}),当前账号为:{OperatorProvider.Instance.Current.LoginName}"); //} //else //{ // access = Path; //} } var accessArr = access.Split(','); var obj = new { name = OperatorProvider.Instance.Current.LoginName, //用户名 user_id = OperatorProvider.Instance.Current.UserId, //用户id releName = account.RealName,//真实姓名 access = accessArr, //权限管理 currentRedirect = CurrentInfo.Redirect,//当前存储路由 token = token, //不要 company_id = account.CompanyId, //上级用户的id defaultproj_id = account.DefaultProjIdEx, defaultrategrade = account.RateGradeFlag, //1-启用评级主标尺 0-不启用评级主标尺 defaultmode = EditFlag, //0-编辑false 1-只能查看true defaultratemode = !RateModeFlag, //1代表一致无需更新利率期限,0代表需要更新利率期限 RateModeFlag defaultworkflow = WorkFlowFlag, //0-隐藏处理流程按钮false,1-显示处理流程按钮true defaultmoneymonitorflag = MoneyMonitorFlag,//资金查看权限 0代表不能查看 1代表能查看 2代表能修改 defaultprojbasic = ProjectBasic, avator = "https://file.iviewui.com/dist/a0e88e83800f138b94d2414621bd9704.png" //头像//头像URL }; if (account.CurrentTypeId == 2) { return ((account.DefaultProjIdEx > 0 && userType == "no_admin") || userType != "no_admin") ? SuccessNoShow(data: obj) : Success("系统无默认项目,请选择已有项目或创建新项目!", true, ShowDetail.ModalInfo.GetDisplayName(), obj); } else { return SuccessNoShow(data: obj); } } } } } catch (Exception e) { LogHelper.Write(Level.Error, "通过token获取用户信息 GetUserInfo", e, ""); return Error("用户信息失效,请重新登录!",true, ShowDetail.TipsError.GetDisplayName(), $"【错误信息】:{e.Message}"); } } /// /// 添加/修改用户信息 /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// [HttpPost] public ActionResult AddAccount(int id, string LoginName, string CompanyName, string CompanyChar,string [] ClassLabelSet, int []Location,string RealName,string Mobile,string Mail,string Wechat,string Address,int RoleId,int CompanyId ,string Password, int AccountLimit=0,string QQ="",bool AuthResultFlag=false,string CompanyRemark="",int SearchLtdLimit=0,int TypeNoteId=0,int MoneyMonitorId=0,int CompanyMonitorId=0) { try { Account account = new Account(); account.LoginName = LoginName; account.AccountLimit = AccountLimit; account.CompanyName = CompanyName; account.CompanyChar = CompanyChar; string[] ClassLabelSetNew = IndustryBLL.GetClassLabelInfo(ClassLabelSet); account.ClassLabel = ClassLabelSetNew[0]; account.ClassFirst = int.Parse(ClassLabelSetNew[1]); account.ClassSecond = int.Parse(ClassLabelSetNew[2]); account.ClassThird = int.Parse(ClassLabelSetNew[3]); int[] LocationNew = RegionInfoBLL.GetLocationInfo(Location); account.Country = LocationNew[0]; account.Province = LocationNew[1]; account.City = LocationNew[2]; account.RealName = RealName; account.Mobile = Mobile; account.Mail = Mail; account.QQ = QQ; account.Wechat = Wechat; account.Address = Address; account.RoleId = RoleId; account.CompanyId = CompanyId; account.AuthResultFlag = AuthResultFlag; account.Password = Password.MD5Encrypt(); //初始化密码 account.MoneyMonitorId = MoneyMonitorId; account.CompanyMonitorId = CompanyMonitorId; account.Id = id; if (id > 0) { if (_acc.ExistAccount(account, true) == false) { if (_acc.ExistAccountRealName(account, true) == false) { AccountGroupBLL accountGroupBll = new AccountGroupBLL(); AccountGroup accountGroup = new AccountGroup(); accountGroup.AccCompanyRemark = CompanyRemark; accountGroup.AccCompanyId = CompanyId; accountGroup.SearchLtdLimit = SearchLtdLimit; accountGroup.TypeNoteId = TypeNoteId; //判断企业管理员的企业标识码是否唯一 if (RoleId == (int)UserRoleType.CommonAdmin && accountGroupBll.ExistAccountGroup(accountGroup, true)) { return Error("修改失败!当前账号的企业标识码'" + CompanyRemark + "'已存在!"); } //判断企业管理员的机构名称是否重名 else if (RoleId == (int)UserRoleType.CommonAdmin && _acc.ExistAccountCompanyName(account, true)) { return Error("修改失败!当前账号的机构名称'" + CompanyName + "'已存在!"); } else { var rev = _acc.UpdateAccount(account); if (rev && RoleId == (int)UserRoleType.CommonAdmin) { //修改企业管理员的分组信息UpdateAccountGroup var revU = accountGroupBll.UpdateAccountGroup(accountGroup); if (revU == false) { LogHelper.Error("添加/修改用户 AddAccount时UpdateAccountGroup失败!Id-CompanyRemark:" + rev + "-" + CompanyRemark); } } return rev ? Success() : Error(); } } else { return Error("用户姓名'" + RealName + "'已存在!请重新输入姓名!"); } } else { return Error("用户账号'" + LoginName + "'已存在!请重新输入账号!"); } } else { if (_acc.ExistAccount(account, false) == false) { if (_acc.ExistAccountRealName(account, true) == false) { AccountGroupBLL accountGroupBll = new AccountGroupBLL(); AccountGroup accountGroup = new AccountGroup(); accountGroup.AccCompanyRemark = CompanyRemark; //判断子账号数量是否超过AccountLimit if (RoleId == (int) UserRoleType.User && _acc.GetAccountNum(CompanyId) >= _acc.GetAccount(CompanyId).AccountLimit) { return Error("添加失败!激活账号数达到最大授权账号数" + _acc.GetAccount(CompanyId).AccountLimit + "!"); } //判断企业管理员的企业标识码是否唯一 else if (RoleId == (int)UserRoleType.CommonAdmin && accountGroupBll.ExistAccountGroup(accountGroup,false)) { return Error("添加失败!新增账号的企业标识码'" + CompanyRemark + "'已存在!"); } //判断企业管理员的机构名称是否重名 else if (RoleId == (int)UserRoleType.CommonAdmin && _acc.ExistAccountCompanyName(account, false)) { return Error("添加失败!新增账号的机构名称'" + CompanyName + "'已存在!"); } else { var rev = _acc.AddAccount(account); if (rev > 0) { int CompanyIdNew = rev; if (RoleId == (int) UserRoleType.CommonAdmin) //如果是系统管理员添加企业管理员 { //更新企业管理员的CompanyId var revU = _acc.UpdateCompanyIdbyId(rev, CompanyIdNew); if (revU == false) { LogHelper.Error("添加/修改用户 AddAccount时更新CompanyId失败!Id:" + rev); } //添加企业管理员的分组信息AccountGroup accountGroup.AccCompanyId = CompanyIdNew; accountGroup.SearchLtdLimit = SearchLtdLimit; accountGroup.TypeNoteId = TypeNoteId; revU = accountGroupBll.AddAccountGroup(accountGroup); if (revU == false) { LogHelper.Error("添加/修改用户 AddAccount时AddAccountGroup失败!Id-CompanyRemark:" + rev+"-"+ CompanyRemark); } //初始化对应的利率期限结构表 RateAssetRecoverBLL rateAssetRecoverBll = new RateAssetRecoverBLL(); revU = rateAssetRecoverBll.CopyRateAssetRecoverfromBase(CompanyIdNew); if (revU == false) { LogHelper.Error("添加/修改用户 AddAccount时拷贝RateAssetRecover失败!Id:" + rev); } } } return rev > 0 ? Success("账号添加成功!") : Error(); } } else { return Error("用户姓名'"+RealName+"'已存在!请重新输入姓名!"); } } else { return Error("用户账号'" + LoginName + "'已存在!重新输入账号!"); } } } catch (Exception e) { LogHelper.Write(Level.Error, "添加/修改用户 AddAccount", e, OperatorProvider.Instance.Current == null ? "GuestEx" : OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 更新用户基本信息 /// /// /// /// /// /// /// /// /// [HttpPost] public ActionResult UpdateAccountBasic(int id, string RealName, string Mobile, string Mail, string Wechat, string Address, string QQ ) { try { Account account = new Account(); account.RealName = RealName; account.Mobile = Mobile; account.Mail = Mail; account.QQ = QQ; account.Wechat = Wechat; account.Address = Address; account.Id = id; if (id > 0) { if (_acc.ExistAccountRealName(account, true) == false) { var rev = _acc.UpdateAccountBasic(account); return rev ? Success() : Error(); } else { return Error("用户姓名'" + RealName + "'已存在!请重新输入姓名!"); } } else { return Error("修改失败!当前用户不存在!"); } } catch (Exception e) { LogHelper.Write(Level.Error, "修改用户基本信息 UpdateAccountBasic", e, OperatorProvider.Instance.Current == null ? "GuestEx" : OperatorProvider.Instance.Current.LoginName); return Error(); } } [HttpPost] public ActionResult UpdateAccountAddress(int id, string Address) { try { Account account = new Account(); account.Address = Address; account.Id = id; if (id > 0) { var rev = _acc.UpdateAccountAddress(account); return rev ? Success() : Error(); } else { return Error("修改失败!当前用户不存在!"); } } catch (Exception e) { LogHelper.Write(Level.Error, "修改用户基本信息 UpdateAccountAddress", e, OperatorProvider.Instance.Current == null ? "GuestEx" : OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 更新项目默认加载模式 /// /// /// /// /// /// [HttpPost] public ActionResult UpdateDefaultProjIdMode(int id, int ProjId, int Mode,bool ChangeMode=false) { try { Account account = new Account(); account.DefaultProjId = ProjId; account.DefaultMode = Mode; account.Id = id; Account accountold = _acc.GetAccount(id); if (ChangeMode == false) //从列表进入 { if (ProjId != accountold.DefaultProjId) //项目是否一样 { var rev = _acc.UpdateDefaultProjIdMode(account); return rev ? Success("系统已自动记忆当前项目为登录预加载项目!") : Error(); } else { var rev = true; if (Mode != accountold.DefaultMode) //模式是否一样 { rev = _acc.UpdateDefaultProjIdMode(account); } return rev ? Success("系统已自动记忆当前项目为登录预加载项目!") : Error(); } } else //切换模式 { if (ProjId != accountold.DefaultProjId) //同样的项目才能切换 { return Error("切换失败!只有相同的项目才可以切换模式!"); } else { string ModeName = (Mode == (int)DefaultModeType.Edit ? DefaultModeType.Edit.GetDisplayName() : DefaultModeType.ReadOnly.GetDisplayName()); if (Mode == accountold.DefaultMode) { return Error("切换失败!您当前的项目已经是" + ModeName+"了!" ); } else { //判断当前是否在进行算法运算 ProjectBLL projectBll=new ProjectBLL(); Project project = projectBll.GetProjOverview(ProjId); if (project.CacuStatusId == (int) CacuStateType.Start || project.CacuStatusId == (int) CacuStateType.Abort || project.CacuStatusId == (int) CacuStateType.Finish) { var rev = _acc.UpdateDefaultProjIdMode(account); return rev ? Success("切换成功!当前项目更新为" + ModeName + "!") : Error(); } else { return Error("切换失败!当的项目正在进行违约率分析,请稍后再试!"); } } } } } catch (Exception e) { LogHelper.Write(Level.Error, "设置默认项目ID/Mode UpdateDefaultProjIdMode", e, OperatorProvider.Instance.Current==null?"GuestEx":OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 更新是否启用主标尺的标识 /// /// /// /// [HttpPost] public ActionResult UpdateRateGradeFlag(int id, bool RateGradeFlag) { try { var rev = _acc.UpdateRateGradeFlag(id, RateGradeFlag); Account account = _acc.GetAccount(id); if (account!=null && account.RoleId == (int)UserRoleType.CommonAdmin) //企业管理员 { var list = _acc.GetAccountList((int)UserRoleType.User, account.CompanyId); if (list != null && list.Count > 0) { for (int i = 0; i < list.Count; i++) { _acc.UpdateRateGradeFlag(list[i].Id, RateGradeFlag); } } } return rev ? Success() : Error(); } catch (Exception e) { LogHelper.Write(Level.Error, "更新是否启用主标尺的标识 UpdateRateGradeFlag", e, OperatorProvider.Instance.Current==null?"GuestEx":OperatorProvider.Instance.Current.LoginName); return Error(); } } #region 极速版 /// /// 更新项目默认加载模式 /// /// /// /// /// /// [HttpPost] public ActionResult UpdateDefaultProjIdModeEx(int id, int ProjId, int Mode, bool ChangeMode = false) { try { Account account = new Account(); account.DefaultProjIdEx = ProjId; account.DefaultModeEx = Mode; account.Id = id; Account accountold = _acc.GetAccount(id); if (ChangeMode == false) //从列表进入 { if (ProjId != accountold.DefaultProjIdEx) //项目是否一样 { var rev = _acc.UpdateDefaultProjIdModeEx(account); return rev ? Success("系统已自动记忆当前项目为登录预加载项目!") : Error(); } else { var rev = true; if (Mode != accountold.DefaultModeEx) //模式是否一样 { rev = _acc.UpdateDefaultProjIdModeEx(account); } return rev ? Success("系统已自动记忆当前项目为登录预加载项目!") : Error(); } } else //切换模式 { if (ProjId != accountold.DefaultProjIdEx) //同样的项目才能切换 { return Error("切换失败!只有相同的项目才可以切换模式!"); } else { string ModeName = (Mode == (int)DefaultModeType.Edit ? DefaultModeType.Edit.GetDisplayName() : DefaultModeType.ReadOnly.GetDisplayName()); if (Mode == accountold.DefaultModeEx) { return Error("切换失败!您当前的项目已经是" + ModeName + "了!"); } else { //判断当前是否在进行算法运算 //ProjectExBLL projectBll = new ProjectExBLL(); //ProjectEx project = projectBll.GetProjOverview(ProjId); //if (project.CacuStatusId == (int)CacuStateType.Start || // project.CacuStatusId == (int)CacuStateType.Abort || // project.CacuStatusId == (int)CacuStateType.Finish) //{ // var rev = _acc.UpdateDefaultProjIdExMode(account); // return rev ? Success("切换成功!当前项目更新为" + ModeName + "!") : Error(); //} //else //{ // return Error("切换失败!当的项目正在进行违约率分析,请稍后再试!"); //} var rev = _acc.UpdateDefaultProjIdModeEx(account);//待优化 return rev ? Success("切换成功!当前项目更新为" + ModeName + "!") : Error(); } } } } catch (Exception e) { LogHelper.Write(Level.Error, "设置默认项目ID/Mode UpdateDefaultProjIdExMode", e, OperatorProvider.Instance.Current==null?"GuestEx":OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 更新项目默认加载模式(临时添加适配测试,即将删除) /// /// /// /// /// /// [HttpPost] public ActionResult UpdateDefaultProjIdExMode(int id, int ProjId, int Mode, bool ChangeMode = false) { try { Account account = new Account(); account.DefaultProjIdEx = ProjId; account.DefaultModeEx = Mode; account.Id = id; Account accountold = _acc.GetAccount(id); if (ChangeMode == false) //从列表进入 { if (ProjId != accountold.DefaultProjIdEx) //项目是否一样 { var rev = _acc.UpdateDefaultProjIdModeEx(account); return rev ? Success("系统已自动记忆当前项目为登录预加载项目!") : Error(); } else { var rev = true; if (Mode != accountold.DefaultModeEx) //模式是否一样 { rev = _acc.UpdateDefaultProjIdModeEx(account); } return rev ? Success("系统已自动记忆当前项目为登录预加载项目!") : Error(); } } else //切换模式 { if (ProjId != accountold.DefaultProjIdEx) //同样的项目才能切换 { return Error("切换失败!只有相同的项目才可以切换模式!"); } else { string ModeName = (Mode == (int)DefaultModeType.Edit ? DefaultModeType.Edit.GetDisplayName() : DefaultModeType.ReadOnly.GetDisplayName()); if (Mode == accountold.DefaultModeEx) { return Error("切换失败!您当前的项目已经是" + ModeName + "了!"); } else { //判断当前是否在进行算法运算 //ProjectExBLL projectBll = new ProjectExBLL(); //ProjectEx project = projectBll.GetProjOverview(ProjId); //if (project.CacuStatusId == (int)CacuStateType.Start || // project.CacuStatusId == (int)CacuStateType.Abort || // project.CacuStatusId == (int)CacuStateType.Finish) //{ // var rev = _acc.UpdateDefaultProjIdExMode(account); // return rev ? Success("切换成功!当前项目更新为" + ModeName + "!") : Error(); //} //else //{ // return Error("切换失败!当的项目正在进行违约率分析,请稍后再试!"); //} var rev = _acc.UpdateDefaultProjIdModeEx(account);//待优化 return rev ? Success("切换成功!当前项目更新为" + ModeName + "!") : Error(); } } } } catch (Exception e) { LogHelper.Write(Level.Error, "设置默认项目ID/Mode UpdateDefaultProjIdExMode", e, OperatorProvider.Instance.Current==null?"GuestEx":OperatorProvider.Instance.Current.LoginName); return Error(); } } #endregion /// /// 修改密码 /// /// 旧密码 /// 新密码 /// [HttpPost] public ActionResult ChangePassword(string oldpwd, string newpwd) { try { if (newpwd.Length < 6) return Error("密码长度不能少于6位"); var user = _acc.GetAccount(OperatorProvider.Instance.Current.UserId); if (user.Password != oldpwd.MD5Encrypt()) return Error("旧密码不正确"); //修改密码 var rev = _acc.ChangePassword(OperatorProvider.Instance.Current.UserId, newpwd.MD5Encrypt()); return rev ? Success() : Error(); } catch (Exception e) { LogHelper.Write(Level.Error, "修改密码 ChangePassword", e, OperatorProvider.Instance.Current==null?"GuestEx":OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 重置密码 /// /// /// /// [HttpPost] public ActionResult ResetPassword(int UserId,string Password, string Phone,string Code) { var redisClient = new CustomerRedis(0); var cacheCode = redisClient.Get($"sms_{Phone}"); if (string.IsNullOrWhiteSpace(cacheCode) || cacheCode != Code) { return Error("短信验证码错误!"); } if (UserId == -1) { UserId = _acc.GetMobileAccountid(Phone); if (UserId == -1 ) { return Error("该手机号尚未注册,请前往注册页创建账号。"); } } try { if (string.IsNullOrWhiteSpace(Password) == false) { var rev = _acc.ChangePassword(UserId, Password.MD5Encrypt()); return rev ? Success("密码重置成功!新密码为'" + Password + "'") : Error(); } else { return Error("重置密码失败!当前新密码为空!"); } } catch (Exception e) { LogHelper.Write(Level.Error, "重置密码 ResetPassword", e, OperatorProvider.Instance.Current==null?"GuestEx":OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 删除某个用户信息 /// /// /// [HttpPost] public ActionResult DeleteAccountbyId(int id) { try { Account accountold = _acc.GetAccount(id); var rev = _acc.DeleteAccountbyId(id,accountold.LoginName); if (accountold.RoleId == (int)UserRoleType.CommonAdmin) //如果是企业管理员 { //删除下面的子账号 var revU = _acc.DeleteAccountbyCompanyId((int)UserRoleType.User,accountold.Id);//此处Id和CompanyId一致 if (revU == false) { LogHelper.Error("删除用户 DeleteAccountbyId时删除子账号失败!Id:" + id); } //删除对应的企业组信息 AccountGroupBLL accountGroupBll=new AccountGroupBLL(); revU = accountGroupBll.DeleteAccountGroupbyCompanyId(accountold.Id); if (revU == false) { LogHelper.Error("删除用户 DeleteAccountbyId时删除分组信息失败!Id:" + id); } //删除对应的利率期限结构表 RateAssetRecoverBLL rateAssetRecoverBll = new RateAssetRecoverBLL(); revU = rateAssetRecoverBll.DeleteRateAssetRecoverbyCompanyId(accountold.Id); if (revU == false) { LogHelper.Error("删除用户 DeleteAccountbyId时删除RateAssetRecover失败!Id:" + id); } } return rev ? Success() : Error(); } catch (Exception e) { LogHelper.Write(Level.Error, "删除某个用户 DeleteAccountbyId", e, OperatorProvider.Instance.Current==null?"GuestEx":OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 登录接口 /// /// /// /// /// 为空-账号登录,不为空-微信登录 /// [HttpPost] [LoginChecked(false)] public ActionResult Login(string userName, string password, string companyRemark,string code= "") { try { var user = new Account(); if (code == "")//账号登录的情况 { user = _acc.GetAccount(userName, companyRemark); if (user == null || user.Password != password) return Error("用户名或密码错误!"); if (companyRemark == "" || user.CompanyRemark != companyRemark) return Error("当前账号所属主体不正确!请重新输入!"); if (user.IsDeleted == 1) return Error("当前账号已被管理员禁用!请联系管理员解锁!"); } else//微信登录的情况 { //先获取openid //LogHelper.Error("进入code"+code); Dictionary dic1 = WeixinHelper.get_access_token(code, ""); if (dic1 == null || !dic1.ContainsKey("access_token")) { return Error("微信登录出错啦!无法获取Access Token!"); } if (dic1 == null || !dic1.ContainsKey("openid") ) { if (dic1.ContainsKey("errmsg")) { return Error("微信登录出错啦!Errcode:" + dic1["errcode"] + ",Errmsg:" + dic1["errmsg"]); } else { return Error("微信登录出错啦!无法获取用户授权Openid!"); } } //再获取对应的账号 user = _acc.GetAccount(dic1["openid"].ToString()); if (user == null) return Success(message: "微信扫码成功!请绑定账号后登录!", data: "NeedBind:"+ dic1["openid"].ToString()+"|"+ dic1["unionid"].ToString()); } var token = _acc.HandelLoginAction(user); var type = code == "" ? "账号" : "微信"; return Success(message: type+"登录成功!", data: token); } catch (Exception e) { LogHelper.Write(Level.Error, "登录 Login", e, userName); return Error(); } } /// /// 绑定微信账号-登录 /// /// [LoginChecked(false)] public ActionResult BindWXAccount(string userName, string password, string companyRemark, string openid, string unionid ) { try { //LogHelper.Info("Login unioid:"+unionid); bool bResult = _acc.BindWXAccount(userName, password, companyRemark, openid, unionid); if (bResult) { //LogHelper.Info("Login ok:" + unionid); var user = _acc.GetAccount(openid); var token = _acc.HandelLoginAction(user); return Success(message: "微信登录成功!", data: token); } else { //LogHelper.Info("Login error:" + unionid); return Error(); } } catch (Exception e) { LogHelper.Write(Level.Error, "绑定并登录 BindWXAccount", e, userName); return Error(); } } /// /// 绑定微信账号-预警 /// /// [LoginChecked(false)] public ActionResult BindWXAlarmAccount(string userName, string password, string companyRemark, string code) { try { Dictionary dic1 = WechatHelper.GetAccessToken(code, ""); if (dic1 == null || !dic1.ContainsKey("access_token")) { return Error("微信预警推送绑定出错啦!无法获取Access Token!"); } if (dic1 == null || !dic1.ContainsKey("openid")) { if (dic1.ContainsKey("errmsg")) { return Error("微信预警推送绑定出错啦!Errcode:" + dic1["errcode"] + ",Errmsg:" + dic1["errmsg"]); } else { return Error("微信预警推送绑定出错啦!无法获取用户授权Openid!"); } } string AlarmWXId = dic1["openid"].ToString(); if (AlarmWXId == "") { return Error("微信预警推送绑定失败!您的标识为空!"); } else { var user = _acc.GetAccount(userName, companyRemark); if (user == null || user.Password != password) return Error("用户名或密码错误!"); if (companyRemark == "" || user.CompanyRemark != companyRemark) return Error("当前账号所属主体不正确!请重新输入!"); if (user.IsDeleted == 1) return Error("当前账号已被管理员禁用!请联系管理员解锁!"); if (user.AlarmWXId == AlarmWXId) return Error("当前账号已绑定微信推送!请不要重复绑定!"); bool bResult = _acc.BindWXAlarmAccount(userName, password, companyRemark, AlarmWXId); return bResult ? Success(message: $"当前微信号已成功绑定维优账号(企业识别码:{companyRemark};用户名:{userName}),如需解除绑定请联系维优客服顾问!") : Error(); } } catch (Exception e) { LogHelper.Write(Level.Error, "微信预警推送绑定 BindWXAlarmAccount", e, userName); return Error(); } } /// /// 注销登录 /// /// [HttpPost] [LoginChecked(false)] public ActionResult Logout() { if (OperatorProvider.Instance.Current != null) { OperatorProvider.Instance.Remove(); } return Success(); } /// /// 企业监控邮件告警配置 /// /// /// /// /// /// [HttpPost] public ActionResult UpdateAlarmEmail(int id, bool AlarmEmailFlag, string AlarmEmail, string AlarmEmailGrade) { try { var Result = _acc.UpdateAlarmEmail(id, AlarmEmailFlag, AlarmEmail, AlarmEmailGrade); return Result? Success():Error(); } catch (Exception e) { LogHelper.Write(Level.Error, "更新企业监控邮件告警配置 UpdateAlarmEmailFlag", e, OperatorProvider.Instance.Current == null ? "GuestEx" : OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 企业监控微信告警配置 /// /// /// /// /// /// [HttpPost] public ActionResult UpdateAlarmWX(int id, bool AlarmWXFlag, string AlarmWXGrade, string AlarmWXId = "") { try { var Result = _acc.UpdateAlarmWX(id, AlarmWXFlag, AlarmWXId, AlarmWXGrade); return Result ? Success() : Error(); } catch (Exception e) { LogHelper.Write(Level.Error, "更新企业监控微信告警配置 UpdateAlarmWXFlag", e, OperatorProvider.Instance.Current == null ? "GuestEx" : OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 融资监控邮件告警配置 /// /// /// /// /// /// [HttpPost] public ActionResult UpdateAlarmRZEmail(int id, bool AlarmEmailRZFlag, string AlarmEmailRZ) { try { var Result = _acc.UpdateAlarmRZEmail(id, AlarmEmailRZFlag, AlarmEmailRZ); return Result ? Success() : Error(); } catch (Exception e) { LogHelper.Write(Level.Error, "更新融资监控邮件告警配置 UpdateAlarmEmailRZFlag", e, OperatorProvider.Instance.Current == null ? "GuestEx" : OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 融资监控微信告警配置 /// /// /// /// /// /// [HttpPost] public ActionResult UpdateAlarmRZWX(int id, bool AlarmWXRZFlag, string AlarmWXRZId = "") { try { var Result = _acc.UpdateAlarmRZWX(id, AlarmWXRZFlag, AlarmWXRZId); return Result ? Success() : Error(); } catch (Exception e) { LogHelper.Write(Level.Error, "更新融资监控微信告警配置 UpdateAlarmRZWXFlag", e, OperatorProvider.Instance.Current == null ? "GuestEx" : OperatorProvider.Instance.Current.LoginName); return Error(); } } [HttpPost] public ActionResult GetAlarmInfo(int id) { try { var Result = _acc.GetAlarmInfo(id); return id>0 ? SuccessNoShow(data:Result) : Error(); } catch (Exception e) { LogHelper.Write(Level.Error, "获取企业监控告警配置 GetAlarmInfo", e, OperatorProvider.Instance.Current == null ? "GuestEx" : OperatorProvider.Instance.Current.LoginName); return Error(); } } /// /// 发送短信 /// /// 手机号 /// [HttpPost] [LoginChecked(false)] public ActionResult SendSms(string phoneNumber, bool hasReg = true) { if (!new Regex(@"^1\d{10}$").IsMatch(phoneNumber)) return Error("手机号码格式不正确"); var userInfo = _acc.GetAccountList().Where(a => a.Mobile == phoneNumber).ToList(); if (userInfo.Count == 0 && hasReg) return Error("该手机用户不存在"); if (userInfo.Count > 0 && !hasReg) return Error("该手机用户已注册"); var code = new Random().Next(0, 9999).ToString().PadLeft(4, '0'); AliApi.SendSms(phoneNumber, code); var redisClient = new CustomerRedis(0); redisClient.Set($"sms_{phoneNumber}", code, 5 * 60); redisClient.Dispose(); return Success(); } /// /// 注册账号 /// /// /// /// /// /// /// /// /// /// /// /// /// /// public ActionResult RegAccount(string LoginName, string Mobile, string Code, string Password, int RoleId = 2, int CompanyId = 0, int AccountLimit = 0, bool AuthResultFlag = false, string CompanyRemark = "", int MoneyMonitorId = 0, int CompanyMonitorId = 0, int CurrentTypeId = 0) { try { Account account = new Account(); account.LoginName = LoginName; account.Mobile = Mobile; account.Password = Password.MD5Encrypt(); //初始化密码 account.AccountLimit = AccountLimit; account.RoleId = RoleId; AccountGroupBLL accountGroupBll = new AccountGroupBLL(); var listFirst = accountGroupBll.GetAccountGroupList().Where(p => p.AccCompanyRemark == "guest") .FirstOrDefault(); account.CompanyId = listFirst != null ? listFirst.AccCompanyId : 0; account.AuthResultFlag = AuthResultFlag; account.MoneyMonitorId = MoneyMonitorId; account.CompanyMonitorId = CompanyMonitorId; account.CurrentTypeId = CurrentTypeId; account.Id = 0; var redisClient = new CustomerRedis(0); var cacheCode = redisClient.Get($"sms_{Mobile}"); if (string.IsNullOrWhiteSpace(cacheCode) || cacheCode != Code) { return Error("短信验证码错误!"); } else if (_acc.ExistAccount(account)) { return Error("用户账号'" + account.LoginName + "'已存在!请输入新账号!"); } else { var rev = _acc.AddAccount(account); return rev > 0 ? Success("注册成功!请重新登录!") : Error(); //} } } catch (Exception e) { LogHelper.Write(Level.Error, "用户注册 RegAccount", e, OperatorProvider.Instance.Current == null ? "GuestEx" : OperatorProvider.Instance.Current.LoginName); return Error(); } } } }