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 } }