using Infrastructure; using Infrastructure.Attribute; using Infrastructure.Extensions; using SqlSugar; using System; using ZR.Model; using ZR.Model.System; using ZR.Model.System.Dto; using ZR.Repository; using ZR.Service.System.IService; namespace ZR.Service.System { /// /// 登录 /// [AppService(ServiceType = typeof(ISysLoginService), ServiceLifetime = LifeTime.Transient)] public class SysLoginService: BaseService, ISysLoginService { private readonly ISysUserService SysUserService; public SysLoginService(ISysUserService sysUserService) { SysUserService = sysUserService; } /// /// 登录验证 /// /// /// public SysUser Login(LoginBodyDto loginBody, SysLogininfor logininfor) { if (loginBody.Password.Length != 32) { loginBody.Password = NETCore.Encrypt.EncryptProvider.Md5(loginBody.Password); } SysUser user = SysUserService.Login(loginBody); logininfor.UserName = loginBody.Username; logininfor.Status = "1"; logininfor.LoginTime = DateTime.Now; if (user == null || user.UserId <= 0) { logininfor.Msg = "用户名或密码错误"; AddLoginInfo(logininfor); throw new CustomException(ResultCode.LOGIN_ERROR ,logininfor.Msg); } if (user.Status == 1) { logininfor.Msg = "该用户已禁用"; AddLoginInfo(logininfor); throw new CustomException(ResultCode.LOGIN_ERROR, logininfor.Msg); } logininfor.Status = "0"; logininfor.Msg = "登录成功"; AddLoginInfo(logininfor); SysUserService.UpdateLoginInfo(loginBody, user.UserId); return user; } /// /// 查询登录日志 /// /// /// 分页 /// public PagedInfo GetLoginLog(SysLogininfor logininfoDto, PagerInfo pager) { //logininfoDto.BeginTime = DateTimeHelper.GetBeginTime(logininfoDto.BeginTime, -1); //logininfoDto.EndTime = DateTimeHelper.GetBeginTime(logininfoDto.EndTime, 1); var exp = Expressionable.Create(); exp.AndIF(logininfoDto.BeginTime == null, it => it.LoginTime >= DateTime.Now.ToShortDateString().ParseToDateTime()); exp.AndIF(logininfoDto.BeginTime != null, it => it.LoginTime >= logininfoDto.BeginTime && it.LoginTime <= logininfoDto.EndTime); exp.AndIF(logininfoDto.Ipaddr.IfNotEmpty(), f => f.Ipaddr == logininfoDto.Ipaddr); exp.AndIF(logininfoDto.UserName.IfNotEmpty(), f => f.UserName.Contains(logininfoDto.UserName)); exp.AndIF(logininfoDto.Status.IfNotEmpty(), f => f.Status == logininfoDto.Status); var query = Queryable().Where(exp.ToExpression()) .OrderBy(it => it.InfoId, OrderByType.Desc); return query.ToPage(pager); } /// /// 记录登录日志 /// /// /// public void AddLoginInfo(SysLogininfor sysLogininfor) { Insert(sysLogininfor); } /// /// 清空登录日志 /// public void TruncateLogininfo() { Truncate(); } /// /// 删除登录日志 /// /// /// public int DeleteLogininforByIds(long[] ids) { return Delete(ids); } } }