田爽 před 1 rokem
rodič
revize
950d6b1d08

+ 225 - 4
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -43,6 +43,9 @@ namespace Hotline.Api.Controllers
 		private readonly IRepository<Hotspot> _hotspotTypeRepository;
 		private readonly IRepositoryTextSearch<KnowledgeTs> _repositoryts;
 		private readonly IRepository<KnowledgeWord> _knowledgeWrodRepository;
+		private readonly IRepository<KnowledgeQuestions> _knowledgeQuestionsRepository;
+		private readonly IRepository<KnowledgeCorrection> _knowledgeCorrectionRepository;
+		private readonly IRepository<KnowledgeCollect> _knowledgeCollectRepository;
 
 
 		public KnowledgeController(
@@ -58,7 +61,11 @@ namespace Hotline.Api.Controllers
 		   IRepository<KnowledgeType> knowledgeTypeRepository,
 		   IRepository<Hotspot> hotspotTypeRepository,
 		   IRepositoryTextSearch<KnowledgeTs> repositoryts,
-		   IRepository<KnowledgeWord> knowledgeWrodRepository)
+		   IRepository<KnowledgeWord> knowledgeWrodRepository,
+		   IRepository<KnowledgeQuestions> knowledgeQuestionsRepository,
+		   IRepository<KnowledgeCorrection> knowledgeCorrectionRepository,
+		   IRepository<KnowledgeCollect> knowledgeCollectRepository
+		   )
 		{
 			_knowledgeRepository = knowledgeRepository;
 			_sessionContext = sessionContext;
@@ -73,8 +80,9 @@ namespace Hotline.Api.Controllers
 			_hotspotTypeRepository = hotspotTypeRepository;
 			_repositoryts = repositoryts;
 			_knowledgeWrodRepository = knowledgeWrodRepository;
-
-
+			_knowledgeQuestionsRepository = knowledgeQuestionsRepository;
+			_knowledgeCorrectionRepository = knowledgeCorrectionRepository;
+			_knowledgeCollectRepository = knowledgeCollectRepository;
 		}
 
 		#endregion
@@ -678,12 +686,225 @@ namespace Hotline.Api.Controllers
 		/// <returns></returns>
 		[Permission(EPermission.KnowledgeWordEntity)]
 		[HttpGet("knowledge_word/{id}")]
-		public async Task<KnowledgeWord> OrderWordEntity(string id)
+		public async Task<KnowledgeWord> WordEntity(string id)
 		{
 			return await _knowledgeWrodRepository.Queryable()
 				.FirstAsync(x => x.Id == id);
 		}
 		#endregion
 
+		#region 知识纠错
+		/// <summary>
+		/// 新增知识纠错
+		/// </summary>
+		/// <param name="dtos"></param>
+		/// <returns></returns>
+		[Permission(EPermission.AddKnowledgeCorrection)]
+		[HttpPost("knowledge_correction")]
+		public async Task Add([FromBody] KnowledgeCorrectionAddDto dto)
+		{
+			var correction = _mapper.Map<KnowledgeCorrection>(dto);
+			await _knowledgeCorrectionRepository.AddAsync(correction, HttpContext.RequestAborted);
+		}
+
+		/// <summary>
+		/// 删除知识纠错
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.DeleteKnowledgeCorrection)]
+		[HttpDelete("knowledge_correction")]
+		public async Task Delete([FromBody] KnowledgeCorrectionDeleteDto dto)
+		{
+			await _knowledgeCorrectionRepository.RemoveAsync(x => x.Id == dto.Id);
+		}
+
+		/// <summary>
+		/// 更新知识纠错
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.UpdateKnowledgeCorrection)]
+		[HttpPut("knowledge_correction")]
+		public async Task Update([FromBody] KnowledgeCorrectionUpdateDto dto)
+		{
+			var correction = await _knowledgeCorrectionRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
+			if (correction is null)
+				throw UserFriendlyException.SameMessage("无效知识纠错");
+			_mapper.Map(dto, correction);
+			await _knowledgeCorrectionRepository.UpdateAsync(correction, HttpContext.RequestAborted);
+		}
+
+		/// <summary>
+		/// 答复知识纠错
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.UpdateKnowledgeCorrection)]
+		[HttpPut("knowledge_correction/Reply")]
+		public async Task Reply([FromBody] KnowledgeCorrectionUpdateDto dto)
+		{
+			var correction = await _knowledgeCorrectionRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
+			if (correction is null)
+				throw UserFriendlyException.SameMessage("无效知识纠错");
+			_mapper.Map(dto, correction);
+			dto.ReplyTime = DateTime.Now;
+			dto.ReplyUserName =_sessionContext.UserName;
+			await _knowledgeCorrectionRepository.UpdateAsync(correction, HttpContext.RequestAborted);
+		}
+
+		/// <summary>
+		/// 获取知识纠错列表
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.KnowledgeCorrectionList)]
+		[HttpGet("knowledge_correction/list")]
+		public async Task<PagedDto<KnowledgeCorrectionDto>> List([FromQuery] KnowledgeCorrectionListDto dto)
+		{
+			var (total, items) = await _knowledgeCorrectionRepository.Queryable()
+				.Includes(x => x.Knowledge)
+				.Includes(x => x.Knowledge, y => y.KnowledgeType)
+				.WhereIF(!string.IsNullOrEmpty(dto.KnowledgeTypeId), x => x.Knowledge.KnowledgeTypeId == dto.KnowledgeTypeId!)
+				.WhereIF(!string.IsNullOrEmpty(dto.CreatorName), x => x.CreatorName == dto.CreatorName!)
+				.OrderByDescending(x => x.CreationTime)
+				.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+			return new PagedDto<KnowledgeCorrectionDto>(total, _mapper.Map<IReadOnlyList<KnowledgeCorrectionDto>>(items));
+		}
+
+		/// <summary>
+		/// 获取知识库纠错
+		/// </summary>
+		/// <param name="id"></param>
+		/// <returns></returns>
+		[Permission(EPermission.KnowledgeCorrectionEntity)]
+		[HttpGet("knowledge_correction/{id}")]
+		public async Task<KnowledgeCorrection> CorrectionEntity(string id)
+		{
+			return await _knowledgeCorrectionRepository.Queryable()
+				.FirstAsync(x => x.Id == id);
+		}
+		#endregion
+
+		#region 知识提问
+		/// <summary>
+		/// 新增知识提问
+		/// </summary>
+		/// <param name="dtos"></param>
+		/// <returns></returns>
+		[Permission(EPermission.AddKnowledgeQuestions)]
+		[HttpPost("knowledge_questions")]
+		public async Task Add([FromBody] KnowledgeQuestionsAddDto dto)
+		{
+			var questions = _mapper.Map<KnowledgeQuestions>(dto);
+			await _knowledgeQuestionsRepository.AddAsync(questions, HttpContext.RequestAborted);
+		}
+
+		/// <summary>
+		/// 删除知识提问
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.DeleteKnowledgeQuestions)]
+		[HttpDelete("knowledge_questions")]
+		public async Task Delete([FromBody] KnowledgeQuestionsDeleteDto dto)
+		{
+			await _knowledgeQuestionsRepository.RemoveAsync(x => x.Id == dto.Id);
+		}
+
+		/// <summary>
+		/// 更新知识提问
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.UpdateKnowledgeQuestions)]
+		[HttpPut("knowledge_questions")]
+		public async Task Update([FromBody] KnowledgeQuestionsUpdateDto dto)
+		{
+			var questions = await _knowledgeQuestionsRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
+			if (questions is null)
+				throw UserFriendlyException.SameMessage("无效知识提问");
+			_mapper.Map(dto, questions);
+			await _knowledgeQuestionsRepository.UpdateAsync(questions, HttpContext.RequestAborted);
+		}
+
+		/// <summary>
+		/// 答复知识提问
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.UpdateKnowledgeQuestions)]
+		[HttpPut("knowledge_questions/Reply")]
+		public async Task Reply([FromBody] KnowledgeQuestionsUpdateDto dto)
+		{
+			var correction = await _knowledgeQuestionsRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
+			if (correction is null)
+				throw UserFriendlyException.SameMessage("无效知识提问");
+			_mapper.Map(dto, correction);
+			dto.ReplyTime = DateTime.Now;
+			dto.ReplyUserName = _sessionContext.UserName;
+			await _knowledgeQuestionsRepository.UpdateAsync(correction, HttpContext.RequestAborted);
+		}
+
+		/// <summary>
+		/// 获取知识提问列表
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.KnowledgeQuestionsList)]
+		[HttpGet("knowledge_questions/list")]
+		public async Task<PagedDto<KnowledgeQuestionsDto>> List([FromQuery] KnowledgeQuestionsListDto dto)
+		{
+			var (total, items) = await _knowledgeQuestionsRepository.Queryable()
+				.Includes(x => x.Knowledge)
+				.Includes(x => x.Knowledge, y => y.KnowledgeType)
+				.WhereIF(!string.IsNullOrEmpty(dto.KnowledgeTypeId), x => x.Knowledge.KnowledgeTypeId == dto.KnowledgeTypeId!)
+				.WhereIF(!string.IsNullOrEmpty(dto.CreatorName), x => x.CreatorName == dto.CreatorName!)
+				.OrderByDescending(x => x.CreationTime)
+				.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+			return new PagedDto<KnowledgeQuestionsDto>(total, _mapper.Map<IReadOnlyList<KnowledgeQuestionsDto>>(items));
+		}
+
+		/// <summary>
+		/// 获取知识提问
+		/// </summary>
+		/// <param name="id"></param>
+		/// <returns></returns>
+		[Permission(EPermission.KnowledgeQuestionsEntity)]
+		[HttpGet("knowledge_questions/{id}")]
+		public async Task<KnowledgeQuestions> QuestionsEntity(string id)
+		{
+			return await _knowledgeQuestionsRepository.Queryable()
+				.FirstAsync(x => x.Id == id);
+		}
+
+		#endregion
+
+		#region 知识收藏
+		/// <summary>
+		/// 新增知识收藏
+		/// </summary>
+		/// <param name="dtos"></param>
+		/// <returns></returns>
+		[Permission(EPermission.AddKnowledgeCollect)]
+		[HttpPost("knowledge_collect")]
+		public async Task Add([FromBody] KnowledgeCollectAddDto dto)
+		{
+			var questions = _mapper.Map<KnowledgeCollect>(dto);
+			await _knowledgeCollectRepository.AddAsync(questions, HttpContext.RequestAborted);
+		}
+
+		/// <summary>
+		/// 删除知识收藏
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.DeleteKnowledgeCollect)]
+		[HttpDelete("knowledge_collect")]
+		public async Task Delete([FromBody] KnowledgeCollectDeleteDto dto)
+		{
+			await _knowledgeCollectRepository.RemoveAsync(x => x.Id == dto.Id);
+		}
+		#endregion
 	}
 }

+ 77 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeCollectDto.cs

@@ -0,0 +1,77 @@
+using Hotline.Share.Enums.KnowledgeBase;
+using Hotline.Share.Requests;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Share.Dtos.Knowledge
+{
+	public class KnowledgeCollectDto : KnowledgeCollectBaseDto
+	{
+		/// <summary>
+		/// 知识库ID
+		/// </summary>
+		public string KnowledgeId { get; set; }
+
+		/// <summary>
+		/// 知识库
+		/// </summary>
+		public KnowledgeDto Knowledge { get; set; }
+	}
+
+	public class KnowledgeCollectAddDto
+	{
+		/// <summary>
+		/// 知识库ID
+		/// </summary>
+		public string KnowledgeId { get; set; }
+
+		/// <summary>
+		/// 知识库
+		/// </summary>
+		public KnowledgeDto Knowledge { get; set; }
+
+	}
+
+	public class KnowledgeCollectDeleteDto
+	{
+		public string Id { get; set; }
+	}
+
+	public class KnowledgeCollectBaseDto
+	{
+		public DateTime? LastModificationTime { get; set; }
+
+		public bool IsDeleted { get; set; }
+
+		/// <summary>
+		/// 删除时间
+		/// </summary>
+		public DateTime? DeletionTime { get; set; }
+
+
+		/// <summary>
+		/// 创建时间
+		/// </summary>
+		public DateTime CreationTime { get; set; }
+
+		public string Id { get; set; }
+
+		/// <summary>
+		/// 组织Id
+		/// </summary>
+		public string? CreatorOrgId { get; set; }
+
+
+		public string? CreatorOrgName { get; set; }
+
+		/// <summary>
+		/// 创建人
+		/// </summary>
+		public string? CreatorId { get; set; }
+
+		public string? CreatorName { get; set; }
+	}
+}

+ 157 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeCorrectionDto.cs

@@ -0,0 +1,157 @@
+using Hotline.Share.Enums.KnowledgeBase;
+using Hotline.Share.Requests;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Utility.EnumExtensions;
+
+namespace Hotline.Share.Dtos.Knowledge
+{
+	public class KnowledgeCorrectionDto : KnowledgeCorrectionBaseDto
+	{
+		/// <summary>
+		/// 知识库ID
+		/// </summary>
+		public string KnowledgeId { get; set; }
+
+		/// <summary>
+		/// 知识库
+		/// </summary>
+		public KnowledgeDto Knowledge { get; set; }
+
+		/// <summary>
+		/// 知识分类
+		/// </summary>
+		public string KnowledgeTypeText => Knowledge != null && Knowledge.KnowledgeType != null ? Knowledge.KnowledgeType.Name : string.Empty;
+
+		/// <summary>
+		/// 纠错内容
+		/// </summary>
+		public string? Content { get; set; }
+
+		/// <summary>
+		/// 答复人名称
+		/// </summary>
+		public string? ReplyUserName { get; set; }
+
+		/// <summary>
+		/// 答复时间
+		/// </summary>
+		public DateTime? ReplyTime { get; set; }
+
+		/// <summary>
+		/// 答复内容
+		/// </summary>
+		public string? ReplyContent { get; set; }
+
+		/// <summary>
+		/// 答复状态
+		/// </summary>
+		public ECorrectionState State { get; set; } = ECorrectionState.Unanswered;
+
+		public string StateText => State.GetDescription();
+	}
+
+	public class KnowledgeCorrectionAddDto
+	{
+		/// <summary>
+		/// 知识库ID
+		/// </summary>
+		public string KnowledgeId { get; set; }
+
+		/// <summary>
+		/// 知识库
+		/// </summary>
+		public KnowledgeDto Knowledge { get; set; }
+
+
+		/// <summary>
+		/// 纠错内容
+		/// </summary>
+		public string? Content { get; set; }
+
+		/// <summary>
+		/// 答复状态
+		/// </summary>
+		public ECorrectionState State { get; set; } = ECorrectionState.Unanswered;
+	}
+
+	public class KnowledgeCorrectionDeleteDto
+	{
+		public string Id { get; set; }
+	}
+
+	public class KnowledgeCorrectionUpdateDto : KnowledgeCorrectionAddDto
+	{
+		public string Id { get; set; }
+
+		/// <summary>
+		/// 答复人名称
+		/// </summary>
+		public string? ReplyUserName { get; set; }
+
+		/// <summary>
+		/// 答复时间
+		/// </summary>
+		public DateTime? ReplyTime { get; set; }
+
+		/// <summary>
+		/// 答复内容
+		/// </summary>
+		public string? ReplyContent { get; set; }
+
+		/// <summary>
+		/// 答复状态
+		/// </summary>
+		public new ECorrectionState State { get; set; } = ECorrectionState.Unanswered;
+	}
+
+	public record KnowledgeCorrectionListDto : PagedKeywordRequest
+	{
+		/// <summary>
+		/// 知识分类
+		/// </summary>
+		public string? KnowledgeTypeId { get; set; }
+
+		/// <summary>
+		/// 纠错人
+		/// </summary>
+		public string? CreatorName { get; set; }
+	}
+	public class KnowledgeCorrectionBaseDto
+	{
+		public DateTime? LastModificationTime { get; set; }
+
+		public bool IsDeleted { get; set; }
+
+		/// <summary>
+		/// 删除时间
+		/// </summary>
+		public DateTime? DeletionTime { get; set; }
+
+
+		/// <summary>
+		/// 创建时间
+		/// </summary>
+		public DateTime CreationTime { get; set; }
+
+		public string Id { get; set; }
+
+		/// <summary>
+		/// 组织Id
+		/// </summary>
+		public string? CreatorOrgId { get; set; }
+
+
+		public string? CreatorOrgName { get; set; }
+
+		/// <summary>
+		/// 创建人
+		/// </summary>
+		public string? CreatorId { get; set; }
+
+		public string? CreatorName { get; set; }
+	}
+}

+ 2 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeDto.cs

@@ -131,6 +131,8 @@ namespace Hotline.Share.Dtos.Knowledge
         /// </summary>
         public string HotspotExternal { get; set; }
 
+        public KnowledgeTypeDto KnowledgeType { get; set; }
+
     }
 
     /// <summary>

+ 153 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeQuestionsDto.cs

@@ -0,0 +1,153 @@
+using Hotline.Share.Enums.KnowledgeBase;
+using Hotline.Share.Requests;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Utility.EnumExtensions;
+
+namespace Hotline.Share.Dtos.Knowledge
+{
+	public class KnowledgeQuestionsDto : KnowledgeQuestionsBaseDto
+	{
+		/// <summary>
+		/// 知识库ID
+		/// </summary>
+		public string KnowledgeId { get; set; }
+
+		/// <summary>
+		/// 知识库
+		/// </summary>
+		public KnowledgeDto Knowledge { get; set; }
+
+
+		/// <summary>
+		/// 提问内容
+		/// </summary>
+		public string? Content { get; set; }
+
+		/// <summary>
+		/// 答复人名称
+		/// </summary>
+		public string? ReplyUserName { get; set; }
+
+		/// <summary>
+		/// 答复时间
+		/// </summary>
+		public DateTime? ReplyTime { get; set; }
+
+		/// <summary>
+		/// 答复内容
+		/// </summary>
+		public string? ReplyContent { get; set; }
+
+		/// <summary>
+		/// 答复状态
+		/// </summary>
+		public ECorrectionState State { get; set; } = ECorrectionState.Unanswered;
+
+		public string StateText => State.GetDescription();
+	}
+
+	public class KnowledgeQuestionsAddDto
+	{
+		/// <summary>
+		/// 知识库ID
+		/// </summary>
+		public string KnowledgeId { get; set; }
+
+		/// <summary>
+		/// 知识库
+		/// </summary>
+		public KnowledgeDto Knowledge { get; set; }
+
+
+		/// <summary>
+		/// 提问内容
+		/// </summary>
+		public string? Content { get; set; }
+
+		/// <summary>
+		/// 答复状态
+		/// </summary>
+		public ECorrectionState State { get; set; } = ECorrectionState.Unanswered;
+	}
+
+	public class KnowledgeQuestionsDeleteDto
+	{
+		public string Id { get; set; }
+	}
+
+	public class KnowledgeQuestionsUpdateDto : KnowledgeQuestionsAddDto
+	{
+		public string Id { get; set; }
+
+		/// <summary>
+		/// 答复人名称
+		/// </summary>
+		public string? ReplyUserName { get; set; }
+
+		/// <summary>
+		/// 答复时间
+		/// </summary>
+		public DateTime? ReplyTime { get; set; }
+
+		/// <summary>
+		/// 答复内容
+		/// </summary>
+		public string? ReplyContent { get; set; }
+
+		/// <summary>
+		/// 答复状态
+		/// </summary>
+		public new ECorrectionState State { get; set; } = ECorrectionState.Unanswered;
+	}
+
+	public record KnowledgeQuestionsListDto : PagedKeywordRequest
+	{
+		/// <summary>
+		/// 知识分类
+		/// </summary>
+		public string? KnowledgeTypeId { get; set; }
+
+		/// <summary>
+		/// 提问人
+		/// </summary>
+		public string? CreatorName { get; set; }
+	}
+	public class KnowledgeQuestionsBaseDto
+	{
+		public DateTime? LastModificationTime { get; set; }
+
+		public bool IsDeleted { get; set; }
+
+		/// <summary>
+		/// 删除时间
+		/// </summary>
+		public DateTime? DeletionTime { get; set; }
+
+
+		/// <summary>
+		/// 创建时间
+		/// </summary>
+		public DateTime CreationTime { get; set; }
+
+		public string Id { get; set; }
+
+		/// <summary>
+		/// 组织Id
+		/// </summary>
+		public string? CreatorOrgId { get; set; }
+
+
+		public string? CreatorOrgName { get; set; }
+
+		/// <summary>
+		/// 创建人
+		/// </summary>
+		public string? CreatorId { get; set; }
+
+		public string? CreatorName { get; set; }
+	}
+}

+ 91 - 0
src/Hotline/Permissions/EPermission.cs

@@ -866,6 +866,97 @@ namespace Hotline.Permissions
 		KnowledgeWordEntity = 400605,
 		#endregion
 
+		#region 知识纠错
+		/// <summary>
+		/// 知识纠错列表
+		/// </summary>
+		[Display(GroupName = "KnowledgeCorrection", Name = "知识纠错列表", Description = "知识纠错列表")]
+		KnowledgeCorrectionList = 400700,
+
+		/// <summary>
+		/// 新增知识纠错
+		/// </summary>
+		[Display(GroupName = "KnowledgeCorrection", Name = "新增知识纠错", Description = "新增知识纠错")]
+		AddKnowledgeCorrection = 400701,
+
+		/// <summary>
+		/// 删除知识纠错
+		/// </summary>
+		[Display(GroupName = "KnowledgeCorrection", Name = "删除知识纠错", Description = "删除知识纠错")]
+		DeleteKnowledgeCorrection = 400702,
+
+		/// <summary>
+		/// 修改知识纠错
+		/// </summary>
+		[Display(GroupName = "KnowledgeCorrection", Name = "修改知识纠错", Description = "修改知识纠错")]
+		UpdateKnowledgeCorrection = 400703,
+
+		/// <summary>
+		/// 知识纠错实体
+		/// </summary>
+		[Display(GroupName = "KnowledgeCorrection", Name = "知识纠错实体", Description = "知识纠错实体")]
+		KnowledgeCorrectionEntity = 400705,
+
+		/// <summary>
+		/// 答复知识纠错
+		/// </summary>
+		[Display(GroupName = "KnowledgeCorrection", Name = "答复知识纠错", Description = "答复知识纠错")]
+		ReplyKnowledgeCorrection = 400706,
+		#endregion
+
+		#region 知识提问
+		/// <summary>
+		/// 知识提问列表
+		/// </summary>
+		[Display(GroupName = "KnowledgeQuestions", Name = "知识提问列表", Description = "知识提问列表")]
+		KnowledgeQuestionsList = 400800,
+
+		/// <summary>
+		/// 新增知识提问
+		/// </summary>
+		[Display(GroupName = "KnowledgeQuestions", Name = "新增知识提问", Description = "新增知识提问")]
+		AddKnowledgeQuestions = 400801,
+
+		/// <summary>
+		/// 删除知识提问
+		/// </summary>
+		[Display(GroupName = "KnowledgeQuestions", Name = "删除知识提问", Description = "删除知识提问")]
+		DeleteKnowledgeQuestions = 400802,
+
+		/// <summary>
+		/// 修改知识提问
+		/// </summary>
+		[Display(GroupName = "KnowledgeQuestions", Name = "修改知识提问", Description = "修改知识提问")]
+		UpdateKnowledgeQuestions = 400803,
+
+		/// <summary>
+		/// 知识提问实体
+		/// </summary>
+		[Display(GroupName = "KnowledgeQuestions", Name = "知识提问实体", Description = "知识提问实体")]
+		KnowledgeQuestionsEntity = 400805,
+
+		/// <summary>
+		/// 答复知识提问
+		/// </summary>
+		[Display(GroupName = "KnowledgeQuestions", Name = "答复知识提问", Description = "答复知识提问")]
+		ReplyKnowledgeQuestions = 400806,
+		#endregion
+
+		#region 知识收藏
+
+		/// <summary>
+		/// 新增知识收藏
+		/// </summary>
+		[Display(GroupName = "KnowledgeCollect", Name = "新增知识收藏", Description = "新增知识收藏")]
+		AddKnowledgeCollect = 400901,
+
+		/// <summary>
+		/// 删除知识收藏
+		/// </summary>
+		[Display(GroupName = "KnowledgeCollect", Name = "删除知识收藏", Description = "删除知识收藏")]
+		DeleteKnowledgeCollect = 400902,
+		#endregion
+
 		#endregion
 
 		#region 业务管理(500)