src/ShenNius.Share.Domain/Services/Sys/UserService.cs

(开头部分) 6KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using AutoMapper;
using Microsoft.AspNetCore.Http;
using NLog;
using ShenNius.Share.Common;
using ShenNius.Share.Domain.Repository;
using ShenNius.Share.Infrastructure.Caches;
using ShenNius.Share.Infrastructure.Common;
using ShenNius.Share.Infrastructure.Extensions;
using ShenNius.Share.Model.Entity.Sys;
using ShenNius.Share.Models.Configs;
using ShenNius.Share.Models.Dtos.Input;
using ShenNius.Share.Models.Dtos.Output.Sys;
using ShenNius.Share.Models.Enums;
using ShenNius.Share.Models.Enums.Extension;
using System;
using System.Linq;
using System.Threading.Tasks;

namespace ShenNius.Share.Domain.Services.Sys
{
    public interface IUserService : IBaseServer<User>
    {
        Task<ApiResult<LoginOutput>> LoginAsync(LoginInput loginInput);
        Task<ApiResult> RegisterAsync(UserRegisterInput userRegisterInput);
        Task<ApiResult> ModfiyAsync(UserModifyInput userModifyInput);
        Task<ApiResult> ModfiyPwdAsync(ModifyPwdInput modifyPwdInput);
        Task<ApiResult> GetUserAsync(int id);

    }
    public partial class UserService : BaseServer<User>, IUserService
    {
        private readonly IMapper _mapper;
        private readonly IHttpContextAccessor _accessor;
        private readonly ICurrentUserContext _currentUserContext;
        private readonly ICacheHelper _cacheHelper;
        public UserService(IMapper mapper, IHttpContextAccessor httpContextAccessor, ICurrentUserContext currentUserContext, ICacheHelper cacheHelper)
        {
            _mapper = mapper;
            _accessor = httpContextAccessor;
            _currentUserContext = currentUserContext;
            _cacheHelper = cacheHelper;
        }

        public async Task<ApiResult<LoginOutput>> LoginAsync(LoginInput loginInput)
        {
            loginInput.Password = Md5Crypt.Encrypt(loginInput.Password);
            var loginModel = await GetModelAsync(d => d.Name.Equals(loginInput.LoginName) && d.Password.Equals(loginInput.Password));
            if (loginModel?.Id == 0)
            {
                new LogHelper().Process(loginModel?.Name, LogEnum.Login.GetEnumText(), $"{loginModel?.Name}登陆失败,用户名或密码错误!", LogLevel.Info);
                return new ApiResult<LoginOutput>("用户名或密码错误", 500);
            }
            if (!loginInput.ConfirmLogin)
            {
                if (loginModel.IsLogin)
                {
                    return new ApiResult<LoginOutput>($"该用户[{loginInput.LoginName}]已经登录,此时强行登录,其他地方会被挤下线!", 200);
                }
            }
            string ip = _accessor.HttpContext.Request.Headers["X-Forwarded-For"].FirstOrDefault() ?? _accessor.HttpContext.Connection.RemoteIpAddress.ToString();
后面还有 81 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。