using Hotline.KnowledgeBase;
using Hotline.Permissions;
using Hotline.Share.Dtos.Knowledge;
using MapsterMapper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using XF.Domain.Exceptions;
namespace Hotline.Api.Controllers
{
///
///
///
public class KnowledgeCommonController : BaseController
{
private readonly IKnowledgeTypeRepository _knowledgeTypeRepository;
private readonly IKnowledgeRepository _knowledgeRepository;
private readonly IKnowledgeTypeService _knowledgeTypeService;
private readonly IKnowledgeStandardRepository _knowledgeStandardRepository;
private readonly IMapper _mapper;
///
///
///
///
///
///
///
///
public KnowledgeCommonController(IKnowledgeRepository knowledgeRepository, IKnowledgeTypeRepository knowledgeTypeRepository, IKnowledgeTypeService knowledgeTypeService,
IKnowledgeStandardRepository knowledgeStandardRepository,
IMapper mapper)
{
_knowledgeRepository = knowledgeRepository;
_knowledgeTypeRepository = knowledgeTypeRepository;
_knowledgeTypeService = knowledgeTypeService;
_knowledgeStandardRepository = knowledgeStandardRepository;
_mapper = mapper;
}
#region 知识分类
///
///知识分类- 新增
///
///
///
[Permission(EPermission.AddKnowledgeType)]
[HttpPost("type-add")]
public async Task TypeAdd([FromBody] AddKnowledgeTypeDto dto)
{
return await _knowledgeTypeService.TypeAdd(dto, HttpContext.RequestAborted);
}
///
///知识分类- 编辑
///
///
///
[Permission(EPermission.UpdateKnowledgeType)]
[HttpPost("type-update")]
public async Task TypeUpdate([FromBody] UpdateKnowledgeTypeDto dto)
{
await _knowledgeTypeService.TypeUpdate(dto, HttpContext.RequestAborted);
}
///
/// 知识分类-新增、编辑初始化
///
///
///
///
[HttpGet("type-init")]
public async Task TypeInit(string Id, string ParentId)
{
return await _knowledgeTypeService.TypeInit(Id, ParentId, HttpContext.RequestAborted);
}
///
/// 知识分类-查询详情
///
///
///
[HttpGet("type-info")]
public async Task TypeInfo(string Id)
{
var types = await _knowledgeTypeRepository.GetAsync(Id, HttpContext.RequestAborted);
if (types is null)
throw UserFriendlyException.SameMessage("查询失败!");
return types;
}
///
/// 知识分类-删除
///
///
///
[Permission(EPermission.RemoveKnowledgeType)]
[HttpDelete("type-delete")]
public async Task TypeDelete(string Id)
{
await _knowledgeTypeService.TypeDelete(Id, HttpContext.RequestAborted);
}
///
/// 知识分类-启用、禁用切换
///
///
///
[Permission(EPermission.KnowledgeTypeChangeState)]
[HttpGet("type-changestate")]
public async Task TypeChangeState(string Id)
{
await _knowledgeTypeService.TypeChangeState(Id, HttpContext.RequestAborted);
}
///
/// 知识分类-禁用,并且下架知识
///
///
///
[Permission(EPermission.KnowledgeTypeChangeStateAndOffShelf)]
[HttpGet("type-changestateandoffshelf")]
public async Task TypeChangeStateAndOffShelf(string Id)
{
await _knowledgeTypeService.TypeChangeStateAndOffShelf(Id, HttpContext.RequestAborted);
}
///
///知识分类- 获取层级分类
///
///
[Permission(EPermission.KnowledgeTypeMange)]
[HttpPost("type-treelist")]
public async Task> GetTreeList(string id)
{
return await _knowledgeTypeRepository.GetTree(Guid.Empty.ToString());
}
#endregion
#region 编写规范
///
/// 编写规范-查询详情
///
///
///
[HttpGet("standard-info")]
public async Task StandardInfo(string Id)
{
if (string.IsNullOrEmpty(Id))
throw UserFriendlyException.SameMessage("ID不能为空!");
var sandard = await _knowledgeStandardRepository.GetAsync(Id, HttpContext.RequestAborted);
if (sandard is null)
throw UserFriendlyException.SameMessage("编写规范查询失败!");
return sandard;
}
///
/// 编写规范-删除
///
///
///
[Permission(EPermission.RemoveKnowledgeStandard)]
[HttpDelete("standard-delete")]
public async Task StandardDelete(string Id)
{
if (string.IsNullOrEmpty(Id))
throw UserFriendlyException.SameMessage("ID不能为空!");
//删除操作
await _knowledgeStandardRepository.RemoveAsync(Id, false, HttpContext.RequestAborted);
}
///
/// 编写规范-新增
///
///
///
[Permission(EPermission.KnowledgeStandardAdd)]
[HttpPost("standard-add")]
public async Task StandardAdd([FromBody] AddKnowledgeStandardDto dto)
{
var sandard = _mapper.Map(dto);
sandard.CreationTime = DateTime.Now;
await _knowledgeStandardRepository.AddAsync(sandard, HttpContext.RequestAborted);
}
///
/// 编写规范-修改
///
///
///
[Permission(EPermission.KnowledgeStandardUpdate)]
[HttpPost("standard-update")]
public async Task StandardUpdate([FromBody] UpdateKnowledgeStandardDto dto)
{
var sandard = _mapper.Map(dto);
await _knowledgeStandardRepository.UpdateAsync(sandard, HttpContext.RequestAborted);
}
#endregion
}
}