|
@@ -115,8 +115,12 @@ namespace Hotline.KnowledgeBase
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task TypeUpdate(UpdateKnowledgeTypeDto dto, KnowledgeType type, CancellationToken cancellationToken)
|
|
|
+ public async Task TypeUpdate(UpdateKnowledgeTypeDto dto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
+ //查询原有数据
|
|
|
+ var type = await _knowledgeTypeRepository.GetAsync(dto.Id, cancellationToken);
|
|
|
+ if (type is null)
|
|
|
+ throw UserFriendlyException.SameMessage("编辑失败!");
|
|
|
bool result = false;
|
|
|
//是否更改分类名称
|
|
|
if (type.Name != dto.Name)
|
|
@@ -169,22 +173,37 @@ namespace Hotline.KnowledgeBase
|
|
|
/// <returns></returns>
|
|
|
public async Task TypeChangeState(string Id, CancellationToken cancellationToken)
|
|
|
{
|
|
|
- //查询子级数据
|
|
|
- var getChild = await _knowledgeTypeRepository.GetChild(Id);
|
|
|
- //禁用子级数据
|
|
|
- if (getChild != null && getChild.Count > 0)
|
|
|
+ //查询数据是否存在
|
|
|
+ var type = await _knowledgeTypeRepository.GetAsync(Id);
|
|
|
+ if (type is null)
|
|
|
+ throw UserFriendlyException.SameMessage("分类不存在!");
|
|
|
+ if (type.IsEnable)//禁用
|
|
|
{
|
|
|
- foreach (var item in getChild)
|
|
|
+ //查询子级数据
|
|
|
+ var getChild = await _knowledgeTypeRepository.GetChild(Id);
|
|
|
+ //禁用子级数据
|
|
|
+ if (getChild != null && getChild.Count > 0)
|
|
|
{
|
|
|
- item.IsEnable = false;
|
|
|
- await _knowledgeTypeRepository.UpdateAsync(item, cancellationToken);
|
|
|
+ foreach (var item in getChild)
|
|
|
+ {
|
|
|
+ item.IsEnable = false;
|
|
|
+ await _knowledgeTypeRepository.UpdateAsync(item, cancellationToken);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- ////查询是否有子级,如果有子级启用,则不能禁用
|
|
|
- //var checkChild = await _knowledgeTypeRepository.CountAsync(p => p.ParentId == Id && p.IsEnable == true);
|
|
|
- //if (checkChild > 0)
|
|
|
- // throw UserFriendlyException.SameMessage("请先禁用子级分类!");
|
|
|
- //type.IsEnable = false;
|
|
|
+ else //启用
|
|
|
+ {
|
|
|
+ //查询上级是否是启用状态,如果是禁用状态不能修改
|
|
|
+ var CheckParent = await _knowledgeTypeRepository.GetAsync(type.ParentId, cancellationToken);
|
|
|
+ if (CheckParent is null)
|
|
|
+ throw UserFriendlyException.SameMessage("分类启用失败!");
|
|
|
+ if (!CheckParent.IsEnable)
|
|
|
+ throw UserFriendlyException.SameMessage("请先启用父级分类!");
|
|
|
+
|
|
|
+ //将状态修改为启用
|
|
|
+ type.IsEnable = true;
|
|
|
+ await _knowledgeTypeRepository.UpdateAsync(type, cancellationToken);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -194,30 +213,67 @@ namespace Hotline.KnowledgeBase
|
|
|
/// <returns></returns>
|
|
|
public async Task TypeChangeStateAndOffShelf(string Id, CancellationToken cancellationToken)
|
|
|
{
|
|
|
- //查询子级数据
|
|
|
- var getChild = await _knowledgeTypeRepository.GetChild(Id);
|
|
|
- //禁用子级数据
|
|
|
- if (getChild != null && getChild.Count > 0)
|
|
|
+ //查询数据是否存在
|
|
|
+ var type = await _knowledgeTypeRepository.GetAsync(Id, cancellationToken);
|
|
|
+ if (type is null)
|
|
|
+ throw UserFriendlyException.SameMessage("分类不存在!");
|
|
|
+ if (type.IsEnable)//启用状态
|
|
|
{
|
|
|
- foreach (var item in getChild)
|
|
|
+ //查询子级数据
|
|
|
+ var getChild = await _knowledgeTypeRepository.GetChild(Id);
|
|
|
+ //禁用子级数据
|
|
|
+ if (getChild != null && getChild.Count > 0)
|
|
|
{
|
|
|
- item.IsEnable = false;
|
|
|
- await _knowledgeTypeRepository.UpdateAsync(item, cancellationToken);
|
|
|
- //下架知识
|
|
|
- //查询当前分类下的知识(查询条件:此分类下/状态为成功/未删除/已上架)
|
|
|
- var knowList = _knowledgeRepository.Queryable().Where(p => p.KnowledgeTypeId == item.Id && p.Status == EKnowledgeStatus.Succeed && p.IsDeleted == false && p.IsOnShelf == true).ToList();
|
|
|
- if (knowList != null && knowList.Count > 0)
|
|
|
+ foreach (var item in getChild)
|
|
|
{
|
|
|
- //修改知识为下架状态
|
|
|
- foreach (var itemKnow in knowList)
|
|
|
+ item.IsEnable = false;
|
|
|
+ await _knowledgeTypeRepository.UpdateAsync(item, cancellationToken);
|
|
|
+ //下架知识
|
|
|
+ //查询当前分类下的知识(查询条件:此分类下/状态为成功/未删除/已上架)
|
|
|
+ var knowList = _knowledgeRepository.Queryable().Where(p => p.KnowledgeTypeId == item.Id && p.Status == EKnowledgeStatus.Succeed && p.IsDeleted == false && p.IsOnShelf == true).ToList();
|
|
|
+ if (knowList != null && knowList.Count > 0)
|
|
|
{
|
|
|
- itemKnow.IsOnShelf = false;
|
|
|
- itemKnow.OffShelfTime = DateTime.Now;
|
|
|
- await _knowledgeRepository.UpdateAsync(itemKnow, cancellationToken);
|
|
|
+ //修改知识为下架状态
|
|
|
+ foreach (var itemKnow in knowList)
|
|
|
+ {
|
|
|
+ itemKnow.IsOnShelf = false;
|
|
|
+ itemKnow.OffShelfTime = DateTime.Now;
|
|
|
+ await _knowledgeRepository.UpdateAsync(itemKnow, cancellationToken);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ else
|
|
|
+ throw UserFriendlyException.SameMessage("禁用分类失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 知识分类-删除
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="Id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task TypeDelete(string Id, CancellationToken cancellationToken)
|
|
|
+ {
|
|
|
+ //查询数据是否存在
|
|
|
+ var sandard = await _knowledgeTypeRepository.GetAsync(Id, cancellationToken);
|
|
|
+ if (sandard is null)
|
|
|
+ throw UserFriendlyException.SameMessage("分类不存在!");
|
|
|
+
|
|
|
+ //查询是否有子级分类
|
|
|
+
|
|
|
+ var checkChild = await _knowledgeTypeRepository.CountAsync(p => p.ParentId == Id, cancellationToken);
|
|
|
+ if (checkChild > 0)
|
|
|
+ throw UserFriendlyException.SameMessage("存在子级分类!");
|
|
|
+
|
|
|
+ //查询是否有知识分类
|
|
|
+ var checkKnowledge = await _knowledgeRepository.CountAsync(p => p.KnowledgeTypeId == Id, cancellationToken);
|
|
|
+ if (checkKnowledge > 0)
|
|
|
+ throw UserFriendlyException.SameMessage("分类存在知识!");
|
|
|
+
|
|
|
+ //删除操作
|
|
|
+ await _knowledgeTypeRepository.RemoveAsync(sandard, false, cancellationToken);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
#region 私有方法
|