115 lines
3.8 KiB
C#
115 lines
3.8 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 登录
|
|
/// </summary>
|
|
[AppService(ServiceType = typeof(ISysLoginService), ServiceLifetime = LifeTime.Transient)]
|
|
public class SysLoginService: BaseService<SysLogininfor>, ISysLoginService
|
|
{
|
|
private readonly ISysUserService SysUserService;
|
|
|
|
public SysLoginService(ISysUserService sysUserService)
|
|
{
|
|
SysUserService = sysUserService;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 登录验证
|
|
/// </summary>
|
|
/// <param name="loginBody"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询登录日志
|
|
/// </summary>
|
|
/// <param name="logininfoDto"></param>
|
|
/// <param name="pager">分页</param>
|
|
/// <returns></returns>
|
|
public PagedInfo<SysLogininfor> GetLoginLog(SysLogininfor logininfoDto, PagerInfo pager)
|
|
{
|
|
logininfoDto.BeginTime = DateTimeHelper.GetBeginTime(logininfoDto.BeginTime, -1);
|
|
logininfoDto.EndTime = DateTimeHelper.GetBeginTime(logininfoDto.EndTime, 1);
|
|
|
|
var exp = Expressionable.Create<SysLogininfor>();
|
|
exp.And(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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 记录登录日志
|
|
/// </summary>
|
|
/// <param name="sysLogininfor"></param>
|
|
/// <returns></returns>
|
|
public void AddLoginInfo(SysLogininfor sysLogininfor)
|
|
{
|
|
Insert(sysLogininfor);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 清空登录日志
|
|
/// </summary>
|
|
public void TruncateLogininfo()
|
|
{
|
|
Truncate();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除登录日志
|
|
/// </summary>
|
|
/// <param name="ids"></param>
|
|
/// <returns></returns>
|
|
public int DeleteLogininforByIds(long[] ids)
|
|
{
|
|
return Delete(ids);
|
|
}
|
|
}
|
|
}
|