|
@@ -10,6 +10,7 @@ using DataSharing.RawData;
|
|
|
using DataSharing.SendTask;
|
|
|
using DataSharing.SendTask.OtherPlatforms;
|
|
|
using DataSharing.Share.Consts;
|
|
|
+using DataSharing.Share.Dtos;
|
|
|
using DataSharing.Share.Dtos.Common;
|
|
|
using DataSharing.Share.Dtos.FwDataExchange;
|
|
|
using DataSharing.Share.Dtos.HotlineSetting;
|
|
@@ -23,6 +24,9 @@ using MediatR;
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using SqlSugar;
|
|
|
+using System.Security.Cryptography;
|
|
|
+using System.Text;
|
|
|
+using XC.RSAUtil;
|
|
|
using XF.Domain.Cache;
|
|
|
using XF.Domain.Exceptions;
|
|
|
using XF.Domain.Repository;
|
|
@@ -66,6 +70,43 @@ namespace DataSharing.Host.Controllers
|
|
|
private readonly IRepository<SendHotlineErrorData> _sendHotlineErrorDataRepository;
|
|
|
private readonly FwClient _fwClient;
|
|
|
private readonly ISharingConfigurationManager _sharingConfigurationManager;
|
|
|
+ private readonly IRepository<UserOperationLog> _userOperationLogRepository;
|
|
|
+ private const string PublicKey = @"-----BEGIN PUBLIC KEY-----
|
|
|
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgw+/x6IQPkH0A4eoF63j
|
|
|
+kLThsOXWyNBdcL9LATGy/G1yTHOr1RyKJB//iNug+V8DIoIHuFTlhgLHDbSqxvRW
|
|
|
+MONxIIF289riS6bDI4Ox/pFmOfmElFRk0lKGihaTE2Aefd6g/N+RfLLaHWztY+/v
|
|
|
+oVeDTiOIw9y3tokIxjKwuJ/mQ66MkKh78AqQjjSD/3jcBP8ZhMyCJOK9XQcqvhD6
|
|
|
+WBFWkxlAqKOWggDU7YohfrbNkg3bd0oGE6zCE2EHhkcQbzGCh3lu1zf4TfKMXD+P
|
|
|
+Prr5JWDNYQTXFQklqgae+Puge7xxZGYRoi5YpIUnkQGm6zpPxhIOdxlz+Yb5geSJ
|
|
|
+UQIDAQAB
|
|
|
+-----END PUBLIC KEY-----";
|
|
|
+ private const string PrivateKey = @"-----BEGIN RSA PRIVATE KEY-----
|
|
|
+MIIEowIBAAKCAQEAgw+/x6IQPkH0A4eoF63jkLThsOXWyNBdcL9LATGy/G1yTHOr
|
|
|
+1RyKJB//iNug+V8DIoIHuFTlhgLHDbSqxvRWMONxIIF289riS6bDI4Ox/pFmOfmE
|
|
|
+lFRk0lKGihaTE2Aefd6g/N+RfLLaHWztY+/voVeDTiOIw9y3tokIxjKwuJ/mQ66M
|
|
|
+kKh78AqQjjSD/3jcBP8ZhMyCJOK9XQcqvhD6WBFWkxlAqKOWggDU7YohfrbNkg3b
|
|
|
+d0oGE6zCE2EHhkcQbzGCh3lu1zf4TfKMXD+PPrr5JWDNYQTXFQklqgae+Puge7xx
|
|
|
+ZGYRoi5YpIUnkQGm6zpPxhIOdxlz+Yb5geSJUQIDAQABAoIBAAe+312BKUbsp0BV
|
|
|
+fOyCqoTLqTJHBcBneWY86pte9bjaZQYPU1PsdF452o8a38gXwpErBcwcjwCyWv48
|
|
|
+iQKUv8qdiSWGe+Jh3hGM1lKGfsyl3i3wnlJqgcI2U1zc2a4BoREHnmm4yBnfs2lI
|
|
|
+HegpRCG7u3cGPZfJtxJyxdHPfsc3wk8sXt+Byqkuym87l0a8wEF7b33f2hP2R7m/
|
|
|
+37qYvTaGX3yN4s1rssQ3wBEfHEsesQmrQrEkRIUnWfgpkH3FdR5T1V4USC6GhM6x
|
|
|
+sIxqwBBYLL2LhVcNEifegqHtLZOw0VfUfpvoKnH5omSjUP5X+c8dmY9KPoKGpYFT
|
|
|
+l09fiRMCgYEAwSAmJr8G/xOCPtkRZ9qpxOwAeqA9iEhB3ViIydESrYMZGUaIKAWV
|
|
|
+ofOuDIdaMgW/2hyQtJasAnlX87Za7iODcBAMMAPSNiLEXk9nHWO+Xw/oMakgS5Dg
|
|
|
+uE2J02Bn4KFTCGALtfo70A40kkikkR2UdD4RG6j+DgI2JxxrCgaKiIMCgYEArbrv
|
|
|
+cvJs62LlvOFdVCY3mWEJkoBbStHGq2GdtZ5Rx9oNqiy3j/xT7Wav061OPCaC2rcd
|
|
|
+ALEH7AA3JJtAMr6QRv3HYyd2NIrlqS6pn4tInIpqlarrnVkkOk0WhsWVkScQJyx6
|
|
|
+eLKQ24zEF3wHslrRpHcclCWjtQ52TmWOuUvy9psCgYAWw6BbntbHSFho6hNIJ5kt
|
|
|
+Uhg4XB0ErGe/HIl7KH7IHxTdStgPx6C8p0mTxnyWOuFDZ2yTLNN3sy/v1UXgniUH
|
|
|
+F40oN7sWkICPEVL5PuGYuPpIqEPbRGeIsfMWDF4SN1HfQdr/h1B3lMUTnSZwyIjQ
|
|
|
+LuS7Wu8fXZlegNYJJ3462wKBgE5TSF9vktGw/djhVj15GXoKONGXExGxcDuWQA9A
|
|
|
++Kf81EpT7NJ6tbADquPpb6tIxZgsFGRabDLnifT0FcaLCesnwXwfr3hS4uYaxpjK
|
|
|
+qAsDkLg3nhCLvvyWAsDyVdNiZDL1J6ZBA3Qoi8P2xFWSApB+ryDPs3YOtiH0QZui
|
|
|
+9UBfAoGBAIQ2uv4J7ql++EpNNtLzOhTEpyjWS+qRSZRRXfKN2lm7e7czOsSpKIJx
|
|
|
+Q9PP8NTEmKqdI3WVFYqW/OlOFC6sjiscTOOn9Tc5Mrcn8ocCjAPjkhkCCVRMiJnv
|
|
|
+jxrWXHbT1FB6DqkdOnBbQqS1Azqz5HxLlSyEK3F60e3SgB5iZsDZ
|
|
|
+-----END RSA PRIVATE KEY-----";
|
|
|
|
|
|
/// <summary>
|
|
|
///
|
|
@@ -131,7 +172,8 @@ namespace DataSharing.Host.Controllers
|
|
|
IRepository<DsOrder> dsOrderRepository,
|
|
|
IRepository<SendHotlineErrorData> sendHotlineErrorDataRepository,
|
|
|
FwClient fwClient,
|
|
|
- ISharingConfigurationManager sharingConfigurationManager)
|
|
|
+ ISharingConfigurationManager sharingConfigurationManager,
|
|
|
+ IRepository<UserOperationLog> userOperationLogRepository)
|
|
|
{
|
|
|
_mapper = mapper;
|
|
|
_mediator = mediator;
|
|
@@ -164,6 +206,7 @@ namespace DataSharing.Host.Controllers
|
|
|
_sendHotlineErrorDataRepository = sendHotlineErrorDataRepository;
|
|
|
_fwClient = fwClient;
|
|
|
_sharingConfigurationManager = sharingConfigurationManager;
|
|
|
+ _userOperationLogRepository = userOperationLogRepository;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
@@ -951,6 +994,30 @@ namespace DataSharing.Host.Controllers
|
|
|
if (string.IsNullOrEmpty(Id) || string.IsNullOrEmpty(Type))
|
|
|
throw UserFriendlyException.SameMessage("参数无效");
|
|
|
|
|
|
+ var userInfo = Request.Headers["userinfo"].ToString();
|
|
|
+ if (string.IsNullOrEmpty(userInfo))
|
|
|
+ throw UserFriendlyException.SameMessage("用户信息获取失败");
|
|
|
+
|
|
|
+ var pkcs1 = new RsaPkcs1Util(Encoding.UTF8, PublicKey, PrivateKey);
|
|
|
+ var info = pkcs1.Decrypt(userInfo, RSAEncryptionPadding.Pkcs1);
|
|
|
+ if (info == null)
|
|
|
+ throw UserFriendlyException.SameMessage("用户信息获取失败");
|
|
|
+
|
|
|
+ var user = System.Text.Json.JsonSerializer.Deserialize<UserInfo>(info);
|
|
|
+ if (user == null)
|
|
|
+ throw UserFriendlyException.SameMessage("用户信息获取失败");
|
|
|
+
|
|
|
+ //写入操作记录
|
|
|
+
|
|
|
+ UserOperationLog operationLog = new()
|
|
|
+ {
|
|
|
+ DataId = Id,
|
|
|
+ PlatformSource = EPlatformSource.Province,
|
|
|
+ UserId = user.UserId,
|
|
|
+ UserName = user.UserName,
|
|
|
+ OrgCode = user.OrgCode,
|
|
|
+ OrgName = user.OrgName
|
|
|
+ };
|
|
|
string resultId = "";
|
|
|
|
|
|
//服务工单受理
|
|
@@ -959,7 +1026,12 @@ namespace DataSharing.Host.Controllers
|
|
|
var data = await _sendTaskSubmitCaseInfoRepository.GetAsync(Id, HttpContext.RequestAborted);
|
|
|
|
|
|
if (data != null)
|
|
|
+ {
|
|
|
+ operationLog.ReceiveServiceInterface = data.TaskType;
|
|
|
+ operationLog.Path = data.Path;
|
|
|
+ operationLog.RequestData = data.Request;
|
|
|
resultId = await _initPushDataService.InitDsSendTaskSubmitCaseInfo(data.ProvinceNo, data.Request, data.RequestData, data.GenerationTime, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//电话记录
|
|
@@ -967,7 +1039,12 @@ namespace DataSharing.Host.Controllers
|
|
|
{
|
|
|
var data = await _sendTaskSubmitCaseRecordRepository.GetAsync(Id, HttpContext.RequestAborted);
|
|
|
if (data != null)
|
|
|
+ {
|
|
|
+ operationLog.ReceiveServiceInterface = data.TaskType;
|
|
|
+ operationLog.Path = data.Path;
|
|
|
+ operationLog.RequestData = data.Request;
|
|
|
resultId = await _initPushDataService.InitDsSendTaskSubmitCaseRecord(data.ProvinceNo, data.Request, data.RequestData, data.GenerationTime, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//服务工单处理过程
|
|
@@ -975,7 +1052,12 @@ namespace DataSharing.Host.Controllers
|
|
|
{
|
|
|
var data = await _sendTaskSubmitCaseProcessRepository.GetAsync(Id, HttpContext.RequestAborted);
|
|
|
if (data != null)
|
|
|
+ {
|
|
|
+ operationLog.ReceiveServiceInterface = data.TaskType;
|
|
|
+ operationLog.Path = data.Path;
|
|
|
+ operationLog.RequestData = data.Request;
|
|
|
resultId = await _initPushDataService.InitDsSendTaskSubmitCaseProcess(data.ProvinceNo, data.Request, data.RequestData, data.GenerationTime, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//服务工单处理结果
|
|
@@ -983,7 +1065,12 @@ namespace DataSharing.Host.Controllers
|
|
|
{
|
|
|
var data = await _sendTaskSubmitCaseResultRepository.GetAsync(Id, HttpContext.RequestAborted);
|
|
|
if (data != null)
|
|
|
+ {
|
|
|
+ operationLog.ReceiveServiceInterface = data.TaskType;
|
|
|
+ operationLog.Path = data.Path;
|
|
|
+ operationLog.RequestData = data.Request;
|
|
|
resultId = await _initPushDataService.InitDsSendTaskSubmitCaseResult(data.ProvinceNo, data.Request, data.RequestData, data.GenerationTime, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//其他接口
|
|
@@ -991,7 +1078,12 @@ namespace DataSharing.Host.Controllers
|
|
|
{
|
|
|
var data = await _sendTaskProvinceOtherRepository.GetAsync(Id, HttpContext.RequestAborted);
|
|
|
if (data != null)
|
|
|
+ {
|
|
|
+ operationLog.ReceiveServiceInterface = data.TaskType;
|
|
|
+ operationLog.Path = data.Path;
|
|
|
+ operationLog.RequestData = data.Request;
|
|
|
resultId = await _initPushDataService.InitDsSendTaskProvinceOther(data.TaskType, data.Path, data.ProvinceNo, data.Request, data.RequestData, data.HttpMethod, data.PathType.Value, data.FileJson, data.GenerationTime, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//其他平台
|
|
@@ -999,8 +1091,17 @@ namespace DataSharing.Host.Controllers
|
|
|
{
|
|
|
var data = await _sendTaskOtherPlatformsRepository.GetAsync(Id, HttpContext.RequestAborted);
|
|
|
if (data != null)
|
|
|
+ {
|
|
|
+ operationLog.ReceiveServiceInterface = data.TaskType;
|
|
|
+ operationLog.Path = data.Path;
|
|
|
+ operationLog.RequestData = data.Request;
|
|
|
resultId = await _initPushDataService.InitDsSendTaskOtherPlatforms(data.TaskType, data.Path, data.ProvinceNo, data.Request, data.RequestData, data.PlatformSource, data.HttpMethod, data.PathType.Value, data.FileJson, data.GenerationTime, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ operationLog.NewDataId = resultId;
|
|
|
+ await _userOperationLogRepository.AddAsync(operationLog, HttpContext.RequestAborted);
|
|
|
+
|
|
|
if (string.IsNullOrEmpty(resultId))
|
|
|
throw UserFriendlyException.SameMessage("重新推送失败");
|
|
|
}
|
|
@@ -1344,6 +1445,19 @@ namespace DataSharing.Host.Controllers
|
|
|
if (data == null)
|
|
|
throw UserFriendlyException.SameMessage("重新推送失败");
|
|
|
|
|
|
+ var userInfo = Request.Headers["userinfo"].ToString();
|
|
|
+ if (string.IsNullOrEmpty(userInfo))
|
|
|
+ throw UserFriendlyException.SameMessage("用户信息获取失败");
|
|
|
+
|
|
|
+ var pkcs1 = new RsaPkcs1Util(Encoding.UTF8, PublicKey, PrivateKey);
|
|
|
+ var info = pkcs1.Decrypt(userInfo, RSAEncryptionPadding.Pkcs1);
|
|
|
+ if (info == null)
|
|
|
+ throw UserFriendlyException.SameMessage("用户信息获取失败");
|
|
|
+
|
|
|
+ var user = System.Text.Json.JsonSerializer.Deserialize<UserInfo>(info);
|
|
|
+ if (user == null)
|
|
|
+ throw UserFriendlyException.SameMessage("用户信息获取失败");
|
|
|
+
|
|
|
bool isSuccess = true;
|
|
|
string error = "";
|
|
|
//调用工单创建接口
|
|
@@ -1382,6 +1496,24 @@ namespace DataSharing.Host.Controllers
|
|
|
error = ex.Message;
|
|
|
}
|
|
|
|
|
|
+ //写入操作记录
|
|
|
+
|
|
|
+ UserOperationLog operationLog = new()
|
|
|
+ {
|
|
|
+ DataId = data.Id,
|
|
|
+ NewDataId = data.Id,
|
|
|
+ PlatformSource = EPlatformSource.Hotline,
|
|
|
+ ReceiveServiceInterface = data.ReceiveServiceInterface,
|
|
|
+ Path = data.Path,
|
|
|
+ RequestData = data.RequestData,
|
|
|
+ UserId = user.UserId,
|
|
|
+ UserName = user.UserName,
|
|
|
+ OrgCode = user.OrgCode,
|
|
|
+ OrgName = user.OrgName
|
|
|
+ };
|
|
|
+
|
|
|
+ await _userOperationLogRepository.AddAsync(operationLog, HttpContext.RequestAborted);
|
|
|
+
|
|
|
//推送失败添加
|
|
|
if (!isSuccess)
|
|
|
{
|