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();
}
}
}
}