using Microsoft.AspNetCore.Mvc; using System.Net; using System.Net.Http.Headers; using Microsoft.Extensions.Hosting.Internal; using Microsoft.AspNetCore.Http.Extensions; using IStation.Untity; using Furion.DynamicApiController; using System.ComponentModel.DataAnnotations; using Mapster; using Microsoft.AspNetCore.Http; using Furion.DependencyInjection; using Microsoft.AspNetCore.Authorization; using Furion.DataEncryption; namespace IStation.Application { /// /// UserLogin /// [AllowAnonymous] [Route("User/UserLogin")] [ApiDescriptionSettings("User", Name = "用户登录", Order = 1000)] public class UserLogin_Controller : IDynamicApiController, ITransient { private readonly IHttpContextAccessor _httpContextAccessor; private readonly Service.UserLogin _service = new Service.UserLogin(); /// /// /// /// public UserLogin_Controller(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } /// /// 标准登录 /// [Route("FromStandard@V1.0")] [HttpPost] public UserLoginOutput FromStandard(UserLoginInput input) { var loginIp = HttpContextHelper.GetRemoteIpAddress(_httpContextAccessor.HttpContext.Request); var user = _service.Login (input.SoftType, input.SoftTag, input.LoginName, input.LoginPwd, loginIp, null, out Model.eLoginStatus loginStatus); var vm = new UserLoginOutput() { Status = loginStatus, User = user?.Adapt() }; if (loginStatus == Model.eLoginStatus.Success) { if (Settings.WebApi.EnableJwt) { // token var accessToken = JWTEncryption.Encrypt(new Dictionary() { { ClaimConst.UserID, user.ID }, // 用户标识 { ClaimConst.LoginName,user.LoginName }, // 登录名称 { ClaimConst.LoginPwd,user.LoginPwd }, // 登录密码 { ClaimConst.CorpID,user.CorpID }, // 客户标识 { ClaimConst.IsAdmin,user.IsAdmin } // 是否为管理员 }); // 设置Swagger自动登录 _httpContextAccessor.HttpContext.SigninToSwagger(accessToken); vm.Token = accessToken; } } return vm; } /// /// 标准客户登录 /// [Route("FromCorpStandard@V1.0")] [HttpPost] public UserLoginOutput FromCorpStandard(UserLoginCorpInput input) { var loginIp = HttpContextHelper.GetRemoteIpAddress(_httpContextAccessor.HttpContext.Request); var user = _service.LoginCorp (input.CorpID, input.SoftType, input.SoftTag, input.LoginName, input.LoginPwd, loginIp, null, out Model.eLoginStatus loginStatus); var vm = new UserLoginOutput() { Status = loginStatus, User = user?.Adapt() }; if (loginStatus == Model.eLoginStatus.Success) { if (Settings.WebApi.EnableJwt) { // token var accessToken = JWTEncryption.Encrypt(new Dictionary() { { ClaimConst.UserID, user.ID }, // 用户标识 { ClaimConst.LoginName,user.LoginName }, // 登录名称 { ClaimConst.LoginPwd,user.LoginPwd }, // 登录密码 { ClaimConst.CorpID,user.CorpID }, // 客户标识 { ClaimConst.IsAdmin,user.IsAdmin } // 是否为管理员 }); // 设置Swagger自动登录 _httpContextAccessor.HttpContext.SigninToSwagger(accessToken); vm.Token = accessToken; } } return vm; } /// /// 微信小程序客户登录 /// [Route("FromCorpWechatApplet@V1.0")] [HttpPost] public ApplicationViewModel.UserLogin FromCorpWechatApplet(UserLoginCorpWechatAppletInput input) { var message = input.Adapt(); var loginIp = HttpContextHelper.GetRemoteIpAddress(_httpContextAccessor.HttpContext.Request); var user = _service.LoginCorp (input.CorpID, input.SoftType, input.SoftTag, input.LoginName, input.LoginPwd, loginIp, message.ToJson(), out Model.eLoginStatus loginStatus); var vm = new ApplicationViewModel.UserLogin() { Status = loginStatus, User = user?.Adapt() }; if (loginStatus == Model.eLoginStatus.Success) { if (user != null) { vm.User = new ApplicationViewModel.UserDto4Wechat(); vm.User.LoginName = user.LoginName; vm.User.EmployeeID = user.ID; vm.User.ID = user.ID; vm.User.LastLoginWxUserCode = ""; vm.User.CorpID = user.CorpID; vm.User.RealName = user.RealName; vm.User.Telphone = user.Mobile; } if (Settings.WebApi.EnableJwt) { // token var accessToken = JWTEncryption.Encrypt(new Dictionary() { { ClaimConst.UserID, user.ID }, // 用户标识 { ClaimConst.LoginName,user.LoginName }, // 登录名称 { ClaimConst.LoginPwd,user.LoginPwd }, // 登录密码 { ClaimConst.CorpID,user.CorpID }, // 客户标识 { ClaimConst.IsAdmin,user.IsAdmin } // 是否为管理员 }); // 设置Swagger自动登录 _httpContextAccessor.HttpContext.SigninToSwagger(accessToken); vm.Token = accessToken; } } return vm; } } } namespace IStation.ApplicationViewModel { /// /// 用户小程序登录输出 /// public class UserLogin { /// /// 状态 /// public Model.eLoginStatus Status { get; set; } /// /// 用户 /// public UserDto4Wechat User { get; set; } /// /// 令牌 /// public string Token { get; set; } } /// /// 小程序 /// public class UserDto4Wechat { /// /// /// public string LastLoginWxUserCode { get; set; } /// /// 标识 /// public long EmployeeID { get; set; } /// /// 标识 /// public long ID { get; set; } /// /// 客户标识 /// public long CorpID { get; set; } /// /// 登录名称 /// public string LoginName { get; set; } /// /// 真实名称 /// public string RealName { get; set; } /// /// 手机号码 /// public string Telphone { get; set; } } }