123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- 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;
- /// <summary>
- /// 主页相关接口
- /// </summary>
- public class HomeController : BaseController
- {
- private readonly ISugarUnitOfWork<HotlineDbContext> _uow;
- private readonly ISessionContext _sessionContext;
- private readonly ISystemAuthorityRepository _systemAuthorityRepository;
- private readonly ISystemMenuRepository _systemMenuRepository;
- private readonly IMapper _mapper;
- private readonly IRepository<UserFastMenu> _userFastMenuRepository;
- private readonly IRepository<User> _userRepository;
- private readonly ISystemSettingCacheManager _systemSettingCacheManager;
- public HomeController(
- ISugarUnitOfWork<HotlineDbContext> uow,
- ISessionContext sessionContext,
- ISystemAuthorityRepository systemAuthorityRepository,
- ISystemMenuRepository systemMenuRepository,
- IMapper mapper,
- IRepository<UserFastMenu> userFastMenuRepository,
- IRepository<User> userRepository,
- ISystemSettingCacheManager systemSettingCacheManager)
- {
- _uow = uow;
- _sessionContext = sessionContext;
- _systemAuthorityRepository = systemAuthorityRepository;
- _systemMenuRepository = systemMenuRepository;
- _mapper = mapper;
- _userFastMenuRepository = userFastMenuRepository;
- _userRepository = userRepository;
- _systemSettingCacheManager = systemSettingCacheManager;
- }
- #region 开放请求接口
- /// <summary>
- /// 获取当前用户信息
- /// </summary>
- /// <returns></returns>
- [HttpGet("myinfo")]
- public async Task<User?> GetMyInfo()
- {
- if (!string.IsNullOrEmpty(_sessionContext.UserId))
- {
- return await _userRepository.Queryable().Includes(x => x.Organization).FirstAsync(x => x.Id == _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<Blacklist,Call,CallDetail,CallRecord,TelHold>();
- //db.CodeFirst.InitTables<Ivr, IvrCategory, Tel, TelGroup, TelRest>();
- db.CodeFirst.InitTables<KnowledgeType>();
- //db.CodeFirst.InitTables<KnowledgeType, Orders.Order, OrderTemporary, OrgUser>();
- //db.CodeFirst.InitTables<SystemAuthority, SystemButton, SystemDataAuthority, SystemDataTable, SystemMenu>();
- //db.CodeFirst.InitTables<SystemOrganize, SystemSetting, SystemSettingGroup, UserFastMenu>();
- //db.CodeFirst.InitTables<User, Work,SysDicType,SysDicData, TrunkIvrManager>();
- return Task.CompletedTask;
- }
- /// <summary>
- /// 获取可选快捷入口
- /// </summary>
- /// <returns></returns>
- [HttpPost("get-fastmenu")]
- public async Task<IReadOnlyList<SystemMenu>> 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("无效登录信息");
- }
- /// <summary>
- /// 设置快捷入口
- /// </summary>
- /// <returns></returns>
- [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<UserFastMenu>(dto);
- fastmenu.UserId = userId;
- await _userFastMenuRepository.AddAsync(fastmenu);
- }
- else
- {
- _mapper.Map(dto, model);
- await _userFastMenuRepository.UpdateAsync(model);
- }
- }
- else
- {
- throw UserFriendlyException.SameMessage("无效登录信息");
- }
- }
- /// <summary>
- /// 获取我的快捷入口
- /// </summary>
- /// <returns></returns>
- [HttpGet("get-myfastmenu")]
- public async Task<IReadOnlyList<SystemMenu>> GetMyFastMenu()
- {
- if (!string.IsNullOrEmpty(_sessionContext.UserId))
- {
- var roles = _sessionContext.Roles;
- return await _systemMenuRepository.GetMyFastMenu(roles, _sessionContext.UserId);
- }
- throw UserFriendlyException.SameMessage("无效登录信息");
- }
- /// <summary>
- /// 首页系统配置
- /// </summary>
- /// <returns></returns>
- [AllowAnonymous]
- [HttpGet("home-page-info")]
- public async Task<HomeSettingDto> HomePageInfo()
- {
- var RestApproval = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.RestApproval).SettingValue[0]);
- return new HomeSettingDto() { IsRestApproval = RestApproval };
- }
- #endregion
- #region 菜单权限
- /// <summary>
- /// 获取当前用户所有菜单
- /// </summary>
- /// <returns></returns>
- [AllowAnonymous]
- [HttpGet("get-my-auth-menu")]
- public async Task<UserAuthorityDto> GetUserAuthorityMenuByToken()
- {
- var roles = _sessionContext.Roles;
- var menus = _mapper.Map<List<SystemMenuDto>>(await _systemAuthorityRepository.GetMyMenu(roles));
- var buttons = await _systemAuthorityRepository.GetMyButton(roles);
- return new UserAuthorityDto() { menus = menus, buttons = buttons };
- }
-
- ///// <summary>
- ///// 获取当前用户所有按钮
- ///// </summary>
- ///// <returns></returns>
- //[AllowAnonymous]
- //[HttpGet("get-my-auth-button")]
- //public async Task<IReadOnlyList<string>> GetUserAuthorityButtonByToken()
- //{
- // var roles = _sessionContext.Roles;
- // return await _systemAuthorityRepository.GetMyButton(roles);
- //}
- #endregion
- }
|