| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using SqlSugar;
- using WMS.Util;
- using WMS.Info;
- using WMS.BZUtil;
- namespace WMS.Core
- {
- public class LoginUserCheckBLL : IBLL
- {
- 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 = InJsonData.ToObject<LoginInfo>();
- if (LoginData == null)
- {
- throw SysExCore.ThrowInEmpty();
- }
- if (LoginUser.AppType == EAppType.PC)
- {
- SessionCookieCore.CheckVerifyCode(LoginData.TextV);
- }
- void action(SqlSugarClient ctx)
- {
- LoginUser.UserNo = LoginData.TextU;
- LoginUser.WAreaNoList = LoginData.WAreaNoList;
- LoginUser.WarehouseNo = LoginData.WarehouseNo;
- var tmpuser = LoginBLLCore.CheckLoginUser(LoginData.TextU, LoginData.TextP, LoginUser.AppType, LoginData.WarehouseNo, LoginData.WAreaNoList, ctx);
- LoginUser.UserName = tmpuser.F_NAME;
- LoginUser.UserNo = tmpuser.F_NO;
- LoginUser.UserType = LoginBLLCore.GetUserType(tmpuser.F_NO);
- //判断用户是在离线,如果离线作业,其他不能登录。
- if (ctx.Queryable<ACL_USERTOKEN>().Where(it => it.F_USERNO == tmpuser.F_NO && it.F_APPTYPENUM == (int)EAppType.OffLineRF).Count() > 0)
- throw SysExCore.ThrowFailException("此用户已离线登录,无法再次登录。");
- if (LoginUser.AppType == EAppType.OffLineRF)
- {
- if (LoginBLLCore.CheckAdmin(tmpuser.F_NO))
- throw SysExCore.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 SysExCore.ThrowFailException("区域已经被锁定。");
- //}
- }
- else
- {
- if (SysSetCore.GetSysSet().IsOnlyLogin)
- //删除以前登录信息
- ctx.Deleteable<ACL_USERTOKEN>().Where(it => it.F_USERNO == tmpuser.F_NO).ExecuteCommand();
- else
- //删除以前登录信息
- ctx.Deleteable<ACL_USERTOKEN>().Where(it => it.F_USERNO == tmpuser.F_NO && it.F_APPTYPENUM == (int)LoginUser.AppType).ExecuteCommand();
- }
- //初始化登录信息
- DateTime nowdt = DateTime.Now;
- string TokenNo = Guid.NewGuid().ToString();
- ACL_USERTOKEN tmpobj = new ACL_USERTOKEN
- {
- F_NO = TokenNo,
- F_APPTYPENUM = (int)LoginUser.AppType,
- F_BTIME = nowdt,
- F_ETIME = (LoginUser.AppType == EAppType.OffLineRF) ? DateTime.MaxValue : nowdt,
- F_IPADDRESS = LoginUser.IPAddress,
- F_USERNO = tmpuser.F_NO,
- F_WAREANOLIST = LoginUser.WAreaNoList.ToJson(),
- F_WAREHOUSENO = LoginUser.WarehouseNo,
- F_USERNAME = tmpuser.F_NAME,
- F_APPDEVICENO = LoginUser.AppDeviceNo
- };
- ctx.Updateable<ACL_USERITEM>().SetColumns(it => new ACL_USERITEM() { F_PWDERRQTY = 0, F_EDITTIME = DateTime.Now, F_EDITUSERNO = tmpuser.F_NO }).Where(it => it.F_NO == tmpuser.F_NO).ExecuteCommand();
- if (ctx.Insertable<ACL_USERTOKEN>(tmpobj).ExecuteCommand() <= 0)
- {
- throw SysExCore.ThrowFailException("记录登录信息失败,请重试。");
- }
- string EncryptTokenNo = SysSecurityCore.Aes256Encrypt(TokenNo);
- if (LoginUser.AppType == EAppType.PC)
- {
- SessionCookieCore.AddLoginToken(EncryptTokenNo);
- }
- LoginUser.LoginTime = nowdt;
- LoginUser.EncryptTokenNo = EncryptTokenNo;
- LoginUser.JWTToken = new Operator().EncodeToken(LoginUser.UserNo, LoginUser.UserName, LoginData.TextU,EncryptTokenNo,"");
- OutObjData = LoginUser;
- }
- SysDbCore.DbTranExec(action);
- }
- catch (Exception ex)
- {
- if (ex is SysExCore)
- {
- SysExCore exc = ex as SysExCore;
- if (exc != null && exc.SysExType == ESysExType.PwdError)
- {
- LoginBLLCore.UpdatePwdErr(LoginUser.UserNo);
- SessionCookieCore.LoginPwdErrAdd();
- }
- }
- OutObjData = SessionCookieCore.GetUserPwdErrorNum();
- throw ex;
- }
- }
- }
- }
|