Files
shgx_tz_mes_backend_sync/ZR.Service/System/SysLoginService.cs

115 lines
3.8 KiB
C#
Raw Normal View History

2021-08-23 16:57:25 +08:00
using Infrastructure;
using Infrastructure.Attribute;
2022-09-21 21:43:05 +08:00
using Infrastructure.Extensions;
using SqlSugar;
2021-08-23 16:57:25 +08:00
using System;
using ZR.Model;
using ZR.Model.System;
2022-09-21 21:43:05 +08:00
using ZR.Model.System.Dto;
using ZR.Repository;
2021-09-16 19:35:17 +08:00
using ZR.Service.System.IService;
2021-08-23 16:57:25 +08:00
namespace ZR.Service.System
{
/// <summary>
/// 登录
/// </summary>
[AppService(ServiceType = typeof(ISysLoginService), ServiceLifetime = LifeTime.Transient)]
2021-11-21 15:48:24 +08:00
public class SysLoginService: BaseService<SysLogininfor>, ISysLoginService
2021-08-23 16:57:25 +08:00
{
2022-10-20 18:30:05 +08:00
private readonly ISysUserService SysUserService;
2021-08-23 16:57:25 +08:00
2022-10-20 18:30:05 +08:00
public SysLoginService(ISysUserService sysUserService)
2021-08-23 16:57:25 +08:00
{
2022-10-20 18:30:05 +08:00
SysUserService = sysUserService;
2021-08-23 16:57:25 +08:00
}
/// <summary>
/// 登录验证
/// </summary>
/// <param name="loginBody"></param>
/// <returns></returns>
public SysUser Login(LoginBodyDto loginBody, SysLogininfor logininfor)
{
2023-05-09 19:41:07 +08:00
if (loginBody.Password.Length != 32)
{
loginBody.Password = NETCore.Encrypt.EncryptProvider.Md5(loginBody.Password);
}
2021-08-23 16:57:25 +08:00
2022-10-20 18:30:05 +08:00
SysUser user = SysUserService.Login(loginBody);
2022-09-01 21:54:53 +08:00
logininfor.UserName = loginBody.Username;
logininfor.Status = "1";
logininfor.LoginTime = DateTime.Now;
2021-08-23 16:57:25 +08:00
if (user == null || user.UserId <= 0)
{
2022-09-01 21:54:53 +08:00
logininfor.Msg = "用户名或密码错误";
2021-08-23 16:57:25 +08:00
AddLoginInfo(logininfor);
2022-09-01 21:54:53 +08:00
throw new CustomException(ResultCode.LOGIN_ERROR ,logininfor.Msg);
2021-08-23 16:57:25 +08:00
}
if (user.Status == "1")
{
2022-09-01 21:54:53 +08:00
logininfor.Msg = "该用户已禁用";
2021-08-23 16:57:25 +08:00
AddLoginInfo(logininfor);
2022-09-01 21:54:53 +08:00
throw new CustomException(ResultCode.LOGIN_ERROR, logininfor.Msg);
2021-08-23 16:57:25 +08:00
}
2022-09-01 21:54:53 +08:00
logininfor.Status = "0";
logininfor.Msg = "登录成功";
2021-08-23 16:57:25 +08:00
AddLoginInfo(logininfor);
2022-10-20 18:30:05 +08:00
SysUserService.UpdateLoginInfo(loginBody, user.UserId);
2021-08-23 16:57:25 +08:00
return user;
}
/// <summary>
2023-04-14 21:36:44 +08:00
/// 查询登录日志
2021-08-23 16:57:25 +08:00
/// </summary>
/// <param name="logininfoDto"></param>
/// <param name="pager">分页</param>
/// <returns></returns>
2021-12-18 10:56:02 +08:00
public PagedInfo<SysLogininfor> GetLoginLog(SysLogininfor logininfoDto, PagerInfo pager)
2021-08-23 16:57:25 +08:00
{
logininfoDto.BeginTime = DateTimeHelper.GetBeginTime(logininfoDto.BeginTime, -1);
logininfoDto.EndTime = DateTimeHelper.GetBeginTime(logininfoDto.EndTime, 1);
2022-09-21 21:43:05 +08:00
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);
2021-08-23 16:57:25 +08:00
}
/// <summary>
/// 记录登录日志
/// </summary>
/// <param name="sysLogininfor"></param>
/// <returns></returns>
public void AddLoginInfo(SysLogininfor sysLogininfor)
{
2022-09-21 21:43:05 +08:00
Insert(sysLogininfor);
2021-08-23 16:57:25 +08:00
}
/// <summary>
/// 清空登录日志
/// </summary>
public void TruncateLogininfo()
{
2022-09-21 21:43:05 +08:00
Truncate();
2021-08-23 16:57:25 +08:00
}
/// <summary>
/// 删除登录日志
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public int DeleteLogininforByIds(long[] ids)
{
2022-09-21 21:43:05 +08:00
return Delete(ids);
2021-08-23 16:57:25 +08:00
}
}
}