using Hotline.Caching.Interfaces; 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.Constants; using XF.Domain.Exceptions; using XF.Domain.Repository; 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 IRepository _userFastMenuRepository; private readonly IRepository _userRepository; private readonly ISystemSettingCacheManager _systemSettingCacheManager; public HomeController( ISugarUnitOfWork uow, ISessionContext sessionContext, ISystemAuthorityRepository systemAuthorityRepository, ISystemMenuRepository systemMenuRepository, IMapper mapper, IRepository userFastMenuRepository, IRepository userRepository, ISystemSettingCacheManager systemSettingCacheManager) { _uow = uow; _sessionContext = sessionContext; _systemAuthorityRepository = systemAuthorityRepository; _systemMenuRepository = systemMenuRepository; _mapper = mapper; _userFastMenuRepository = userFastMenuRepository; _userRepository = userRepository; _systemSettingCacheManager = systemSettingCacheManager; } #region 开放请求接口 /// /// 获取当前用户信息 /// /// [HttpGet("myinfo")] public async Task GetMyInfo() { if (!string.IsNullOrEmpty(_sessionContext.UserId)) { var monitor = false; var setting = _systemSettingCacheManager.GetSetting(SettingConstants.SeatsMonitor); var settingStr = setting?.SettingValue; var roles = _sessionContext.Roles; foreach (var item in settingStr) { if (roles != null && roles.Contains(item)) monitor = true; } var user = await _userRepository.Queryable() .Includes(x => x.Organization) .Includes(x => x.Account) .Includes(x => x.Roles) .FirstAsync(x => x.Id == _sessionContext.UserId); //return await _userRepository.GetAsync(_sessionContext.UserId); return new { User = user, Monitor = monitor }; } 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; //} /// /// 获取可选快捷入口 /// /// [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("无效登录信息"); } /// /// 设置快捷入口 /// /// [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); fastmenu.UserId = userId; await _userFastMenuRepository.AddAsync(fastmenu); } else { _mapper.Map(dto, model); await _userFastMenuRepository.UpdateAsync(model); } } else { throw UserFriendlyException.SameMessage("无效登录信息"); } } /// /// 获取我的快捷入口 /// /// [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("无效登录信息"); } /// /// 首页系统配置 /// /// /// IsRestApproval : 小休是否需要审核 /// IsNeedTelNo : 是否需要分机 /// IsTelNeedVerify : 分机是否需要验证 /// [AllowAnonymous] [HttpGet("home-page-info")] public async Task HomePageInfo() { var rsp = new { IsRestApproval = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.IsRestApproval).SettingValue[0]), IsNeedTelNo = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.IsNeedTelNo).SettingValue[0]), IsTelNeedVerify = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.IsTelNeedVerify).SettingValue[0]), TalkingDealTime = int.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.TalkingDealTime).SettingValue[0]), IsCustomEvent = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.IsCustomEvent).SettingValue[0]), IsTranspondCity = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.TranspondCity).SettingValue[0]), IsAverageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]), IsOpenJudicialManagement = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.IsOpenJudicialManagement).SettingValue[0]), NoSignOrgCode = _systemSettingCacheManager.GetSetting(SettingConstants.NoSignOrgCode).SettingValue, IsOpenRepeatedWorkOrders= bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.IsOpenRepeatedWorkOrders).SettingValue[0]) }; return rsp; } #endregion #region 菜单权限 /// /// 获取当前用户所有菜单 /// /// [AllowAnonymous] [HttpGet("get-my-auth-menu")] public async Task GetUserAuthorityMenuByToken() { var roles = _sessionContext.Roles; var menus = _mapper.Map>(await _systemAuthorityRepository.GetMyMenu(roles)); var buttons = await _systemAuthorityRepository.GetMyButton(roles); return new UserAuthorityDto() { menus = menus, buttons = buttons }; } ///// ///// 获取当前用户所有按钮 ///// ///// //[AllowAnonymous] //[HttpGet("get-my-auth-button")] //public async Task> GetUserAuthorityButtonByToken() //{ // var roles = _sessionContext.Roles; // return await _systemAuthorityRepository.GetMyButton(roles); //} #endregion }