177 lines
6.7 KiB
C#
177 lines
6.7 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Threading.Tasks;
|
||
using EasyCaching.Core;
|
||
using IRaCIS.Api.Filter;
|
||
using IRaCIS.Application;
|
||
using IRaCIS.Application.Interfaces;
|
||
using IRaCIS.Application.ViewModels;
|
||
using IRaCIS.Core.API.Auth;
|
||
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
|
||
using IRaCIS.Core.Domain.Share;
|
||
using Microsoft.AspNetCore.Authorization;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
|
||
namespace IRaCIS.Api.Controllers
|
||
{
|
||
[Authorize]
|
||
[Route("sysUser")]
|
||
[ApiController, ApiExplorerSettings(GroupName = "Management")]
|
||
public class UserController : ControllerBase
|
||
{
|
||
private readonly IUserService _userService;
|
||
private readonly ITokenService _tokenService;
|
||
public UserController(IUserService userService, ITokenService tokenService)
|
||
{
|
||
_userService = userService;
|
||
_tokenService = tokenService;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 通过邮箱或者手机 发送验证码
|
||
/// </summary>
|
||
/// <param name="emailOrPhone"></param>
|
||
/// <param name="verificationType"></param>
|
||
/// <param name="isReviewer"></param>
|
||
/// <returns></returns>
|
||
|
||
[HttpGet, Route("sendVerificationCode/{emailOrPhone}/{verificationType:int}/{isReviewer:bool}")]
|
||
[AllowAnonymous]
|
||
public async Task<IResponseOutput> SendVerificationCode(string emailOrPhone, int verificationType, bool isReviewer)
|
||
{
|
||
return await _userService.SendVerificationCode(emailOrPhone, verificationType, isReviewer);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 通过验证码设置新密码
|
||
/// </summary>
|
||
/// <param name="resetPwdModel"></param>
|
||
/// <returns></returns>
|
||
[AllowAnonymous]
|
||
[HttpPost, Route("setNewPassword")]
|
||
public IResponseOutput SetNewPassword(ResetPasswordCommand resetPwdModel)
|
||
{
|
||
return _userService.SetNewPassword(resetPwdModel.EmailOrPhone, resetPwdModel.VerificationType, resetPwdModel.VerificationCode, resetPwdModel.NewPwd, resetPwdModel.IsReviewer);
|
||
}
|
||
|
||
/// <summary> 系统用户登录接口[New] </summary>
|
||
[HttpPost, Route("login")]
|
||
[AllowAnonymous]
|
||
[LogFilter]
|
||
public IResponseOutput<LoginReturnDTO> Login(UserLoginDTO loginUser, [FromServices]IEasyCachingProvider provider)
|
||
{
|
||
var returnModel = _userService.Login(loginUser.UserName, loginUser.Password);
|
||
if (returnModel.IsSuccess)
|
||
{
|
||
returnModel.Data.JWTStr = _tokenService.GetToken(UserClaims.Create(returnModel.Data.BasicInfo));
|
||
}
|
||
|
||
var userId = returnModel.Data.BasicInfo.Id.ToString();
|
||
provider.Set(userId, userId, TimeSpan.FromMinutes(SystemConfig.LoginExpiredTimeSpan));
|
||
return returnModel;
|
||
}
|
||
|
||
/// <summary> 签名认证[New] </summary>
|
||
[HttpGet, Route("VerifySignature/{userName}/{password}")]
|
||
[AllowAnonymous]
|
||
[LogFilter]
|
||
public IResponseOutput VerifySignature(string userName, string password)
|
||
{
|
||
var returnModel = _userService.VerifySignature(userName, password);
|
||
return returnModel;
|
||
//return ResponseOutput.Result(returnModel.IsSuccess);
|
||
}
|
||
|
||
|
||
/// <summary> 分页获取用户列表[New]</summary>
|
||
[HttpPost, Route("getUserList")]
|
||
[Authorize]
|
||
public IResponseOutput<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO param)
|
||
{
|
||
return ResponseOutput.Ok(_userService.GetUserList(param));
|
||
}
|
||
|
||
/// <summary> 更新用户状态(1 可用 0 禁用)[New]</summary>
|
||
[Authorize]
|
||
[LogFilter]
|
||
[HttpPost, Route("updateUserState/{userId:guid}/{state:int}")]
|
||
public IResponseOutput UpdateUserState(Guid userId, int state)
|
||
{
|
||
return _userService.UpdateUserState(userId, state);
|
||
}
|
||
|
||
/// <summary> 修改密码,当前支持旧密码修改密码,手机及邮箱验证码后续支持[New] </summary>
|
||
[HttpPost, Route("modifyPassword")]
|
||
[Authorize]
|
||
[LogFilter]
|
||
public IResponseOutput ModifyPassword(EditPasswordCommand editPwModel)
|
||
{
|
||
return _userService.ModifyPassword(editPwModel);
|
||
}
|
||
|
||
/// <summary> 根据用户Id,获取用户角色列表和当前登录用户的最大权限级别[New][AUTH] </summary>
|
||
[HttpGet, Route("getUserRoles/{userId:guid}")]
|
||
[Authorize]
|
||
public IResponseOutput<UserRoleInfoDTO> GetUserRolesById(Guid userId)
|
||
{
|
||
var optUserId = User.FindFirst("id").Value;
|
||
return ResponseOutput.Ok(new UserRoleInfoDTO()
|
||
{
|
||
RoleList = _userService.GetUserRolesById(userId),
|
||
MaxPrivilegeLevel = _userService.GetUserRoleMaxPrivilegeLevel(Guid.Parse(optUserId))
|
||
});
|
||
}
|
||
|
||
|
||
/// <summary>添加用户[New][AUTH] </summary>
|
||
[HttpPost, Route("addUser")]
|
||
public IResponseOutput<UserAddedReturnDTO> AddUser(UserCommand userAddModel)
|
||
{
|
||
var userId = User.FindFirst("id").Value;
|
||
return _userService.AddUser(userAddModel, Guid.Parse(userId));
|
||
}
|
||
|
||
/// <summary> 更新用户信息[New][AUTH]</summary>
|
||
[HttpPost, Route("updateUser")]
|
||
[LogFilter]
|
||
public IResponseOutput UpdateUser(UserCommand userUpdateModel)
|
||
{
|
||
var userId = User.FindFirst("id").Value;
|
||
return _userService.UpdateUser(userUpdateModel, Guid.Parse(userId));
|
||
}
|
||
|
||
/// <summary> 根据用户Id获取用户详细信息[New] </summary>
|
||
[HttpGet, Route("getUser/{userId:guid}")]
|
||
public IResponseOutput<UserDetailDTO> GetUserById(Guid userId)
|
||
{
|
||
return ResponseOutput.Ok(_userService.GetUserById(userId));
|
||
}
|
||
|
||
/// <summary>获取所有用户列表 </summary>
|
||
[HttpGet, Route("getAllUser")]
|
||
public IResponseOutput<IEnumerable<UserDetailDTO>> GetAllUser()
|
||
{
|
||
return ResponseOutput.Ok(_userService.GetAllUser());
|
||
}
|
||
|
||
///// <summary>获取当前用户是否有复审权限和编辑权限[New][AUTH] </summary>
|
||
|
||
//[HttpGet, Route("getUserResumePermission/{reviewerId:guid}")]
|
||
|
||
//public IResponseOutput<ResumePermission> GetUserResumePermission(Guid reviewerId)
|
||
//{
|
||
// var userId = User.FindFirst("id").Value;
|
||
// return ResponseOutput.Ok(_userService.GetUserResumePermission(reviewerId, Guid.Parse(userId))) ;
|
||
//}
|
||
|
||
/// <summary> 后台重置密码为123456[New] </summary>
|
||
[HttpGet, Route("resetPassword/{userId:guid}")]
|
||
[LogFilter]
|
||
public IResponseOutput ResetPassword(Guid userId)
|
||
{
|
||
return _userService.ResetPassword(userId);
|
||
}
|
||
}
|
||
}
|