浏览代码

增加权限

TANG JIANG 2 年之前
父节点
当前提交
220976201b

+ 8 - 7
src/Hotline.Api/Controllers/KnowledgeApplyController.cs

@@ -58,7 +58,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeApplyAdd)]
+        [Permission(EPermission.KnowledgeApplyAdd)]
         [HttpPost("add")]
         public async Task<string> AddApply([FromBody] KnowledgeApplyDto dto)
         {
@@ -72,7 +72,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        //[Permission(EPermission.KnowledgeUpdateAdd)]
+        [Permission(EPermission.KnowledgeUpdateAdd)]
         [HttpPut("update")]
         public async Task UpdateApply([FromBody] UpdateKnowledgeApplyDto dto)
         {
@@ -85,7 +85,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-     //   [Permission(EPermission.KnowApplyHandle)]
+        [Permission(EPermission.KnowApplyHandle)]
         [HttpPut("handle")]
         public async Task HandleApply([FromBody] KnowledgeApplyHandleDto dto)
         {
@@ -115,7 +115,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="Id"></param>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeApplyRevoke)]
+        [Permission(EPermission.KnowledgeApplyRevoke)]
         [HttpPut("apply-handle/{Id}")]
         public async Task RevokeApply(string Id)
         {
@@ -134,7 +134,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-      //  [Permission(EPermission.KnowledgeApplyReturn)]
+        [Permission(EPermission.KnowledgeApplyReturn)]
         [HttpPut("return")]
         public async Task ReturnApply([FromBody] KnowledgeApplyReturnDto dto)
         {
@@ -158,7 +158,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="Id"></param>
         /// <returns></returns>
-        //[Permission(EPermission.KnowledgeApplyDelete)]
+        [Permission(EPermission.KnowledgeApplyDelete)]
         [HttpDelete("remove")]
         public async Task RemoveApply(string Id)
         {
@@ -239,7 +239,7 @@ namespace Hotline.Api.Controllers
         /// 我的知识申请--全部
         /// </summary>
         /// <returns></returns>
-        //[Permission(EPermission.KnowledgeAllApply)]
+        [Permission(EPermission.MyKnowledgeApply)]
         [HttpGet()]
         public async Task<PagedDto<KnowledgeApplyHandlePageDto>> GetApplyList([FromQuery] KnowledgeApplyPagedDto dto)
         {
@@ -253,6 +253,7 @@ namespace Hotline.Api.Controllers
         /// 申请处理查询
         /// </summary>
         /// <returns></returns>
+        [Permission(EPermission.KnowledgeApplyHandle)]
         [HttpGet("handlelist")]
         public async Task<PagedDto<KnowledgeApplyHandlePageDto>> AllHandle([FromQuery] KnowledgeHandlePagedDto dto)
         {

+ 8 - 8
src/Hotline.Api/Controllers/KnowledgeCommonController.cs

@@ -44,7 +44,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-       // [Permission(EPermission.AddKnowledgeType)]
+        [Permission(EPermission.AddKnowledgeType)]
         [HttpPost("add")]
         public async Task<string> AddType([FromBody] AddKnowledgeTypeDto dto)
         {
@@ -56,7 +56,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-       // [Permission(EPermission.UpdateKnowledgeType)]
+        [Permission(EPermission.UpdateKnowledgeType)]
         [HttpPut("update")]
         public async Task UpdateType([FromBody] UpdateKnowledgeTypeDto dto)
         {
@@ -94,7 +94,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="Id"></param>
         /// <returns></returns>
-       // [Permission(EPermission.RemoveKnowledgeType)]
+       [Permission(EPermission.RemoveKnowledgeType)]
         [HttpDelete("remove")]
         public async Task RemoveType(string Id)
         {
@@ -106,7 +106,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="Id"></param>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeTypeChangeState)]
+        [Permission(EPermission.KnowledgeTypeChangeState)]
         [HttpPut("changestate")]
         public async Task ChangeStateType(string Id)
         {
@@ -118,7 +118,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="Id"></param>
         /// <returns></returns>
-        //[Permission(EPermission.KnowledgeTypeChangeStateAndOffShelf)]
+        [Permission(EPermission.KnowledgeTypeChangeStateAndOffShelf)]
         [HttpPut("changestateandoffshelf")]
         public async Task TypeChangeStateAndOffShelf(string Id)
         {
@@ -130,7 +130,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="IsEnable">不传查询所有</param>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeTypeMange)]
+        [Permission(EPermission.KnowledgeTypeMange)]
         [HttpGet("treelist")]
         public async Task<List<KnowledgeType>> GetTreeList(bool? IsEnable)
         {
@@ -162,7 +162,7 @@ namespace Hotline.Api.Controllers
         /// 编写规范-查询详情
         /// </summary>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeStandardInfo)]
+        [Permission(EPermission.KnowledgeStandardInfo)]
         [HttpGet("info-standard")]
         public async Task<KnowledgeStandard> GetStandard()
         {
@@ -185,7 +185,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        //[Permission(EPermission.KnowledgeStandardUpdate)]
+        [Permission(EPermission.KnowledgeStandardUpdate)]
         [HttpPut("update-standard")]
         public async Task UpdateStandard([FromBody] UpdateKnowledgeStandardDto dto)
         {

+ 52 - 58
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -1,8 +1,5 @@
-using Google.Protobuf.WellKnownTypes;
-using Hotline.Application.FlowEngine;
+using Hotline.Application.FlowEngine;
 using Hotline.Application.Knowledge;
-using Hotline.FlowEngine.Definitions;
-using Hotline.FlowEngine.Workflows;
 using Hotline.KnowledgeBase;
 using Hotline.KnowledgeBase.Notifies;
 using Hotline.Permissions;
@@ -13,14 +10,11 @@ using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Enums.KnowledgeBase;
-using Hotline.Share.Enums.Order;
 using Hotline.Users;
 using MapsterMapper;
 using MediatR;
-using Microsoft.AspNetCore.DataProtection.KeyManagement;
 using Microsoft.AspNetCore.Mvc;
 using SqlSugar;
-using System.Threading;
 using XF.Domain.Authentications;
 using XF.Domain.Exceptions;
 using XF.Utility.EnumExtensions;
@@ -42,8 +36,6 @@ namespace Hotline.Api.Controllers
         private readonly IMediator _mediator;
         private readonly IWorkflowApplication _workflowApplication;
         private readonly IKnowledgeWorkFlowRepository _knowledgeWorkFlowRepository;
-        private readonly IWorkflowDomainService _workflowDomainService;
-        private readonly IDefinitionDomainService _definitionDomainService;
         private readonly IUserRepository _userRepository;
         private readonly IKnowledgeTypeRepository _knowledgeTypeRepository;
         private readonly IHotspotTypeRepository _hotspotTypeRepository;
@@ -60,14 +52,12 @@ namespace Hotline.Api.Controllers
         /// <param name="mediator"></param>
         /// <param name="workflowApplication"></param>
         /// <param name="knowledgeWorkFlowRepository"></param>
-        /// <param name="workflowDomainService"></param>
-        /// <param name="definitionDomainService"></param>
         /// <param name="userRepository"></param>
         /// <param name="knowledgeTypeRepository"></param>
         /// <param name="hotspotTypeRepository"></param>
         public KnowledgeController(IKnowledgeRepository knowledgeRepository, ISessionContext sessionContext, IKnowledgeDomainService knowledgeDomainService, IMapper mapper, IKnowApplication knowApplication,
-           IMediator mediator, IWorkflowApplication workflowApplication, IKnowledgeWorkFlowRepository knowledgeWorkFlowRepository, IWorkflowDomainService workflowDomainService
-            , IDefinitionDomainService definitionDomainService, IUserRepository userRepository, IKnowledgeTypeRepository knowledgeTypeRepository, IHotspotTypeRepository hotspotTypeRepository)
+           IMediator mediator, IWorkflowApplication workflowApplication, IKnowledgeWorkFlowRepository knowledgeWorkFlowRepository
+            , IUserRepository userRepository, IKnowledgeTypeRepository knowledgeTypeRepository, IHotspotTypeRepository hotspotTypeRepository)
         {
             _knowledgeRepository = knowledgeRepository;
             _sessionContext = sessionContext;
@@ -77,8 +67,6 @@ namespace Hotline.Api.Controllers
             _mediator = mediator;
             _workflowApplication = workflowApplication;
             _knowledgeWorkFlowRepository = knowledgeWorkFlowRepository;
-            _workflowDomainService = workflowDomainService;
-            _definitionDomainService = definitionDomainService;
             _userRepository = userRepository;
             _knowledgeTypeRepository = knowledgeTypeRepository;
             _hotspotTypeRepository = hotspotTypeRepository;
@@ -150,7 +138,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-       // [Permission(EPermission.AddKnowledge)]
+        [Permission(EPermission.AddKnowledge)]
         [HttpPost("add")]
         public async Task<string> AddKnowledge([FromBody] AddKnowledgeDto dto)
         {
@@ -164,44 +152,12 @@ namespace Hotline.Api.Controllers
             return await _knowledgeRepository.AddAsync(kn, HttpContext.RequestAborted);
         }
 
-        /// <summary>
-        /// 知识库-修改
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        //[Permission(EPermission.KnowledgeUpdate)]
-        [HttpPut("update")]
-        public async Task UpdateKnowledge([FromBody] UpdateKnowledgeDto dto)
-        {
-            if (dto.Status != EKnowledgeStatus.Drafts)
-                throw UserFriendlyException.SameMessage("非草稿数据不可修改");
-            var kn = _mapper.Map<Knowledge>(dto);
-
-            await _knowledgeRepository.UpdateAsync(kn, HttpContext.RequestAborted);
-
-        }
-
-        /// <summary>
-        /// 删除知识
-        /// </summary>
-        /// <param name="id"></param>
-        /// <returns></returns>
-        [HttpDelete("{id}")]
-        public async Task Remove(string id)
-        {
-            var knowledge = await _knowledgeRepository.GetAsync(id, HttpContext.RequestAborted);
-            if (knowledge == null) return;
-            if (knowledge.Status != EKnowledgeStatus.Drafts)
-                throw UserFriendlyException.SameMessage("非草稿数据不可删除");
-            await _knowledgeRepository.RemoveAsync(knowledge, false, HttpContext.RequestAborted);
-        }
-
         /// <summary>
         /// 知识库-知识下架
         /// </summary>
         /// <param name="Id"></param>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeOffShelf)]
+        [Permission(EPermission.KnowledgeOffShelf)]
         [HttpPut("offshelf")]
         public async Task KnowledgeOffShelf(string Id)
         {
@@ -223,7 +179,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="Id"></param>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeOnTheShelf)]
+        [Permission(EPermission.KnowledgeOnTheShelf)]
         [HttpPut("ontheshelf")]
         public async Task KnowledgeOnTheShelf(string Id)
         {
@@ -244,6 +200,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="workFlowId"></param>
         /// <returns></returns>
+        [Permission(EPermission.KnowledgeRevoke)]
         [HttpPut("revoke")]
         public async Task KnowledgeRevoke(string workFlowId)
         {
@@ -288,7 +245,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="pagedDto"></param>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeMyDraftsList)]
+        [Permission(EPermission.KnowledgeMyDraftsList)]
         [HttpGet("mydraftslist")]
         public async Task<PagedDto<KnowledgeDataDto>> MyDraftsList([FromQuery] MyDraftsListPagedDto pagedDto)
         {
@@ -306,6 +263,39 @@ namespace Hotline.Api.Controllers
 
             return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
         }
+
+        /// <summary>
+        /// 知识库-修改知识草稿
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [Permission(EPermission.KnowledgeDraftsUpdate)]
+        [HttpPut("update")]
+        public async Task UpdateKnowledge([FromBody] UpdateKnowledgeDto dto)
+        {
+            if (dto.Status != EKnowledgeStatus.Drafts)
+                throw UserFriendlyException.SameMessage("非草稿数据不可修改");
+            var kn = _mapper.Map<Knowledge>(dto);
+
+            await _knowledgeRepository.UpdateAsync(kn, HttpContext.RequestAborted);
+
+        }
+
+        /// <summary>
+        /// 删除知识草稿
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [Permission(EPermission.KnowledgeDraftsDelete)]
+        [HttpDelete("{id}")]
+        public async Task Remove(string id)
+        {
+            var knowledge = await _knowledgeRepository.GetAsync(id, HttpContext.RequestAborted);
+            if (knowledge == null) return;
+            if (knowledge.Status != EKnowledgeStatus.Drafts)
+                throw UserFriendlyException.SameMessage("非草稿数据不可删除");
+            await _knowledgeRepository.RemoveAsync(knowledge, false, HttpContext.RequestAborted);
+        }
         #endregion
 
         #region 知识列表
@@ -329,7 +319,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="pagedDto"></param>
         /// <returns></returns>
-        //[Permission(EPermission.KnowledgeAllList)]
+        [Permission(EPermission.KnowledgeAllList)]
         [HttpGet()]
         public async Task<PagedDto<KnowledgeDataDto>> GetKnowList([FromQuery] KnowPagedListDto pagedDto)
         {
@@ -344,7 +334,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="pagedDto"></param>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeRetrieval)]
+        [Permission(EPermission.KnowledgeRetrieval)]
         [HttpGet("knowretrieval")]
         public async Task<PagedDto<KnowledgeRetrievalDataDto>> KnowRetrieval([FromQuery] KnowledgeRetrievalPagedListDto pagedDto)
         {
@@ -399,7 +389,7 @@ namespace Hotline.Api.Controllers
         /// <param name="pagedDto"></param>
         /// <returns></returns>
         [HttpGet("deletelist")]
-        //[Permission(EPermission.KnowledgeDeleteApply)]
+        [Permission(EPermission.KnowledgeDeleteApply)]
         public async Task<PagedDto<KnowledgeDeleteApplyDataDto>> GetDeleteApplyList([FromQuery] KnowledgeDeletelPagedListDto pagedDto)
         {
             var (total, items) = await _knowledgeWorkFlowRepository
@@ -447,7 +437,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="pagedDto"></param>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeApprovedAllList)]
+        [Permission(EPermission.KnowledgeApprovedAllList)]
         [HttpGet("approvedlist")]
         public async Task<PagedDto<KnowledgeApprovalDataDto>> ApprovedList([FromQuery] KnowledgeApprovalPagedListDto pagedDto)
         {
@@ -470,9 +460,9 @@ namespace Hotline.Api.Controllers
 
             foreach (var item in items)
             {
-                if (item.Workflow!=null)
+                if (item.Workflow != null)
                     item.CanHandle = item.Workflow.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode);
-                
+
             }
             //处理是否可以办理
             //items.ForEach(d => d.CanHandle = d.Workflow.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode));
@@ -536,6 +526,7 @@ namespace Hotline.Api.Controllers
         /// <param name="id">知识id</param>
         /// <param name="dto">流程开启参数</param>
         /// <returns></returns>
+        [Permission(EPermission.AddKnowledge)]
         [HttpPost("{id}/add-startflow")]
         public async Task AddStartFlow(string id, [FromBody] StartWorkflowDto dto)
         {
@@ -548,6 +539,7 @@ namespace Hotline.Api.Controllers
         /// <param name="id">知识id</param>
         /// <param name="dto">流程开启参数</param>
         /// <returns></returns>
+        [Permission(EPermission.KnowledgeDelete)]
         [HttpPost("{id}/remove-startflow")]
         public async Task RemoveStartFlow(string id, [FromBody] StartWorkflowDto dto)
         {
@@ -558,6 +550,7 @@ namespace Hotline.Api.Controllers
         /// 查询知识库办理流程开启参数-新增
         /// </summary>
         /// <returns></returns>
+        [Permission(EPermission.AddKnowledge)]
         [HttpGet("add-flow-start")]
         public async Task<IReadOnlyList<NextStepOptions>> GetAddFlowStartOptionsAsync()
         {
@@ -568,6 +561,7 @@ namespace Hotline.Api.Controllers
         /// 查询知识库办理流程开启参数-删除
         /// </summary>
         /// <returns></returns>
+        [Permission(EPermission.KnowledgeDelete)]
         [HttpGet("remove-flow-start")]
         public async Task<IReadOnlyList<NextStepOptions>> GetRemoveFlowStartOptionsAsync()
         {
@@ -604,7 +598,7 @@ namespace Hotline.Api.Controllers
 
             if (!string.IsNullOrEmpty(knowledge.WorkflowId) && eKnowledgeApplyType != EKnowledgeApplyType.Delete)
                 throw UserFriendlyException.SameMessage("知识已发起流程");
-            
+
             //知识审批主表
             var flowId = await _knowledgeDomainService.AddWorkFlowAsync(id, eKnowledgeApplyType, HttpContext.RequestAborted);
 

+ 12 - 8
src/Hotline/Permissions/EPermission.cs

@@ -564,14 +564,18 @@ namespace Hotline.Permissions
         /// <summary>
         /// 知识下架
         /// </summary>
-        [Display(GroupName = "已上架知识", Name = "知识下架", Description = "知识下架")]
+        [Display(GroupName = "知识库管理", Name = "知识下架", Description = "知识下架")]
         KnowledgeOffShelf = 400108,
         /// <summary>
         /// 知识上架
         /// </summary>
-        [Display(GroupName = "已下架知识", Name = "知识上架", Description = "知识上架")]
+        [Display(GroupName = "知识库管理", Name = "知识上架", Description = "知识上架")]
         KnowledgeOnTheShelf = 400109,
-
+        /// <summary>
+        /// 知识撤回
+        /// </summary>
+        [Display(GroupName = "知识库管理", Name = "撤回", Description = "撤回")]
+        KnowledgeRevoke = 400111,
         #endregion
 
         #region 我的删除申请
@@ -703,6 +707,11 @@ namespace Hotline.Permissions
         /// </summary>
         [Display(GroupName = "我的知识申请", Name = "撤销操作按钮", Description = "撤销操作按钮")]
         KnowledgeApplyRevoke = 400404,
+        /// <summary>
+        /// 知识申请删除
+        /// </summary>
+        [Display(GroupName = "知识申请处理", Name = "知识申请删除", Description = "知识申请删除")]
+        KnowledgeApplyDelete = 400405,
         #endregion
 
         #region 知识申请处理
@@ -722,11 +731,6 @@ namespace Hotline.Permissions
         /// </summary>
         [Display(GroupName = "知识申请处理", Name = "知识申请退回", Description = "知识申请退回按钮")]
         KnowledgeApplyReturn = 400412,
-        /// <summary>
-        /// 知识申请删除
-        /// </summary>
-        [Display(GroupName = "知识申请处理", Name = "知识申请删除",Description = "知识申请删除")]
-        KnowledgeApplyDelete = 400413,
 
         #endregion