Waste/Waste.Application/AccountInfo/AccountService.cs

81 lines
3.3 KiB
C#
Raw Normal View History

2021-04-30 14:52:42 +08:00
using Furion.DependencyInjection;
2021-05-27 16:58:40 +08:00
using Nirvana.Common;
using SqlSugar;
2021-04-30 14:52:42 +08:00
using System;
using System.Threading.Tasks;
2021-05-27 16:58:40 +08:00
using Waste.Domain;
2021-04-30 14:52:42 +08:00
namespace Waste.Application
{
public class AccountService : IAccountService, ITransient
{
2021-05-27 16:58:40 +08:00
private readonly ISqlSugarRepository<W_Account> repository;
private readonly SqlSugarClient dbClient;
public AccountService(ISqlSugarRepository<W_Account> sqlSugarRepository)
2021-04-30 14:52:42 +08:00
{
2021-05-27 16:58:40 +08:00
repository = sqlSugarRepository;
dbClient = repository.Context;
}
public async Task<ResultInfo> LoginAsync(LoginModel model)
{
//如果是系统维护人员
if (OperatorProvider.Provider.IsSupperAdmin(model.username, model.pwd))
{
OperatorProvider.Provider.AddCurrent(new OperatorModel
{
AccountType = (int)AccountType.platform,
UserId = Guid.Empty,
IsSuper = true,
BusinessId = Guid.Empty,
LoginIPAddress = Net.Ip,
LoginTime = DateTime.Now,
RealName = "系统维护人员",
RoleId = Guid.Empty,
BusinessCode=""
});
return new ResultInfo { code = ResultState.SUCCESS, message = "登录成功" };
}
var userdata = await dbClient.Queryable<W_Account>().FirstAsync(x => x.UserName == model.username);
if (userdata == null)
{
return new ResultInfo { code = ResultState.FAIL, message = "账户未找到" };
}
if (userdata.Status != 1)
{
return new ResultInfo { code = ResultState.FAIL, message = "账户已禁用" };
}
var password = Md5.md5(DESEncrypt.Encrypt(Md5.md5(model.pwd, 32).ToLower(), userdata.Secret).ToLower(), 32).ToLower();
if (password != userdata.Password)
{
return new ResultInfo { code = ResultState.FAIL, message = "密码不正确" };
}
await dbClient.Updateable<W_Account>().SetColumns(x => new W_Account
{
LastVisitIP = Net.Ip,
LastVisitTime = DateTime.Now
}).Where(x => x.Id == userdata.Id).ExecuteCommandAsync();
string businesscode = "";
if(userdata.BusinessId != Guid.Empty)
{
var buss = await dbClient.Queryable<W_Business>().FirstAsync(x => x.Id == userdata.BusinessId);
businesscode = buss != null ? buss.Code : "";
}
//记录登录信息到cookie和session
OperatorModel logindata = new OperatorModel
{
UserId = userdata.Id,
RoleId = userdata.RoleId,
AccountType = userdata.AccountType,
BusinessId = userdata.BusinessId,
IsSuper = false,
LoginIPAddress = Net.Ip,
LoginTime = DateTime.Now,
RealName = userdata.RealName,
BusinessCode= businesscode
};
OperatorProvider.Provider.AddCurrent(logindata);
return new ResultInfo { code = ResultState.SUCCESS, message = "登录成功"};
2021-04-30 14:52:42 +08:00
}
}
}