using Hotline.CallCenter.BlackLists; using Hotline.CallCenter.Calls; using Hotline.CallCenter.Ivrs; using Hotline.CallCenter.Tels; using Hotline.KnowledgeBase; using Hotline.Orders; using Hotline.Repository.SqlSugar; using Hotline.Settings; using Hotline.Share.Dtos.Home; using Hotline.Users; using MapsterMapper; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SqlSugar; using StackExchange.Redis; using XF.Domain.Authentications; using XF.Domain.Exceptions; namespace Hotline.Api.Controllers; /// /// 主页相关接口 /// public class HomeController : BaseController { private readonly ISugarUnitOfWork _uow; private readonly ISessionContext _sessionContext; private readonly ISystemAuthorityRepository _systemAuthorityRepository; private readonly ISystemMenuRepository _systemMenuRepository; private readonly IMapper _mapper; private readonly IUserFastMenuRepository _userFastMenuRepository; private readonly IUserRepository _userRepository; public HomeController( ISugarUnitOfWork uow, ISessionContext sessionContext, ISystemAuthorityRepository systemAuthorityRepository, ISystemMenuRepository systemMenuRepository, IMapper mapper, IUserFastMenuRepository userFastMenuRepository, IUserRepository userRepository) { _uow = uow; _sessionContext = sessionContext; _systemAuthorityRepository = systemAuthorityRepository; _systemMenuRepository = systemMenuRepository; _mapper = mapper; _userFastMenuRepository = userFastMenuRepository; _userRepository = userRepository; } #region 开放请求接口 /// /// 获取当前用户信息 /// /// [AllowAnonymous] [HttpGet("myinfo")] public async Task GetMyInfo() { if (!string.IsNullOrEmpty(_sessionContext.UserId)) { return await _userRepository.GetAsync(_sessionContext.UserId); } throw UserFriendlyException.SameMessage("无效登录信息"); } [AllowAnonymous] [HttpGet("createdb")] public Task CreateDb() { var db = _uow.Db; db.DbMaintenance.CreateDatabase(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); //db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); return Task.CompletedTask; } /// /// 获取可选快捷入口 /// /// [AllowAnonymous] [HttpPost("get-fastmenu")] public async Task> GetFastMenuByToken([FromBody] GetFastMenuByTokenDto dto) { if (!string.IsNullOrEmpty(_sessionContext.UserId)) { var roles = _sessionContext.Roles; return await _systemMenuRepository.GetFastMenu(roles, _sessionContext.UserId, dto.name); } throw UserFriendlyException.SameMessage("无效登录信息"); } /// /// 设置快捷入口 /// /// [AllowAnonymous] [HttpPost("set-fastmenu")] public async Task SetFastMenu([FromBody] SetFastMenuDto dto) { if (!string.IsNullOrEmpty(_sessionContext.UserId)) { string userId = _sessionContext.UserId; var model = await _userFastMenuRepository.GetAsync(x => x.UserId == userId); if (model is null) { var fastmenu = _mapper.Map(dto); await _userFastMenuRepository.AddAsync(fastmenu); } else { _mapper.Map(dto, model); await _userFastMenuRepository.UpdateAsync(model); } } else { throw UserFriendlyException.SameMessage("无效登录信息"); } } /// /// 获取我的快捷入口 /// /// [AllowAnonymous] [HttpGet("get-myfastmenu")] public async Task> GetMyFastMenu() { if (!string.IsNullOrEmpty(_sessionContext.UserId)) { var roles = _sessionContext.Roles; return await _systemMenuRepository.GetMyFastMenu(roles, _sessionContext.UserId); } throw UserFriendlyException.SameMessage("无效登录信息"); } #endregion #region 菜单权限 /// /// 获取当前用户所有菜单 /// /// [AllowAnonymous] [HttpGet("get-my-auth-menu")] public async Task> GetUserAuthorityMenuByToken() { var roles = _sessionContext.Roles; return await _systemAuthorityRepository.GetMyMenu(roles); } /// /// 获取当前用户所有按钮 /// /// [AllowAnonymous] [HttpGet("get-my-auth-button")] public async Task> GetUserAuthorityButtonByToken() { var roles = _sessionContext.Roles; return await _systemAuthorityRepository.GetMyButton(roles); } #endregion }