| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- using Newtonsoft.Json;
- using SqlSugar;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- using WMS.BZModels.Models.UserCenterManager;
- using WMS.BZUtil;
- using WMS.Info;
- using WMS.BZSqlSugar;
- using WMS.Util;
- namespace WMS.BZServices
- {
- public class BZLoginUserCheckBLL : IBLL
- {
- private static Repository<AclUsertoken> _aclUsertokenRepository => new Repository<AclUsertoken>();
- private static Repository<AclUserInfo> _acluserInfoRepository => new Repository<AclUserInfo>();
- public string InJsonData { get; set; }
- public object OutObjData { get; set; }
- public string SuccessMsg { get; set; } = "登录成功。";
- public LoginUserInfo LoginUser { get; set; }
- public string BLLDesc { get; private set; } = "用户登录";
- public void Exec()
- {
- try
- {
- LoginInfo LoginData = JsonConvert.DeserializeObject<LoginInfo>(InJsonData);
- if (LoginData == null)
- {
- throw BZSysExCore.ThrowInEmpty();
- }
- if (LoginUser.AppType == EAppType.PC)
- {
- BZSessionCookieCore.CheckVerifyCode(LoginData.TextV);
- }
- void action()
- {
- LoginUser.UserNo = LoginData.TextU;
- LoginUser.WAreaNoList = LoginData.WAreaNoList;
- //LoginUser.WarehouseNo = LoginData.WarehouseNo;
- var tmpuser = BZLoginBLLCore.CheckLoginUser(LoginData.TextU, LoginData.TextP, LoginUser.AppType, LoginData.WarehouseNo, LoginData.WAreaNoList);
- LoginUser.UserName = tmpuser.Name;
- LoginUser.UserNo = tmpuser.Code;
- LoginUser.WarehouseNo = tmpuser.WarehouseNo;
- LoginUser.UserType = BZLoginBLLCore.GetUserType(tmpuser.Code);
- //判断用户是在离线,如果离线作业,其他不能登录。
- if (ConfigHelper.GetConfig().IsSSO)
- {
- if (_aclUsertokenRepository.Queryable().Count(it => it.UserNo == tmpuser.Code && it.AppTypeNum == (int)EAppType.OffLineRF) > 0)
- throw BZSysExCore.ThrowFailException("此用户已离线登录,无法再次登录。");
- }
- if (LoginUser.AppType == EAppType.OffLineRF)
- {
- if (BZLoginBLLCore.CheckAdmin(tmpuser.Code))
- throw BZSysExCore.ThrowFailException("管理员用户无法进行离线操作。");
- //判断离线仓库和区域是否已经被锁定
- //var waslist = ctx.Queryable<ACL_USERTOKEN>().Where(it => it.F_WAREHOUSENO == LoginData.WarehouseNo && it.F_APPTYPENUM == (int)EAppType.OffLineRF).ToList();
- //if (waslist != null && waslist.Count > 0)
- //{
- // List<string> wlist = new List<string>();
- // foreach (var w in waslist)
- // {
- // if (string.IsNullOrWhiteSpace(w.F_WAREANOLIST))
- // continue;
- // wlist.AddRange((w.F_WAREANOLIST).ToObject<List<string>>());
- // }
- // if (LoginData.WAreaNoList.Any(it => wlist.Contains(it)))
- // throw BZSysExCore.ThrowFailException("区域已经被锁定。");
- //}
- }
- else
- {
- //if (SysSetCore.GetSysSet().IsOnlyLogin)
- // //删除以前登录信息
- // _aclUsertokenRepository.Deleteable().Where(it => it.UserNo == tmpuser.Code).ExecuteCommand();
- //else
- //删除以前登录信息
- if (ConfigHelper.GetConfig().IsSSO)
- {
- _aclUsertokenRepository.Deleteable().Where(it => it.UserNo == tmpuser.Code && it.AppTypeNum == (int)LoginUser.AppType).ExecuteCommand();
- }
- }
- _acluserInfoRepository.UpdateModelColumns(p => new AclUserInfo
- {
- EditWho = tmpuser.Code,
- EditTime = DateTime.Now,
- PwdErrQty = 0
- }, it => it.Code.ToUpper() == tmpuser.Code.ToUpper());
- //初始化登录信息
- DateTime nowdt = DateTime.Now;
- string TokenNo = Guid.NewGuid().ToString();
- if (ConfigHelper.GetConfig().IsSSO)
- {
- var tmpobj = new AclUsertoken
- {
- Code = TokenNo,
- AppTypeNum = (int)LoginUser.AppType,
- BTime = nowdt,
- ETime = (LoginUser.AppType == EAppType.OffLineRF) ? DateTime.MaxValue : nowdt,
- IPAddress = LoginUser.IPAddress,
- UserNo = tmpuser.Code,
- //WareaNoList = LoginUser.WAreaNoList.ToJson(),
- WarehouseNo = LoginUser.WarehouseNo,
- UserName = tmpuser.Name,
- AppDeviceNo = LoginUser.AppDeviceNo
- };
- if (_aclUsertokenRepository.Insert(tmpobj) <= 0)
- {
- throw BZSysExCore.ThrowFailException("记录登录信息失败,请重试。");
- }
- }
- string EncryptTokenNo = SysSecurityHelp.Aes256Encrypt(TokenNo);
- if (LoginUser.AppType == EAppType.PC)
- {
- BZSessionCookieCore.AddLoginToken(EncryptTokenNo);
- }
- LoginUser.LoginTime = nowdt;
- LoginUser.EncryptTokenNo = EncryptTokenNo;
- LoginUser.JWTToken = new Operator().EncodeToken(LoginUser.UserNo, LoginUser.UserName, LoginData.TextU, EncryptTokenNo, LoginUser.WarehouseNo);
- OutObjData = LoginUser;
- }
- _acluserInfoRepository.LoginUseTran(action);
- }
- catch (Exception ex)
- {
- if (ex is BZSysExCore)
- {
- BZSysExCore exc = ex as BZSysExCore;
- if (exc != null && exc.SysExType == ESysExType.PwdError)
- {
- BZLoginBLLCore.UpdatePwdErr(LoginUser.UserNo);
- BZSessionCookieCore.LoginPwdErrAdd();
- }
- }
- OutObjData = BZSessionCookieCore.GetUserPwdErrorNum();
- throw ex;
- }
- }
- }
- }
|