using DocumentServiceAPI.Application.UserAndLogin.Services; using DocumentServiceAPI.Application.UserAndLogin.ViewMode; using DocumentServiceAPI.Utility; using Furion.DynamicApiController; using Furion.JsonSerialization; using Swashbuckle.AspNetCore.Annotations; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DocumentServiceAPI.Application.UserAndLogin { /// /// 登录控制器 /// [ApiDescriptionSettings("LogInAndUser")] [DynamicApiController] public class LogInController { private TokenService _tokenService; private UserService _userService; public LogInController(TokenService tokenService,UserService userService) { _tokenService = tokenService; _userService = userService; } /// /// 登录 1 输入员工账户或者租户账户,2 选择租户账户,3 选择公司 /// /// 登录信息 [HttpPost("LogoIn")] public async Task LogoIn (LoginPsWordIN Parma) { bool needtoken=false; if (Parma.TenantId==null) { //如果还没确定租户ID 需要先确定租户ID ListTender = await _userService.GetUserTenderList(Parma.ITCode); switch (Tender.Count) { case 0: throw Oops.Oh($"账户或者密码错误"); case 1: needtoken = await _userService.CheckPsw(Tender[0].TenderId, Tender[0].EmployeeID,Parma.PassWord); if(!needtoken) throw Oops.Oh($"账户或者密码错误"); Parma.TenantId = Tender[0].TenderId; Parma.employeeID = Tender[0].EmployeeID; if (Parma.UnitID == null) { List Units = await _userService.GetUserUnitList(Parma.TenantId ?? 0); if (Units.Count == 0) { //没有公司 needtoken = true; } else if (Units.Count == 1) { Parma.UnitID = Units[0].UnitID; needtoken = true; } else { //其他需要用户选择租户 return new RetLoginVM { NeedNext = true, Units = Units, }; } } break; default: //其他需要用户选择租户 return new RetLoginVM { NeedNext = true, Tenants = Tender, }; } } else if(Parma.UnitID==null) { var Units = await _userService.GetUserUnitList(Parma.TenantId??0); if(Units.Count==0) { //没有公司 needtoken = true; } else if (Units.Count==1) { Parma.UnitID= Units[0].UnitID; needtoken = true; } else { //其他需要用户选择租户 return new RetLoginVM { NeedNext = true, Units = Units, }; } } if(needtoken|| Parma.UnitID!=null) { TenderVM Tender = (await _userService.GetUserTenderList(Parma.ITCode)).Where(x=>x.TenderId==Parma.TenantId&&x.EmployeeID==Parma.employeeID).SingleOrDefault(); if(Tender==null) { throw Oops.Oh($"账户密码或者租户选择错误"); } needtoken = await _userService.CheckPsw(Tender. TenderId, Tender.EmployeeID, Parma.PassWord); if (!needtoken) throw Oops.Oh($"账户或者密码错误"); var token= _tokenService.CreateToken(new Model.JwtInfo { EID = Tender.EmployeeID, LogInSource = Parma.Form, TEID = Tender.TenderId, UID = Parma.UnitID, }); return new RetLoginVM { NeedNext = false, Token = token, }; } throw Oops.Oh($"参数错误"); } /// /// 获取公司列表 /// /// 登录信息 public bool GetUnitList() { return true; } /// /// 获取公司列表 /// /// 登录信息 public bool GetTenantInfoList() { return true; } public string Get() { return $"Hello {nameof(Furion)}"; } } }