|
@@ -453,19 +453,39 @@ namespace Hotline.Application.Knowledge
|
|
|
var exp = Expressionable.Create<KnowledgeBase.Knowledge>();
|
|
|
foreach (var keyword in keywords)
|
|
|
{
|
|
|
- if (dto.RetrievalType == EKnowledgeRetrievalType.All)
|
|
|
- exp.Or(x => x.Title.Contains(keyword) || x.Content.Contains(keyword));
|
|
|
- if (dto.RetrievalType == EKnowledgeRetrievalType.Title)
|
|
|
- exp.Or(x => x.Title.Contains(keyword));
|
|
|
- if (dto.RetrievalType == EKnowledgeRetrievalType.Content)
|
|
|
- exp.Or(x => x.Content.Contains(keyword));
|
|
|
- if (dto.RetrievalType == EKnowledgeRetrievalType.Summary)
|
|
|
- exp.Or(x => x.Summary != null && x.Summary.Contains(keyword));
|
|
|
- if (dto.RetrievalType == EKnowledgeRetrievalType.KeyWord)
|
|
|
+ if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
- var keywordEntity = await _knowledgeWordRepository.GetAsync(m => m.Tag == keyword && m.IsEnable == 1);
|
|
|
- if (keywordEntity is null) continue;
|
|
|
- exp.Or(x => SqlFunc.JsonArrayAny(x.Keywords, keywordEntity.Id));
|
|
|
+ if (dto.RetrievalType == EKnowledgeRetrievalType.All)
|
|
|
+ exp.And(x => x.Title.Contains(keyword) || x.Content.Contains(keyword));
|
|
|
+ if (dto.RetrievalType == EKnowledgeRetrievalType.Title)
|
|
|
+ exp.And(x => x.Title.Contains(keyword));
|
|
|
+ if (dto.RetrievalType == EKnowledgeRetrievalType.Content)
|
|
|
+ exp.And(x => x.Content.Contains(keyword));
|
|
|
+ if (dto.RetrievalType == EKnowledgeRetrievalType.Summary)
|
|
|
+ exp.And(x => x.Summary != null && x.Summary.Contains(keyword));
|
|
|
+ if (dto.RetrievalType == EKnowledgeRetrievalType.KeyWord)
|
|
|
+ {
|
|
|
+ var keywordEntity = await _knowledgeWordRepository.GetAsync(m => m.Tag == keyword && m.IsEnable == 1);
|
|
|
+ if (keywordEntity is null) continue;
|
|
|
+ exp.Or(x => SqlFunc.JsonArrayAny(x.Keywords, keywordEntity.Id));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (dto.RetrievalType == EKnowledgeRetrievalType.All)
|
|
|
+ exp.Or(x => x.Title.Contains(keyword) || x.Content.Contains(keyword));
|
|
|
+ if (dto.RetrievalType == EKnowledgeRetrievalType.Title)
|
|
|
+ exp.Or(x => x.Title.Contains(keyword));
|
|
|
+ if (dto.RetrievalType == EKnowledgeRetrievalType.Content)
|
|
|
+ exp.Or(x => x.Content.Contains(keyword));
|
|
|
+ if (dto.RetrievalType == EKnowledgeRetrievalType.Summary)
|
|
|
+ exp.Or(x => x.Summary != null && x.Summary.Contains(keyword));
|
|
|
+ if (dto.RetrievalType == EKnowledgeRetrievalType.KeyWord)
|
|
|
+ {
|
|
|
+ var keywordEntity = await _knowledgeWordRepository.GetAsync(m => m.Tag == keyword && m.IsEnable == 1);
|
|
|
+ if (keywordEntity is null) continue;
|
|
|
+ exp.Or(x => SqlFunc.JsonArrayAny(x.Keywords, keywordEntity.Id));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
sugar = sugar.Where(exp.ToExpression());
|