| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- using Mapster;
- using SqlSugar;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using WMS.BZModels.Dto.UserCenterManager.UserInfoDtos;
- using WMS.BZModels.Models.UserCenterManager;
- using WMS.Info;
- using WMS.BZSqlSugar;
- using WMS.Util;
- namespace WMS.BZServices
- {
- public class BZLoginBLLCore
- {
- private static Repository<AclUserInfo> _acluserInfoRepository => new Repository<AclUserInfo>();
- private static Repository<AclUsertoken> _aclUsertokenRepository => new Repository<AclUsertoken>();
- /// <summary>
- /// 检测登录用户有效性
- /// </summary>
- public static AclUserInfo CheckLoginUser(string UserNo, string UserPwd, EAppType AppType, string WarehouseNo, List<string> WAreaNoList)
- {
- try
- {
- if (string.IsNullOrWhiteSpace(UserNo))
- throw BZSysExCore.ThrowFailException("登录用户名为空!!!");
- if (string.IsNullOrWhiteSpace(UserPwd))
- throw BZSysExCore.ThrowFailException("登录密码为空!!!");
- if (AppType == EAppType.TV || AppType == EAppType.Interface)
- throw BZSysExCore.ThrowFailException("登录APP类型不正确!!!");
- //离线仓库登录
- //if (AppType == EAppType.OffLineRF)
- //{
- // if (string.IsNullOrWhiteSpace(WarehouseNo))
- // throw BZSysExCore.ThrowFailException("仓库号为空!!!");
- // //判断仓库
- // var wh = Ctx.Queryable<BASE_WAREHOUSE>().Where(it => it.F_NO == WarehouseNo).First();
- // if (wh == null)
- // throw BZSysExCore.ThrowFailException("输入参数中仓库号在仓库列表中不存在!!!");
- // if (WAreaNoList == null || WAreaNoList.Count == 0)
- // throw BZSysExCore.ThrowFailException("仓库区域为空!!!");
- // if (wh.F_TYPENUM != (int)EWarehouseType.OfflineRFWarehouse)
- // throw BZSysExCore.ThrowFailException("输入参数中仓库号不是离线仓库类型!!!");
- // //判断区域与仓库有没有匹配
- // var walist = Ctx.Queryable<BASE_WAREA>().Where(it => it.F_WAREHOUSENO == WarehouseNo).ToList();
- // if (walist == null || walist.Count == 0)
- // throw BZSysExCore.ThrowFailException("输入参数中区域号在仓库区域列表中不存在!!!");
- // if (WAreaNoList.Any(it => !walist.Any(b => it == b.F_NO)))
- // throw BZSysExCore.ThrowFailException("输入参数仓库号与区域号不匹配!!!");
- //}
- //获取数据
- var user = _acluserInfoRepository.Queryable().First(it => it.Code.ToUpper() == UserNo.ToUpper());
- //var user = Ctx.Queryable<ACL_USERITEM>().Where(it => it.F_NO.ToUpper() == UserNo.ToUpper()).First();
- if (user == null)
- throw BZSysExCore.ThrowFailException("无法找到指定用户");
- if (user.IsStop > 0)
- throw BZSysExCore.ThrowFailException("用户已停用!!!");
- //if (user.PwdErrQty >= SysSetCore.GetSysSet().UserPwdErrQty)
- // throw BZSysExCore.ThrowFailException(string.Format("用户密码错误已超过{0}次,已被锁定。", SysSetCore.GetSysSet().UserPwdErrQty));
- ////用户密码已过期
- //if (DateTime.MaxValue != user.EditTime)
- //{
- // if (user.EditTime.AddDays(SysSetCore.GetSysSet().UserPwdExpD) < DateTime.Now)
- // throw BZSysExCore.ThrowPwdExpiration();
- //}
- //用户密码错误
- if (user.Pwd != SysSecurityHelp.Aes256Encrypt(UserPwd, user.Secretkey))
- {
- int qty = 5 - user.PwdErrQty;
- if (user.PwdErrQty > 0)
- throw new BZSysExCore(ESysExType.PwdError, string.Format("用户密码错误,您还有{0}次", qty > 0 ? qty : 0));
- else
- throw new BZSysExCore(ESysExType.PwdError, "用户密码错误。");
- }
- if (user.Pwd == SysSecurityHelp.Aes256Encrypt("000000", user.Secretkey))
- {
- throw new BZSysExCore(ESysExType.PwdInit, "请将初始化密码进行修改。");
- }
- return user;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 是否是管理员
- /// </summary>
- public static bool CheckAdmin(string UserNo)
- {
- bool IsAdmin = false;
- EUserType UserType = GetUserType(UserNo);
- if (UserType == EUserType.SuperAdmin || UserType == EUserType.Super || UserType == EUserType.System)
- {
- IsAdmin = true;
- }
- return IsAdmin;
- }
- /// <summary>
- /// 获取用户类型
- /// </summary>
- public static EUserType GetUserType(string UserNo)
- {
- EUserType UserType = EUserType.User;
- try
- {
- if (UserNo.ToUpper() == EUserType.Super.ToString().ToUpper())
- {
- UserType = EUserType.Super;
- }
- else if (UserNo.ToUpper() == EUserType.System.ToString().ToUpper())
- {
- UserType = EUserType.System;
- }
- else if (UserNo.ToUpper() == EUserType.SuperAdmin.ToString().ToUpper())
- {
- UserType = EUserType.SuperAdmin;
- }
- else
- {
- UserType = EUserType.User;
- }
- //权限管理员
- }
- catch
- {
- }
- return UserType;
- }
- /// <summary>
- /// 更新用户密码错误次数
- /// </summary>
- public static void UpdatePwdErr(string UserNo)
- {
- var result = _acluserInfoRepository.UpdateModelColumns(p => new AclUserInfo
- {
- EditWho = UserNo,
- EditTime = DateTime.Now,
- PwdErrQty = p.PwdErrQty + 1
- }, it => it.Code.ToUpper() == UserNo.ToUpper());
- //if (result)
- // throw BZSysExCore.ThrowFailException("更新用户密码登录错误次数失败!!!");
- }
- /// <summary>
- /// 获取用户登录数据
- /// </summary>
- public static LoginUserInfo GetLoginUser(string EncryptTokenNo)
- {
- try
- {
- LoginUserInfo LoginUser = new LoginUserInfo();
- if (ConfigHelper.GetConfig().IsSSO)
- {
- if (string.IsNullOrWhiteSpace(EncryptTokenNo))
- {
- throw BZSysExCore.ThrowFailException("登录凭证为空。");
- }
- string TokenNo = SysSecurityHelp.Aes256Decrypt(EncryptTokenNo);
- var token = _aclUsertokenRepository.Queryable().Where(a => a.Code == TokenNo).First();
- // ACL_USERTOKEN token = ctx.Queryable<ACL_USERTOKEN>().Where(a => a.F_NO == TokenNo).First();
- if (token == null || string.IsNullOrWhiteSpace(token.Code))
- {
- throw BZSysExCore.ThrowFailException("无法找到登录用户信息。");
- }
- LoginUser.UserNo = token.UserNo;
- LoginUser.UserName = token.UserName;
- LoginUser.UserType = GetUserType(token.UserNo);
- LoginUser.IPAddress = token.IPAddress;
- LoginUser.WAreaNoList = token.WareaNoList.ToObject<List<string>>();
- LoginUser.WarehouseNo = token.WarehouseNo;
- LoginUser.EncryptTokenNo = EncryptTokenNo;
- LoginUser.AppType = (EAppType)token.AppTypeNum;
- LoginUser.LoginTime = token.BTime;
- LoginUser.AppDeviceNo = token.AppDeviceNo;
- }
- else
- {
- var user = _acluserInfoRepository.Queryable().First(it => it.Code.ToUpper() == EncryptTokenNo.ToUpper());
- LoginUser.UserNo = user.Code;
- LoginUser.UserName = user.Name;
- LoginUser.UserType = GetUserType(user.Code);
- //LoginUser.IPAddress = user.IPAddress;
- //LoginUser.WAreaNoList = token.WareaNoList.ToObject<List<string>>();
- LoginUser.WarehouseNo = user.WarehouseNo;
- //LoginUser.EncryptTokenNo = EncryptTokenNo;
- //LoginUser.AppType = (EAppType)user.AppTypeNum;
- LoginUser.LoginTime = user.EditTime;
- //LoginUser.AppDeviceNo = token.AppDeviceNo;
- }
- return LoginUser;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 获取用户登录数据
- /// </summary>
- public static LoginUserInfo GetLoginUser()
- {
- try
- {
- LoginUserInfo LoginUser = GetLoginUser(BZSessionCookieCore.GetLoginTokenNo());
- //if (string.IsNullOrWhiteSpace(LoginUser.EncryptTokenNo))
- //{
- // throw BZSysExCore.ThrowFailException("登录凭证为空。");
- //}
- //string TokenNo = SysSecurityHelp.Aes256Decrypt(LoginUser.EncryptTokenNo);
- //var token = _aclUsertokenRepository.Queryable().Where(a => a.Code == TokenNo).First();
- //if (token == null || string.IsNullOrWhiteSpace(token.Code))
- //{
- // throw BZSysExCore.ThrowFailException("无法找到登录用户信息。");
- //}
- //LoginUser.UserNo = token.UserNo;
- //LoginUser.UserName = token.UserName;
- //LoginUser.UserType = GetUserType(token.UserNo);
- //LoginUser.IPAddress = token.IPAddress;
- //LoginUser.WAreaNoList = token.WareaNoList.ToObject<List<string>>();
- //LoginUser.WarehouseNo = token.WarehouseNo;
- //LoginUser.EncryptTokenNo = LoginUser.EncryptTokenNo;
- //LoginUser.AppType = (EAppType)token.AppTypeNum;
- //LoginUser.LoginTime = token.BTime;
- //LoginUser.AppDeviceNo = token.AppDeviceNo;
- return LoginUser;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 获取用户登录数据
- /// </summary>
- public static LoginUserInfo GetLoginUser(ReqInfo ReqData)
- {
- try
- {
- if (ReqData == null)
- {
- throw BZSysExCore.ThrowInEmpty();
- }
- return GetLoginUser(ReqData.EncryptTokenNo);
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- public static byte[] GetVerifyCode()
- {
- try
- {
- string code = "";
- var vcode = VerifyCodeUtil.GetVerifyCode(out code);
- BZSessionCookieCore.WriteSessionCookieValue(BZSessionCookieConst.LoginVerifyCodeKey, code);
- return vcode;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- }
- }
|