Эх сурвалжийг харах

Merge branch 'master' of http://git.fwt.com/Hotline/hotline

xf 2 жил өмнө
parent
commit
48fd3a9f89

+ 6 - 2
src/Hotline.Api/Controllers/HomeController.cs

@@ -173,12 +173,16 @@ public class HomeController : BaseController
     /// <returns></returns>
     [AllowAnonymous]
     [HttpGet("get-my-auth-menu")]
-    public async Task<IReadOnlyList<SystemMenu>> GetUserAuthorityMenuByToken()
+    public async Task<UserAuthorityDto> GetUserAuthorityMenuByToken()
     {
         var roles = _sessionContext.Roles;
-        return await _systemAuthorityRepository.GetMyMenu(roles);
+        var menus = _mapper.Map<List<SystemMenuDto>>(await _systemAuthorityRepository.GetMyMenu(roles));
+        var buttons = await _systemAuthorityRepository.GetMyButton(roles);
+        return new UserAuthorityDto() { menus = menus, buttons = buttons };
     }
 
+    
+
     /// <summary>
     /// 获取当前用户所有按钮
     /// </summary>

+ 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);
 

+ 21 - 19
src/Hotline.Repository.SqlSugar/System/SystemAuthorityRepository.cs

@@ -1,4 +1,5 @@
 using Hotline.Repository.SqlSugar.DataPermissions;
+using Hotline.SeedData;
 using Hotline.Settings;
 using SqlSugar;
 using XF.Domain.Dependency;
@@ -16,11 +17,11 @@ namespace Hotline.Repository.SqlSugar.System
         /// </summary>
         /// <param name="roles"></param>
         /// <returns></returns>
-        public async Task<IReadOnlyList<SystemMenu>> GetMyMenu(string[] roles)
+        public async Task<List<SystemMenu>> GetMyMenu(string[] roles)
         {
-            if (roles.Contains("sysadmin_role"))
+            if (roles.Contains(RoleSeedData.AdminRole))
             {
-                return await Db.Queryable<SystemMenu>().OrderBy(x => x.DisplayOrder).ToTreeAsync(x => x.children, it => it.ParentId, "");
+                return await Db.Queryable<SystemMenu>().Where(x=> x.MenuType != Share.Enums.Settings.EMenuType.Button).OrderBy(x => x.DisplayOrder).ToTreeAsync(x => x.children, it => it.ParentId, "");
             }
             var list = await Db.Queryable<SystemAuthority>()
                 .Where(x => roles.Contains(x.RoleCode)).ToListAsync();
@@ -30,7 +31,7 @@ namespace Hotline.Repository.SqlSugar.System
                 menuarr.AddRange(item.SystemMenuArr);
             }
             var newmenu = menuarr.Distinct().ToList();
-            return await Db.Queryable<SystemMenu>().Where(x => menuarr.Contains(x.PermissionCode)).OrderBy(x => x.DisplayOrder).ToTreeAsync(x => x.children, it => it.ParentId, "");
+            return await Db.Queryable<SystemMenu>().Where(x => menuarr.Contains(x.PermissionCode) && x.MenuType != Share.Enums.Settings.EMenuType.Button ).OrderBy(x => x.DisplayOrder).ToTreeAsync(x => x.children, it => it.ParentId, "");
         }
 
         /// <summary>
@@ -38,21 +39,22 @@ namespace Hotline.Repository.SqlSugar.System
         /// </summary>
         /// <param name="roles"></param>
         /// <returns></returns>
-        //public async Task<IReadOnlyList<string>> GetMyButton(string[] roles)
-        //{
-        //    if (roles.Contains("sysadmin_role"))
-        //    {
-        //        return await Db.Queryable<SystemButton>().Select(x => x.PermissionCode).ToListAsync();
-        //    }
-        //    var list = await Db.Queryable<SystemAuthority>()
-        //        .Where(x => roles.Contains(x.RoleCode)).ToListAsync();
-        //    var buttonarr = new List<string>();
-        //    foreach (var item in list)
-        //    {
-        //        buttonarr.AddRange(item.SystemButtonArr);
-        //    }
-        //    return buttonarr.Distinct().ToList();
-        //}
+        public async Task<List<string>> GetMyButton(string[] roles)
+        {
+            if (roles.Contains(RoleSeedData.AdminRole))
+            {
+                return await Db.Queryable<SystemMenu>().Select(x => x.PermissionCode).ToListAsync();
+            }
+            var list = await Db.Queryable<SystemAuthority>()
+                .Where(x => roles.Contains(x.RoleCode)).ToListAsync();
+            var buttonarr = new List<string>();
+            foreach (var item in list)
+            {
+                buttonarr.AddRange(item.SystemMenuArr);
+            }
+            var newbutton = buttonarr.Distinct().ToList();
+            return newbutton;
+        }
 
         /// <summary>
         /// 获取当前用户所有功能点(包含菜单和按钮)

+ 104 - 1
src/Hotline.Share/Dtos/Home/HomeDto.cs

@@ -1,5 +1,7 @@
-using System;
+using Hotline.Share.Enums.Settings;
+using System;
 using System.Collections.Generic;
+using System.Data.SqlTypes;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -21,4 +23,105 @@ namespace Hotline.Share.Dtos.Home
         public bool IsRestApproval { get; set; }
     }
 
+    public class UserAuthorityDto
+    {
+        public List<SystemMenuDto> menus { get; set; }
+        public List<string> buttons { get; set; }
+    }
+
+    public class SystemMenuDto
+    {
+        /// <summary>
+        /// 页面名称
+        /// </summary>
+        public string PageName { get; set; }
+
+        /// <summary>
+        /// 排序
+        /// </summary>
+        public int DisplayOrder { get; set; }
+
+        /// <summary>
+        /// 上级ID
+        /// </summary>
+        public string ParentId { get; set; }
+
+        /// <summary>
+        /// 类型
+        /// </summary>
+        public EMenuType? MenuType { get; set; }
+
+        /// <summary>
+        /// 功能点Code
+        /// </summary>
+        public string PermissionCode { get; set; }
+
+        /// <summary>
+        /// 是否显示
+        /// </summary>
+        public bool IsHide { get; set; }
+
+        /// <summary>
+        /// 重定向地址
+        /// </summary>
+        public string Redirect { get; set; }
+
+        /// <summary>
+        /// 是否外链
+        /// </summary>
+        public bool IsLink { get; set; }
+
+        /// <summary>
+        /// 外部连接
+        /// </summary>
+        public string Link { get; set; }
+
+        /// <summary>
+        /// 路由路径
+        /// </summary>
+        public string Path { get; set; }
+
+        /// <summary>
+        /// 是否缓存
+        /// </summary>
+        public bool IsKeepAlive { get; set; }
+
+        /// <summary>
+        /// 是否固定
+        /// </summary>
+        public bool IsAffix { get; set; }
+
+        /// <summary>
+        /// 是否内嵌
+        /// </summary>
+        public bool IsIframe { get; set; }
+
+        /// <summary>
+        /// 路由名称
+        /// </summary>
+        public string RuleName { get; set; }
+
+        /// <summary>
+        /// 组件路径
+        /// </summary>
+        public string Component { get; set; }
+
+        /// <summary>
+        /// 图标
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 是否可为快捷
+        /// </summary>
+        public bool IsFast { get; set; }
+
+        /// <summary>
+        /// 快捷图标
+        /// </summary>
+        public string FastIcon { get; set; }
+
+        public List<SystemMenuDto> children { get; set; }
+    }
+
 }

+ 0 - 2
src/Hotline.Share/Dtos/Roles/RoleAuthorityDto.cs

@@ -8,7 +8,5 @@
 
         public List<string> SystemMenuArr { get; set; }
 
-        public List<string> SystemButtonArr { get; set; }
-
     }
 }

+ 2 - 2
src/Hotline/KnowledgeBase/KnowledgeTypeDomainService.cs

@@ -253,7 +253,7 @@ namespace Hotline.KnowledgeBase
         /// </summary>
         /// <param name="Id"></param>
         /// <returns></returns>
-        private async Task<List<string>> GetParentNode(string Id)
+        private async Task<List<string>> GetParentNode(string? Id)
         {
             List<string> list = new();
             //查询父级数据
@@ -294,7 +294,7 @@ namespace Hotline.KnowledgeBase
         /// </summary>
         /// <param name="Id"></param>
         /// <returns></returns>
-        private async Task<string> GetFullName(string Id)
+        private async Task<string> GetFullName(string? Id)
         {
             //获取全部父级名称
             var list = await GetParentNode(Id);

+ 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
 

+ 2 - 2
src/Hotline/Settings/ISystemAuthorityRepository.cs

@@ -9,14 +9,14 @@ namespace Hotline.Settings
         /// </summary>
         /// <param name="roles"></param>
         /// <returns></returns>
-        Task<IReadOnlyList<SystemMenu>> GetMyMenu(string[] roles);
+        Task<List<SystemMenu>> GetMyMenu(string[] roles);
 
         /// <summary>
         /// 获取所有功能点
         /// </summary>
         /// <param name="roles"></param>
         /// <returns></returns>
-        //Task<IReadOnlyList<string>> GetMyButton(string[] roles);
+        Task<List<string>> GetMyButton(string[] roles);
 
         /// <summary>
         /// 获取当前用户所有功能点(包含菜单和按钮)