CostCalculationItem/IRaCIS.Core.API/Controllers/ManageMent/UserController.cs

177 lines
6.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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);
}
}
}