using Long.Core.Query;
using Long.DAO.Basedata;
using Long.Common.Basedata;
using Long.Utils.Encryptor;
using Microsoft.Extensions.Configuration;
using Long.DAO.System;
using Long.Core.Extensions;
namespace Long.Service.UserService.Basedata
{
///
/// 系统用户·服务
///
public class UserService : IUserService
{
private readonly IConfiguration configuration;
private readonly IUserDatabase _userDatabase = new UserDatabase();
private readonly INextValueDatabase _nextValueDatabase = new NextValueDatabase();
public UserService(IConfiguration configuration)
{
this.configuration = configuration;
}
///
/// 获取全部实体列表
///
///
public async Task> Get()
{
return await _userDatabase.GetAsync();
}
///
/// 通过条件获取实体列表
///
///
///
public async Task> Get(QueryParamenter queryParamenter)
{
return await _userDatabase.GetAsync(queryParamenter);
}
///
/// 通过 Id 获取系统用户实体
///
///
///
public async Task GetById(long id)
{
return await _userDatabase.GetFirstAsync(id);
}
///
/// 获取用户信息
///
/// 用户名
///
public async Task GetByUserName(string userName)
{
return await _userDatabase.GetByUserNameAsync(userName);
}
///
/// 注册用户
///
///
///
public async Task Regist(RegistInput input)
{
string key = configuration.GetSection("EncryptorKey").Value ?? "";
var user = await _userDatabase.GetUserAsync(input.UserName);
if (user != null)
{
throw new ApplicationException("该用户已注册。");
}
user = new User();
if (input.UserName.IsEmail())
{
user.Email = input.UserName;
}
else if (input.UserName.IsPhone())
{
user.Phone = input.UserName;
}
else
{
throw new ApplicationException("请输入正确的账号。");
}
user.Password = DESEncryptor.Encrypt(input.Password, key);
user.Opened = true;
user.Activited = true;
user.ActivationCode = new Random(999999).Next().ToString().PadLeft('0');
user.ActivationCodeOn = DateTime.Now;
long id = await _userDatabase.InsertAsync(user);
// 发送激活邮件
var url = CreateActivetionUrl(user.PromotionCode);
return id;
}
///
/// 更新密码
///
/// 内码
/// 新密码
/// 记录更新数
public async Task UpdatePassword(long id, string password)
{
string key = this.configuration.GetSection("EncryptorKey").Value ?? "";
return await _userDatabase.UpdatePassword(id, DESEncryptor.Encrypt(password, key));
}
///
/// 创建激活链接
///
///
///
public string CreateActivetionUrl(string code)
{
var str = Environment.UserDomainName;
return $"https://";
}
}
}