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
|
{
|
/// <summary>
|
/// 登录控制器
|
/// </summary>
|
[ApiDescriptionSettings("LogInAndUser")]
|
[DynamicApiController]
|
|
public class LogInController
|
{
|
private TokenService _tokenService;
|
private UserService _userService;
|
public LogInController(TokenService tokenService,UserService userService) {
|
_tokenService = tokenService;
|
_userService = userService;
|
}
|
/// <summary>
|
/// 登录 1 输入员工账户或者租户账户,2 选择租户账户,3 选择公司
|
/// </summary>
|
/// <returns>登录信息</returns>
|
[HttpPost("LogoIn")]
|
public async Task<RetLoginVM> LogoIn (LoginPsWordIN Parma)
|
{
|
bool needtoken=false;
|
if (Parma.TenantId==null)
|
{
|
//如果还没确定租户ID 需要先确定租户ID
|
List<TenderVM>Tender = 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<UnitVM> 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($"参数错误");
|
|
|
}
|
|
|
|
|
/// <summary>
|
/// 获取公司列表
|
/// </summary>
|
/// <returns>登录信息</returns>
|
public bool GetUnitList()
|
{
|
|
return true;
|
}
|
/// <summary>
|
/// 获取公司列表
|
/// </summary>
|
/// <returns>登录信息</returns>
|
public bool GetTenantInfoList()
|
{
|
|
return true;
|
}
|
public string Get()
|
{
|
return $"Hello {nameof(Furion)}";
|
}
|
}
|
}
|