TANG JIANG 2 years ago
parent
commit
649da70acf

+ 27 - 3
src/Sharing.Api/Controllers/HotlineMessageReceiveController.cs

@@ -46,6 +46,7 @@ namespace Sharing.Api.Controllers
         private readonly IRemindCaseInfoRepository _remindCaseInfoRepository;
         private readonly IGetKnowledgeInfoSendRepository _getKnowledgeInfoSendRepository;
         private readonly IGetKnowledgeInfoUpdateRepository _getKnowledgeInfoUpdateRepository;
+        private readonly IGetKnowledgeInfoAbandonRepository _getKnowledgeInfoAbandonRepository;
 
         /// <summary>
         /// 
@@ -80,7 +81,7 @@ namespace Sharing.Api.Controllers
             , ISubmitCaseTotalRepository submitCaseTotalRepository, ISendCaseInfoRepository sendCaseInfoRepository
             , ISupplyCaseInfoSendRepository supplyCaseInfoSendRepository, IRevokeCaseInfoRepository revokeCaseInfoRepository
             , IRemindCaseInfoRepository remindCaseInfoRepository, IGetKnowledgeInfoSendRepository getKnowledgeInfoSendRepository
-            , IGetKnowledgeInfoUpdateRepository getKnowledgeInfoUpdateRepository)
+            , IGetKnowledgeInfoUpdateRepository getKnowledgeInfoUpdateRepository, IGetKnowledgeInfoAbandonRepository getKnowledgeInfoAbandonRepository)
         {
             _mediator = mediator;
             _logger = logger;
@@ -104,6 +105,7 @@ namespace Sharing.Api.Controllers
             _remindCaseInfoRepository = remindCaseInfoRepository;
             _getKnowledgeInfoSendRepository = getKnowledgeInfoSendRepository;
             _getKnowledgeInfoUpdateRepository = getKnowledgeInfoUpdateRepository;
+            _getKnowledgeInfoAbandonRepository = getKnowledgeInfoAbandonRepository;
         }
         #endregion
 
@@ -676,7 +678,9 @@ namespace Sharing.Api.Controllers
 
         #endregion
 
-        #region 协同-第四批次-知识库
+        #region 协同-第四批次
+
+        #region 知识库
         /// <summary>
         /// 知识库上报
         /// </summary>
@@ -708,12 +712,32 @@ namespace Sharing.Api.Controllers
             var data = _mapper.Map<GetKnowledgeInfoUpdate>(dto);
 
             //将上报信息写入本地库
-            var id = await IGetKnowledgeInfoUpdateRepository.AddAsync(data);
+            var id = await _getKnowledgeInfoUpdateRepository.AddAsync(data);
 
             data.Id = id;
             //信息上报
             await _mediator.Publish(new GetKnowledgeInfoUpdateNotification(data));
+        }
+
+        /// <summary>
+        /// 知识库下架
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [NonAction]
+        //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoAbandon)]
+        public async Task GetKnowledgeInfoAbandon(GetKnowledgeInfoAbandonInfo dto)
+        {
+            var data = _mapper.Map<GetKnowledgeInfoAbandon>(dto);
+
+            //将上报信息写入本地库
+            var id = await _getKnowledgeInfoAbandonRepository.AddAsync(data);
+
+            data.Id = id;
+            //信息上报
+            await _mediator.Publish(new GetKnowledgeInfoAbandonNotification(data));
         } 
+        #endregion
 
 
         #endregion

+ 12 - 1
src/Sharing.Province/DefaultPusher.cs

@@ -259,5 +259,16 @@ public class DefaultPusher : IProvincePusher
         return response.ReturnInfo;
     }
 
+    /// <summary>
+    /// 知识库下架
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushGetKnowledgeInfoAbandonAsync(GetKnowledgeInfoAbandonRequest request, CancellationToken cancellationToken)
+    {
+        var response = await _huiJuClient.RequestAsync<GetKnowledgeInfoAbandonRequest, ProvinceResponse>(request, cancellationToken);
+        return response.ReturnInfo;
+    }
     #endregion
-}
+}

+ 42 - 0
src/Sharing.Province/Dtos/XieTong/Knowledge/GetKnowledgeInfoAbandonRequest.cs

@@ -0,0 +1,42 @@
+using Microsoft.AspNetCore.Http;
+using System.Text.Json.Serialization;
+
+namespace Sharing.Province.Dtos.XieTong.Knowledge
+{
+    public class GetKnowledgeInfoAbandonRequest : ProvinceRequest<GetKnowledgeInfoAbandonInfo>
+    {
+        public override string GetRequestUrl() => "get_knowledge_info_abandon";
+
+        public override string GetHttpMethod() => HttpMethods.Post;
+    }
+
+    /// <summary>
+    /// 知识库上报
+    /// </summary>
+    public class GetKnowledgeInfoAbandonInfo
+    {
+        /// <summary>
+        /// 知识类别code
+        /// </summary>
+        [JsonPropertyName("CATEGORYCODE")]
+        public string CategoryCode { get; set; }
+
+        /// <summary>
+        /// 知识类别名称
+        /// </summary>
+        [JsonPropertyName("CATEGORYNAME")]
+        public string CategoryName { get; set; }
+
+        /// <summary>
+        /// 上报知识唯一标识
+        /// </summary>
+        [JsonPropertyName("UID")]
+        public string UID { get; set; }
+
+        /// <summary>
+        /// 行政区划代码
+        /// </summary>
+        [JsonPropertyName("AREA_CODE")]
+        public string AreaCode { get; set; }
+    }
+}

+ 70 - 0
src/Sharing.Province/Handlers/Knowledge/GetKnowledgeInfoAbandonHandler.cs

@@ -0,0 +1,70 @@
+using MapsterMapper;
+using MediatR;
+using Sharing.Notifications.Knowledge;
+using Sharing.Province.Dtos.XieTong.Knowledge;
+using Sharing.Province.XieTong.Knowledge;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Sharing.Province.Handlers.Knowledge
+{
+    /// <summary>
+    /// 知识下架
+    /// </summary>
+    public class GetKnowledgeInfoAbandonHandler : INotificationHandler<GetKnowledgeInfoAbandonNotification>
+    {
+        private readonly IChannelConfigurationManager _channelConfigurationManager;
+        private readonly PusherProvider _pusherProvider;
+        private readonly IMapper _mapper;
+        private readonly IGetKnowledgeInfoAbandonRepository _getKnowledgeInfoAbandonRepository ;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="channelConfigurationManager"></param>
+        /// <param name="pusherProvider"></param>
+        /// <param name="mapper"></param>
+        /// <param name="getKnowledgeInfoAbandonRepository"></param>
+        public GetKnowledgeInfoAbandonHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper
+            , IGetKnowledgeInfoAbandonRepository getKnowledgeInfoAbandonRepository)
+        {
+            _channelConfigurationManager = channelConfigurationManager;
+            _pusherProvider = pusherProvider;
+            _mapper = mapper;
+            _getKnowledgeInfoAbandonRepository = getKnowledgeInfoAbandonRepository;
+        }
+
+        /// <summary>
+        /// 知识下架 
+        /// </summary>
+        /// <param name="notification"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task Handle(GetKnowledgeInfoAbandonNotification notification, CancellationToken cancellationToken = default)
+        {
+            var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
+
+            var dataReceive = _mapper.Map<GetKnowledgeInfoAbandonInfo>(notification.Data);
+
+            var request = new GetKnowledgeInfoAbandonRequest();
+            request.SetData(dataReceive);
+
+            var response = await pusher.PushGetKnowledgeInfoAbandonAsync(request, cancellationToken);
+
+            //如果推送成功修改数据状态
+            if (response != null)
+            {
+                if (response.Code == "1")
+                    notification.Data.SyncState = "1";
+                else
+                    notification.Data.SyncState = "2";
+
+                notification.Data.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response);
+                await _getKnowledgeInfoAbandonRepository.UpdateAsync(notification.Data);
+            }
+        }
+    }
+}

+ 8 - 0
src/Sharing.Province/IProvincePusher.cs

@@ -167,5 +167,13 @@ public interface IProvincePusher
     /// <param name="cancellationToken"></param>
     /// <returns></returns>
     Task<BaseProvinceResponse> PushGetKnowledgeInfoUpdateAsync(GetKnowledgeInfoUpdateRequest request, CancellationToken cancellationToken);
+
+    /// <summary>
+    /// 知识库下架
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<BaseProvinceResponse> PushGetKnowledgeInfoAbandonAsync(GetKnowledgeInfoAbandonRequest request, CancellationToken cancellationToken);
     #endregion
 }

+ 10 - 0
src/Sharing.Province/SmartPusher.cs

@@ -227,5 +227,15 @@ public class SmartPusher : IProvincePusher
         throw new NotImplementedException();
     }
 
+    /// <summary>
+    /// 知识库下架
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushGetKnowledgeInfoAbandonAsync(GetKnowledgeInfoAbandonRequest request, CancellationToken cancellationToken)
+    {
+        throw new NotImplementedException();
+    }
     #endregion
 }

+ 14 - 0
src/Sharing.Repository/Province/XieTong/Knowledge/GetKnowledgeInfoAbandonRepository.cs

@@ -0,0 +1,14 @@
+using Sharing.Province.XieTong.Knowledge;
+using SqlSugar;
+using XF.Domain.Dependency;
+
+namespace Sharing.Repository.Province.XieTong.Knowledge
+{
+    public class GetKnowledgeInfoAbandonRepository : BaseRepository<GetKnowledgeInfoAbandon>, IGetKnowledgeInfoAbandonRepository, IScopeDependency
+    {
+        public GetKnowledgeInfoAbandonRepository(ISugarUnitOfWork<SharingDbContext> uow) : base(uow)
+        {
+
+        }
+    }
+}

+ 11 - 0
src/Sharing/Notifications/Knowledge/GetKnowledgeInfoAbandonNotification.cs

@@ -0,0 +1,11 @@
+using MediatR;
+using Sharing.Province.XieTong.Knowledge;
+
+namespace Sharing.Notifications.Knowledge
+{
+    /// <summary>
+    /// 知识库下架
+    /// </summary>
+    /// <param name="Data"></param>
+    public record GetKnowledgeInfoAbandonNotification(GetKnowledgeInfoAbandon Data) : INotification;
+}

+ 49 - 0
src/Sharing/Province/XieTong/Knowledge/GetKnowledgeInfoAbandon.cs

@@ -0,0 +1,49 @@
+using SqlSugar;
+using System.ComponentModel;
+using XF.Domain.Repository;
+
+namespace Sharing.Province.XieTong.Knowledge
+{
+    /// <summary>
+    /// 知识库下架    
+    /// </summary>
+    [Description("知识库下架")]
+    public class GetKnowledgeInfoAbandon : FullStateEntity
+    {
+        /// <summary>
+        /// 知识类别code
+        /// </summary>
+        [SugarColumn(ColumnDescription = "知识类别code", ColumnDataType = "varchar(50)")]
+        public string CategoryCode { get; set; }
+
+        /// <summary>
+        /// 知识类别名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "知识类别名称", ColumnDataType = "varchar(50)")]
+        public string CategoryName { get; set; }
+
+        /// <summary>
+        /// 上报知识唯一标识
+        /// </summary>
+        [SugarColumn(ColumnDescription = "上报知识唯一标识", ColumnDataType = "varchar(50)")]
+        public string UID { get; set; }
+
+        /// <summary>
+        /// 行政区划代码
+        /// </summary>
+        [SugarColumn(ColumnDescription = "行政区划代码", ColumnDataType = "varchar(24)")]
+        public string AreaCode { get; set; }
+
+        /// <summary>
+        /// 接口返回结果
+        /// </summary>
+        [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+        public string ReturnResult { get; set; }
+
+        /// <summary>
+        /// 同步状态 0:待同步;	  1:同步成功;	 2:同步失败;
+        /// </summary>
+        [SugarColumn(ColumnDescription = "同步状态", ColumnDataType = "varchar(1)", IsNullable = true)]
+        public string SyncState { get; set; } = "0";
+    }
+}

+ 8 - 0
src/Sharing/Province/XieTong/Knowledge/IGetKnowledgeInfoAbandonRepository.cs

@@ -0,0 +1,8 @@
+using XF.Domain.Repository;
+
+namespace Sharing.Province.XieTong.Knowledge
+{
+    public interface IGetKnowledgeInfoAbandonRepository : IRepository<GetKnowledgeInfoAbandon>
+    {
+    }
+}