You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

147 lines
4.6 KiB

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Account;
using Volo.Abp.AspNetCore.Mvc;
using Win_in.Sfs.Auth.Application.Contracts;
using Win_in.Sfs.Wms.Pda.Authenticaitons;
using Win_in.Sfs.Wms.Pda.Models;
using PdaMenuDto = Win_in.Sfs.Wms.Pda.Models.PdaMenuDto;
using PdaMenuGroupDto = Win_in.Sfs.Wms.Pda.Models.PdaMenuGroupDto;
namespace Win_in.Sfs.Wms.Pda.Controllers.Accounts;
/// <summary>
///
/// </summary>
[AllowAnonymous]
[ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}account")]
public class AccountController : AbpController
{
private readonly IProfileAppService _profileAppService;
private readonly ITokenService _tokenService;
private readonly IUserMenuAppService _userMenuAppService;
private readonly IUserWorkGroupAppService _userWorkGroupAppService;
/// <summary>
///
/// </summary>
/// <param name="profileAppService"></param>
/// <param name="tokenService"></param>
/// <param name="userMenuAppService"></param>
/// <param name="userWorkGroupAppService"></param>
public AccountController(IProfileAppService profileAppService
, ITokenService tokenService
, IUserMenuAppService userMenuAppService
, IUserWorkGroupAppService userWorkGroupAppService
)
{
_profileAppService = profileAppService;
_tokenService = tokenService;
_userMenuAppService = userMenuAppService;
_userWorkGroupAppService = userWorkGroupAppService;
}
/// <summary>
/// 登录
/// </summary>
/// <param name="userLoginInput"></param>
/// <returns></returns>
[HttpPost("login")]
public virtual async Task<BaererToken> LoginAsync(UserLoginInput userLoginInput)
{
var token = await _tokenService.GetTokenAsync(userLoginInput.Username, userLoginInput.Password).ConfigureAwait(false);
return token;
}
/// <summary>
/// 个人配置
/// </summary>
/// <returns></returns>
[HttpGet("profile")]
public virtual async Task<ProfileDto> GetProfileAsync()
{
return await _profileAppService.GetAsync().ConfigureAwait(false);
}
/// <summary>
/// 修改个人配置
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("profile")]
public virtual async Task<ProfileDto> UpdateProfileAsync(UpdateProfileDto dto)
{
return await _profileAppService.UpdateAsync(dto).ConfigureAwait(false);
}
/// <summary>
/// 修改密码
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("change-password")]
public virtual async Task ChangePasswordAsync(ChangePasswordInput input)
{
await _profileAppService.ChangePasswordAsync(input).ConfigureAwait(false);
}
/// <summary>
/// 菜单
/// </summary>
/// <returns></returns>
[HttpGet("menus")]
public virtual async Task<List<PdaMenuGroupDto>> GetMenusAsync()
{
var userId = CurrentUser.Id;
var pdaMenuGroupDtos = new List<PdaMenuGroupDto>();//返回给pda的菜单 已排序
var menusOfUser = await _userMenuAppService.GetPdaMenusOfUserAsync(userId).ConfigureAwait(false);
var menuGroups = menusOfUser.GroupBy(p => p.GroupName);
foreach (var menuGroup in menuGroups)
{
var pdaMenuDtos = new List<PdaMenuDto>();
var groupSort = 0;
var groupTitle = "";
foreach (var menuDto in menuGroup.OrderBy(p => p.Sort))
{
var pdaMenuDto = new PdaMenuDto
{
name = menuDto.Name,
path = menuDto.Route,
url = menuDto.Icon,
countUrl = menuDto.CountUrl
};
groupSort = menuDto.GroupSort;
groupTitle = menuDto.GroupName;
pdaMenuDtos.Add(pdaMenuDto);
}
pdaMenuGroupDtos.Add(new PdaMenuGroupDto
{
groupSort = groupSort,
title = groupTitle,
list = pdaMenuDtos
});
}
return pdaMenuGroupDtos.OrderBy(p => p.groupSort).ToList();
}
/// <summary>
/// 工作组
/// </summary>
/// <returns></returns>
[HttpGet("workgroups")]
public virtual async Task<List<string>> GetWorkGroupsAsync()
{
var userWorkGroupDtos =
await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false);
return userWorkGroupDtos;
}
}