|
@@ -4,7 +4,10 @@ using Hotline.Share.Dtos;
|
|
|
using Hotline.Share.Dtos.Knowledge;
|
|
|
using Hotline.Share.Enums.KnowledgeBase;
|
|
|
using MapsterMapper;
|
|
|
+using Microsoft.AspNetCore.Authorization;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
+using SqlSugar;
|
|
|
+using System.Xml.Linq;
|
|
|
using XF.Domain.Authentications;
|
|
|
using XF.Domain.Exceptions;
|
|
|
|
|
@@ -108,11 +111,19 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="Id"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("knowledge-updateinfo")]
|
|
|
+ [AllowAnonymous]
|
|
|
public async Task<Knowledge> KnowledgeUpdateInfo(string Id)
|
|
|
{
|
|
|
var know = await _knowledgeRepository.GetAsync(Id);
|
|
|
if (know is null)
|
|
|
- throw UserFriendlyException.SameMessage("知识查询失败!");
|
|
|
+ {
|
|
|
+ //再次查询草稿箱数据
|
|
|
+ var tempKnow = await _knowledgeTempRepository.GetAsync(Id);
|
|
|
+ if (tempKnow is null)
|
|
|
+ throw UserFriendlyException.SameMessage("知识查询失败!");
|
|
|
+ know = new Knowledge();
|
|
|
+ _mapper.Map(tempKnow, know);
|
|
|
+ }
|
|
|
return know;
|
|
|
}
|
|
|
|
|
@@ -176,6 +187,8 @@ namespace Hotline.Api.Controllers
|
|
|
var know = await _knowledgeRepository.GetAsync(dto.Id);
|
|
|
if (know is null || know.IsDeleted)
|
|
|
throw UserFriendlyException.SameMessage("无效知识");
|
|
|
+ if (know.Status == EKnowledgeStatus.Auditing || know.Status == EKnowledgeStatus.Update)
|
|
|
+ throw UserFriendlyException.SameMessage("审批中数据不能修改");
|
|
|
var knowledge = _mapper.Map<Knowledge>(dto);
|
|
|
knowledge.Code = know.Code;
|
|
|
knowledge.PageView = 0;
|
|
@@ -186,6 +199,41 @@ namespace Hotline.Api.Controllers
|
|
|
//新增一条数据
|
|
|
|
|
|
await _knowledgeRepository.AddAsync(knowledge);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 审批操作
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="Ids"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("knowledge-approvalhandle")]
|
|
|
+ public async Task ApprovalHandle(List<string> Ids)
|
|
|
+ {
|
|
|
+ if (Ids is null || Ids.Count == 0)
|
|
|
+ throw UserFriendlyException.SameMessage("数据不能为空");
|
|
|
+ //审批操作
|
|
|
+ foreach (var item in Ids)
|
|
|
+ {
|
|
|
+ var know = await _knowledgeRepository.GetAsync(item);
|
|
|
+ if (know != null)
|
|
|
+ {
|
|
|
+ //调用流程审批接口
|
|
|
+
|
|
|
+ //处理数据
|
|
|
+ know.Status = EKnowledgeStatus.Succeed;
|
|
|
+ know.IsOnShelf = true;
|
|
|
+ know.OnShelfTime = DateTime.Now;
|
|
|
+ await _knowledgeRepository.UpdateAsync(know);
|
|
|
+ //处理原始数据的状态
|
|
|
+ var oldKnow = await _knowledgeRepository.GetAsync(p => p.Code == know.Code && p.Status == EKnowledgeStatus.Succeed && p.Id != know.Id);
|
|
|
+ if (oldKnow != null)
|
|
|
+ {
|
|
|
+ oldKnow.Status = EKnowledgeStatus.Update;
|
|
|
+ await _knowledgeRepository.UpdateAsync(oldKnow);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
#region 知识列表
|
|
@@ -201,7 +249,7 @@ namespace Hotline.Api.Controllers
|
|
|
.Queryable()
|
|
|
.Includes(it => it.User)
|
|
|
.Includes(it => it.KnowledgeType)
|
|
|
- .Where(p => p.CreateUserId == _sessionContext.UserId)
|
|
|
+ .Where(p => p.CreatorId == _sessionContext.RequiredUserId)
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
.WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
|
|
@@ -212,15 +260,50 @@ namespace Hotline.Api.Controllers
|
|
|
return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 测试列表查询数据
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("knowledge-testlist")]
|
|
|
+ [AllowAnonymous]
|
|
|
+ public async Task<string> testlist([FromBody] KnowledgePagedListDto pagedDto)
|
|
|
+ {
|
|
|
+ var temp = await _knowledgeRepository
|
|
|
+ .Queryable().Select(it => new
|
|
|
+ {
|
|
|
+ index2 = SqlFunc.RowNumber(it.Code, it.Version),
|
|
|
+ Code = it.Code,
|
|
|
+ Title = it.Title,
|
|
|
+ Version = it.Version
|
|
|
+ })
|
|
|
+ .MergeTable()//将结果合并成一个表
|
|
|
+ .Where(it => it.index2 == 1)
|
|
|
+
|
|
|
+ //.Includes(it => it.User)
|
|
|
+ //.Includes(it => it.SystemOrganize)
|
|
|
+ //.Includes(it => it.KnowledgeType)
|
|
|
+ //.Where(p => p.IsDeleted == false)//&& p.Status != EKnowledgeStatus.Update
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)
|
|
|
+ //.WhereIF(pagedDto.StartTime != null, d => d.OnShelfTime >= pagedDto.StartTime)
|
|
|
+ //.WhereIF(pagedDto.EndTime != null, d => d.OnShelfTime <= pagedDto.EndTime)
|
|
|
+
|
|
|
+ .ToJsonAsync();
|
|
|
+ return temp;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 全部知识
|
|
|
/// </summary>
|
|
|
/// <param name="pagedDto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost("knowledge-alllist")]
|
|
|
- public async Task<PagedDto<KnowledgeDataDto>> AllList([FromBody] KnowledgePagedListDto pagedDto)
|
|
|
+ public async Task<PagedDto<KnowledgeDataDto>> AllList([FromBody] AllKnowledgePagedListDto pagedDto)
|
|
|
{
|
|
|
- var bmList = await _knowledgeService.GetChildBMCode(_sessionContext.UserId);
|
|
|
+ var bmList = await _knowledgeService.GetChildBMId(_sessionContext.RequiredUserId);
|
|
|
if (bmList == null || bmList.Count == 0)
|
|
|
return new PagedDto<KnowledgeDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(new List<Knowledge>()));
|
|
|
var (total, items) = await _knowledgeRepository
|
|
@@ -228,21 +311,24 @@ namespace Hotline.Api.Controllers
|
|
|
.Includes(it => it.User)
|
|
|
.Includes(it => it.SystemOrganize)
|
|
|
.Includes(it => it.KnowledgeType)
|
|
|
- .GroupBy(p => new { p.Code })
|
|
|
-
|
|
|
- .Where(p => p.IsDeleted == false)
|
|
|
- .Where(p => bmList.Contains(p.AutoOrgCode))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)
|
|
|
- //.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMCode), d => d.AutoOrgCode == pagedDto.CreateBMCode)
|
|
|
- .WhereIF(pagedDto.StartTime != null, d => d.OnShelfTime >= pagedDto.StartTime)
|
|
|
- .WhereIF(pagedDto.EndTime != null, d => d.OnShelfTime <= pagedDto.EndTime)
|
|
|
+ .Where(p => p.IsDeleted == false && p.Status != EKnowledgeStatus.Update)//
|
|
|
+ .Where(p => bmList.Contains(p.CreatorOrgId))//组织Id
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))//创建人
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))//创建部门
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))//知识标题
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)//知识分类
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)//热点
|
|
|
+ //创建时间
|
|
|
+ .WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
|
|
|
+ .WhereIF(pagedDto.EndTime != null, d => d.CreationTime <= pagedDto.EndTime)
|
|
|
+ //上架时间
|
|
|
+ .WhereIF(pagedDto.StartOnShelfTime != null, d => d.OnShelfTime >= pagedDto.StartTime)
|
|
|
+ .WhereIF(pagedDto.EndOnShelfTime != null, d => d.OnShelfTime <= pagedDto.EndTime)
|
|
|
+ //下架时间
|
|
|
+ .WhereIF(pagedDto.StartOffShelfTime != null, d => d.OffShelfTime >= pagedDto.StartTime)
|
|
|
+ .WhereIF(pagedDto.EndOffShelfTime != null, d => d.OffShelfTime <= pagedDto.EndTime)
|
|
|
|
|
|
.OrderByDescending(p => p.CreationTime)
|
|
|
- // .OrderBy(it => new { CreationTime = SqlFunc.Desc(it.CreationTime), Version = SqlFunc.Desc(it.Version) })
|
|
|
.ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
|
|
|
|
|
|
return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
|
|
@@ -256,7 +342,7 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpPost("knowledge-ontheshelf")]
|
|
|
public async Task<PagedDto<KnowledgeDataDto>> OnTheShelf([FromBody] KnowledgePagedListDto pagedDto)
|
|
|
{
|
|
|
- var bmList = await _knowledgeService.GetChildBMCode(_sessionContext.UserId);
|
|
|
+ var bmList = await _knowledgeService.GetChildBMId(_sessionContext.RequiredUserId);
|
|
|
if (bmList == null || bmList.Count == 0)
|
|
|
return new PagedDto<KnowledgeDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(new List<Knowledge>()));
|
|
|
var (total, items) = await _knowledgeRepository
|
|
@@ -265,13 +351,12 @@ namespace Hotline.Api.Controllers
|
|
|
.Includes(it => it.SystemOrganize)
|
|
|
.Includes(it => it.KnowledgeType)
|
|
|
.Where(p => p.IsOnShelf == true && p.Status == EKnowledgeStatus.Succeed && p.IsDeleted == false)
|
|
|
- .Where(p => bmList.Contains(p.AutoOrgCode))
|
|
|
+ .Where(p => bmList.Contains(p.CreatorOrgId))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMCode), d => d.AutoOrgCode == pagedDto.CreateBMCode)
|
|
|
.WhereIF(pagedDto.StartTime != null, d => d.OnShelfTime >= pagedDto.StartTime)
|
|
|
.WhereIF(pagedDto.EndTime != null, d => d.OnShelfTime <= pagedDto.EndTime)
|
|
|
.OrderByDescending(p => p.CreationTime)
|
|
@@ -288,7 +373,7 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpPost("knowledge-offshelf")]
|
|
|
public async Task<PagedDto<KnowledgeDataDto>> OffShelf([FromBody] KnowledgePagedListDto pagedDto)
|
|
|
{
|
|
|
- var bmList = await _knowledgeService.GetChildBMCode(_sessionContext.UserId);
|
|
|
+ var bmList = await _knowledgeService.GetChildBMId(_sessionContext.RequiredUserId);
|
|
|
if (bmList == null || bmList.Count == 0)
|
|
|
return new PagedDto<KnowledgeDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(new List<Knowledge>()));
|
|
|
var (total, items) = await _knowledgeRepository
|
|
@@ -297,13 +382,12 @@ namespace Hotline.Api.Controllers
|
|
|
.Includes(it => it.SystemOrganize)
|
|
|
.Includes(it => it.KnowledgeType)
|
|
|
.Where(p => p.IsOnShelf == false && p.Status == EKnowledgeStatus.Succeed && p.IsDeleted == false)
|
|
|
- .Where(p => bmList.Contains(p.AutoOrgCode))
|
|
|
+ .Where(p => bmList.Contains(p.CreatorOrgId))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMCode), d => d.AutoOrgCode == pagedDto.CreateBMCode)
|
|
|
.WhereIF(pagedDto.StartTime != null, d => d.OffShelfTime >= pagedDto.StartTime)
|
|
|
.WhereIF(pagedDto.EndTime != null, d => d.OffShelfTime <= pagedDto.EndTime)
|
|
|
.OrderByDescending(p => p.CreationTime)
|
|
@@ -320,7 +404,7 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpPost("knowledge-underapproval")]
|
|
|
public async Task<PagedDto<KnowledgeDataDto>> UnderApproval([FromBody] KnowledgePagedListDto pagedDto)
|
|
|
{
|
|
|
- var bmList = await _knowledgeService.GetChildBMCode(_sessionContext.UserId);
|
|
|
+ var bmList = await _knowledgeService.GetChildBMId(_sessionContext.RequiredUserId);
|
|
|
if (bmList == null || bmList.Count == 0)
|
|
|
return new PagedDto<KnowledgeDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(new List<Knowledge>()));
|
|
|
var (total, items) = await _knowledgeRepository
|
|
@@ -329,13 +413,12 @@ namespace Hotline.Api.Controllers
|
|
|
.Includes(it => it.SystemOrganize)
|
|
|
.Includes(it => it.KnowledgeType)
|
|
|
.Where(p => p.Status == EKnowledgeStatus.Auditing && p.IsDeleted == false)
|
|
|
- .Where(p => bmList.Contains(p.AutoOrgCode))
|
|
|
+ .Where(p => bmList.Contains(p.CreatorOrgId))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMCode), d => d.AutoOrgCode == pagedDto.CreateBMCode)
|
|
|
.WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
|
|
|
.WhereIF(pagedDto.EndTime != null, d => d.CreationTime <= pagedDto.EndTime)
|
|
|
.OrderByDescending(p => p.CreationTime)
|
|
@@ -352,7 +435,7 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpPost("knowledge-approved")]
|
|
|
public async Task<PagedDto<KnowledgeDataDto>> Approved([FromBody] KnowledgePagedListDto pagedDto)
|
|
|
{
|
|
|
- var bmList = await _knowledgeService.GetChildBMCode(_sessionContext.UserId);
|
|
|
+ var bmList = await _knowledgeService.GetChildBMId(_sessionContext.RequiredUserId);
|
|
|
if (bmList == null || bmList.Count == 0)
|
|
|
return new PagedDto<KnowledgeDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(new List<Knowledge>()));
|
|
|
var (total, items) = await _knowledgeRepository
|
|
@@ -361,13 +444,12 @@ namespace Hotline.Api.Controllers
|
|
|
.Includes(it => it.SystemOrganize)
|
|
|
.Includes(it => it.KnowledgeType)
|
|
|
.Where(p => p.Status == EKnowledgeStatus.Succeed && p.IsDeleted == false)
|
|
|
- .Where(p => bmList.Contains(p.AutoOrgCode))
|
|
|
+ .Where(p => bmList.Contains(p.CreatorOrgId))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMCode), d => d.AutoOrgCode == pagedDto.CreateBMCode)
|
|
|
.WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
|
|
|
.WhereIF(pagedDto.EndTime != null, d => d.CreationTime <= pagedDto.EndTime)
|
|
|
.OrderByDescending(p => p.CreationTime)
|
|
@@ -384,7 +466,7 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpPost("knowledge-approvalfailed")]
|
|
|
public async Task<PagedDto<KnowledgeDataDto>> ApprovalFailed([FromBody] KnowledgePagedListDto pagedDto)
|
|
|
{
|
|
|
- var bmList = await _knowledgeService.GetChildBMCode(_sessionContext.UserId);
|
|
|
+ var bmList = await _knowledgeService.GetChildBMId(_sessionContext.UserId);
|
|
|
if (bmList == null || bmList.Count == 0)
|
|
|
return new PagedDto<KnowledgeDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(new List<Knowledge>()));
|
|
|
var (total, items) = await _knowledgeRepository
|
|
@@ -393,13 +475,12 @@ namespace Hotline.Api.Controllers
|
|
|
.Includes(it => it.SystemOrganize)
|
|
|
.Includes(it => it.KnowledgeType)
|
|
|
.Where(p => p.Status == EKnowledgeStatus.Failed && p.IsDeleted == false)
|
|
|
- .Where(p => bmList.Contains(p.AutoOrgCode))
|
|
|
+ .Where(p => bmList.Contains(p.CreatorOrgId))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMCode), d => d.AutoOrgCode == pagedDto.CreateBMCode)
|
|
|
.WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
|
|
|
.WhereIF(pagedDto.EndTime != null, d => d.CreationTime <= pagedDto.EndTime)
|
|
|
.OrderByDescending(p => p.CreationTime)
|
|
@@ -410,6 +491,38 @@ namespace Hotline.Api.Controllers
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
+ #region 知识检索
|
|
|
+ /// <summary>
|
|
|
+ /// 知识检索
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="pagedDto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("knowledge-knowretrieval")]
|
|
|
+ public async Task<PagedDto<KnowledgeRetrievalDataDto>> KnowRetrieval([FromBody] KnowledgeRetrievalPagedListDto pagedDto)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(pagedDto.Keyword))
|
|
|
+ throw UserFriendlyException.SameMessage("请输入关键字");
|
|
|
+
|
|
|
+ //是否需要验证本部门以及下级部门的数据,不要注释下面这3行
|
|
|
+ var bmList = await _knowledgeService.GetChildBMId(_sessionContext.RequiredUserId);
|
|
|
+ if (bmList == null || bmList.Count == 0)
|
|
|
+ return new PagedDto<KnowledgeRetrievalDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeRetrievalDataDto>>(new List<Knowledge>()));
|
|
|
+
|
|
|
+ var (total, items) = await _knowledgeRepository
|
|
|
+ .Queryable()
|
|
|
+ .Where(p => p.IsDeleted == false && p.Status == EKnowledgeStatus.Succeed)
|
|
|
+ .Where(p => bmList.Contains(p.CreatorOrgId)) //是否需要验证本部门以及下级部门的数据,不要注释此行
|
|
|
+ .WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.All.ToString(), d => d.Title.Contains(pagedDto.Keyword) || d.Content.Contains(pagedDto.Keyword) || d.Additions.Contains(pagedDto.Keyword))
|
|
|
+ .WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Title.ToString(), d => d.Title.Contains(pagedDto.Keyword))
|
|
|
+ .WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Content.ToString(), d => d.Content.Contains(pagedDto.Keyword))
|
|
|
+ .WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Enclosure.ToString(), d => d.Additions.Contains(pagedDto.Keyword))
|
|
|
+ .OrderByDescending(p => p.PageView)
|
|
|
+ .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
|
|
|
+
|
|
|
+ return new PagedDto<KnowledgeRetrievalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeRetrievalDataDto>>(items));
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 待审核
|
|
|
/// </summary>
|
|
@@ -423,7 +536,7 @@ namespace Hotline.Api.Controllers
|
|
|
.Includes(it => it.User)
|
|
|
.Includes(it => it.SystemOrganize)
|
|
|
.Includes(it => it.KnowledgeType)
|
|
|
- .Where(p => p.IsDeleted == false && p.Status == EKnowledgeStatus.Auditing)//&& p.AssignUserIds.Contains(pagedDto.UserId!)
|
|
|
+ .Where(p => p.IsDeleted == false && p.Status == EKnowledgeStatus.Auditing && p.AssignUserIds.Contains(_sessionContext.UserId))//&& p.AssignUserIds.Contains(pagedDto.UserId!)
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|