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
}