123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- using Hotline.KnowledgeBase;
- using Hotline.Permissions;
- using Hotline.Share.Dtos.Knowledge;
- using MapsterMapper;
- using Microsoft.AspNetCore.Mvc;
- using XF.Domain.Exceptions;
- namespace Hotline.Api.Controllers
- {
- /// <summary>
- ///
- /// </summary>
- public class KnowledgeCommonController : BaseController
- {
- #region 注入
- private readonly IKnowledgeTypeRepository _knowledgeTypeRepository;
- private readonly IKnowledgeTypeDomainService _knowledgeTypeDomainService;
- private readonly IKnowledgeStandardRepository _knowledgeStandardRepository;
- private readonly IMapper _mapper;
- /// <summary>
- ///
- /// </summary>
- /// <param name="knowledgeTypeRepository"></param>
- /// <param name="knowledgeTypeDomainService"></param>
- /// <param name="knowledgeStandardRepository"></param>
- /// <param name="mapper"></param>
- public KnowledgeCommonController(IKnowledgeTypeRepository knowledgeTypeRepository, IKnowledgeTypeDomainService knowledgeTypeDomainService,
- IKnowledgeStandardRepository knowledgeStandardRepository,
- IMapper mapper)
- {
- _knowledgeTypeRepository = knowledgeTypeRepository;
- _knowledgeTypeDomainService = knowledgeTypeDomainService;
- _knowledgeStandardRepository = knowledgeStandardRepository;
- _mapper = mapper;
- }
- #endregion
- #region 知识分类
- /// <summary>
- ///知识分类- 新增
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [Permission(EPermission.AddKnowledgeType)]
- [HttpPost("add")]
- public async Task<string> AddType([FromBody] AddKnowledgeTypeDto dto)
- {
- return await _knowledgeTypeDomainService.AddType(dto, HttpContext.RequestAborted);
- }
- /// <summary>
- ///知识分类- 编辑
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [Permission(EPermission.UpdateKnowledgeType)]
- [HttpPut("update")]
- public async Task UpdateType([FromBody] UpdateKnowledgeTypeDto dto)
- {
- await _knowledgeTypeDomainService.UpdateType(dto, HttpContext.RequestAborted);
- }
- /// <summary>
- /// 知识分类-新增、编辑初始化
- /// </summary>
- /// <param name="Id"></param>
- /// <param name="ParentId"></param>
- /// <returns></returns>
- [HttpGet("init")]
- public async Task<KnowledgeTypeDto> InitType(string Id, string ParentId)
- {
- return await _knowledgeTypeDomainService.InitType(Id, ParentId, HttpContext.RequestAborted);
- }
- /// <summary>
- /// 知识分类-查询详情
- /// </summary>
- /// <param name="Id"></param>
- /// <returns></returns>
- [HttpGet("info/{Id}")]
- public async Task<KnowledgeType> GetType(string Id)
- {
- var types = await _knowledgeTypeRepository.GetAsync(Id, HttpContext.RequestAborted);
- if (types is null)
- throw UserFriendlyException.SameMessage("查询失败!");
- return types;
- }
- /// <summary>
- /// 知识分类-删除
- /// </summary>
- /// <param name="Id"></param>
- /// <returns></returns>
- [Permission(EPermission.RemoveKnowledgeType)]
- [HttpDelete("remove")]
- public async Task RemoveType(string Id)
- {
- await _knowledgeTypeDomainService.RemoveType(Id, HttpContext.RequestAborted);
- }
- /// <summary>
- /// 知识分类-启用、禁用切换
- /// </summary>
- /// <param name="Id"></param>
- /// <returns></returns>
- [Permission(EPermission.KnowledgeTypeChangeState)]
- [HttpPut("changestate")]
- public async Task ChangeStateType(string Id)
- {
- await _knowledgeTypeDomainService.ChangeStateType(Id, HttpContext.RequestAborted);
- }
- /// <summary>
- /// 知识分类-禁用,并且下架知识
- /// </summary>
- /// <param name="Id"></param>
- /// <returns></returns>
- [Permission(EPermission.KnowledgeTypeChangeStateAndOffShelf)]
- [HttpPut("changestateandoffshelf")]
- public async Task TypeChangeStateAndOffShelf(string Id)
- {
- await _knowledgeTypeDomainService.ChangeStateTypeAndOffShelf(Id, HttpContext.RequestAborted);
- }
- /// <summary>
- /// 知识分类- 获取层级分类
- /// </summary>
- /// <param name="IsEnable">不传查询所有</param>
- /// <returns></returns>
- [Permission(EPermission.KnowledgeTypeMange)]
- [HttpGet("treelist")]
- public async Task<List<KnowledgeType>> GetTreeList(bool? IsEnable)
- {
- return await _knowledgeTypeRepository.Queryable().WhereIF(IsEnable.HasValue, p => p.IsEnable == IsEnable).ToTreeAsync(it => it.children, it => it.ParentId, null);
- }
- /// <summary>
- /// 知识分类- 只获取一级
- /// </summary>
- /// <param name="ParentId">不传默认查询第一级</param>
- /// <param name="IsEnable">不传查询所有,包含已经禁用的</param>
- /// <returns></returns>
- [HttpGet("typelist")]
- public async Task<List<KnowledgeType>> GetTypeList(string? ParentId, bool? IsEnable)
- {
- return await _knowledgeTypeRepository
- .Queryable()
- .Where(p => p.ParentId == ParentId)
- .WhereIF(IsEnable.HasValue, p => p.IsEnable == IsEnable)
- .OrderByDescending(p => p.Sort)
- .ToListAsync();
- }
- #endregion
- #region 编写规范
- /// <summary>
- /// 编写规范-查询详情
- /// </summary>
- /// <returns></returns>
- [Permission(EPermission.KnowledgeStandardInfo)]
- [HttpGet("info-standard")]
- public async Task<KnowledgeStandard> GetStandard()
- {
- var sandard = await _knowledgeStandardRepository.Queryable().FirstAsync();
- if (sandard == null)
- {
- KnowledgeStandard standard = new()
- {
- Title = "",
- Content = ""
- };
- var Id = await _knowledgeStandardRepository.AddAsync(standard, HttpContext.RequestAborted);
- return await _knowledgeStandardRepository.GetAsync(Id, HttpContext.RequestAborted);
- }
- return sandard;
- }
- /// <summary>
- /// 编写规范-修改
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [Permission(EPermission.KnowledgeStandardUpdate)]
- [HttpPut("update-standard")]
- public async Task UpdateStandard([FromBody] UpdateKnowledgeStandardDto dto)
- {
- var sandard = _mapper.Map<KnowledgeStandard>(dto);
- await _knowledgeStandardRepository.UpdateAsync(sandard, HttpContext.RequestAborted);
- }
- #endregion
- }
- }
|