ConvergenceMediaController.cs 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165
  1. using DataSharing.FwDataExchange;
  2. using DataSharing.RawData;
  3. using DataSharing.Share.Dtos;
  4. using DataSharing.Share.Dtos.HotlineSetting;
  5. using DataSharing.Share.Dtos.YiBin.ConvergenceMedia;
  6. using DataSharing.YiBin.ConvergenceMedia;
  7. using DotNetCore.CAP;
  8. using Hotline.Share.Dtos;
  9. using Hotline.Share.Dtos.Article;
  10. using Hotline.Share.Dtos.DataSharingSearch;
  11. using Hotline.Share.Dtos.File;
  12. using Hotline.Share.Dtos.FlowEngine.Workflow;
  13. using Hotline.Share.Dtos.Order;
  14. using Hotline.Share.Enums.Order;
  15. using MapsterMapper;
  16. using MediatR;
  17. using Microsoft.AspNetCore.Authorization;
  18. using Microsoft.AspNetCore.Mvc;
  19. using System.Drawing.Printing;
  20. using XF.Domain.Filters;
  21. using XF.Domain.Repository;
  22. namespace DataSharing.Host.Controllers.YiBin
  23. {
  24. /// <summary>
  25. /// 融媒体、I宜宾
  26. /// </summary>
  27. public class ConvergenceMediaController : BaseController
  28. {
  29. #region 注入
  30. private readonly IMapper _mapper;
  31. private readonly IMediator _mediator;
  32. private readonly ICapPublisher _capPublisher;
  33. private readonly IChannelConfigurationManager _channelConfigurationManager;
  34. private readonly IRepository<DsReceiveMediaData> _dsReceiveMediaDataRepository;
  35. private readonly IRepository<DsBulletin> _bulletinRepository;
  36. private readonly FwClient _fwClient;
  37. private readonly IDsUserTokenInfoService _dsUserTokenInfoService;
  38. /// <summary>
  39. ///
  40. /// </summary>
  41. /// <param name="mapper"></param>
  42. /// <param name="mediator"></param>
  43. /// <param name="capPublisher"></param>
  44. /// <param name="channelConfigurationManager"></param>
  45. /// <param name="dsReceiveMediaDataRepository"></param>
  46. /// <param name="bulletinRepository"></param>
  47. /// <param name="fwClient"></param>
  48. /// <param name="dsUserTokenInfoService"></param>
  49. public ConvergenceMediaController(IMapper mapper, IMediator mediator,
  50. ICapPublisher capPublisher,
  51. IChannelConfigurationManager channelConfigurationManager,
  52. IRepository<DsReceiveMediaData> dsReceiveMediaDataRepository,
  53. IRepository<DsBulletin> bulletinRepository,
  54. FwClient fwClient,
  55. IDsUserTokenInfoService dsUserTokenInfoService)
  56. {
  57. _mapper = mapper;
  58. _mediator = mediator;
  59. _capPublisher = capPublisher;
  60. _channelConfigurationManager = channelConfigurationManager;
  61. _dsReceiveMediaDataRepository = dsReceiveMediaDataRepository;
  62. _bulletinRepository = bulletinRepository;
  63. _fwClient = fwClient;
  64. _dsUserTokenInfoService = dsUserTokenInfoService;
  65. }
  66. #endregion
  67. /// <summary>
  68. /// 2.1融媒体写信---1
  69. /// </summary>
  70. /// <param name="mediaDataReceiveDto"></param>
  71. /// <returns></returns>
  72. [HttpPost("WriteOrder")]
  73. [AllowAnonymous]
  74. public async Task<OpenResponse> WriteOrder([FromForm] MediaDataReceiveDto mediaDataReceiveDto)
  75. {
  76. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(mediaDataReceiveDto.Code, HttpContext.RequestAborted);
  77. if (accountDto is null || accountDto.IsCheckAccount == false)
  78. {
  79. List<WriteOrderResponseDto> responseDtos = new()
  80. {
  81. new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", Msg = "密钥错误", Code = "-900" }
  82. };
  83. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Failed(responseDtos, "0", "密钥错误"));
  84. }
  85. //验证数据
  86. string strResult = mediaDataReceiveDto.Validate();
  87. if (!string.IsNullOrEmpty(strResult))
  88. {
  89. List<WriteOrderResponseDto> responseDtos = new()
  90. {
  91. new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", Msg = strResult, Code = "0" }
  92. };
  93. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Failed(responseDtos, "0", description: strResult));
  94. }
  95. //写入原始数据
  96. DsReceiveMediaData dsReceiveMediaData = new()
  97. {
  98. ServiceInterface = "WriteOrder",
  99. PlatformsName = accountDto.PlatformSourceName,
  100. ReceiveData = System.Text.Json.JsonSerializer.Serialize(mediaDataReceiveDto)
  101. };
  102. dsReceiveMediaData.Id = await _dsReceiveMediaDataRepository.AddAsync(dsReceiveMediaData, HttpContext.RequestAborted);
  103. AddOrderDto data = new()
  104. {
  105. Title = mediaDataReceiveDto.Title,
  106. FromName = mediaDataReceiveDto.LinkName,
  107. Contact = mediaDataReceiveDto.Mobile,
  108. FullAddress = mediaDataReceiveDto.Address,
  109. Content = mediaDataReceiveDto.Content,
  110. IsSecret = mediaDataReceiveDto.Secrecy == 0 ? false : true,
  111. Source = (Hotline.Share.Enums.Order.ESource)Enum.Parse(typeof(Hotline.Share.Enums.Order.ESource), accountDto.PlatformSource),
  112. FromGender = mediaDataReceiveDto.Gender switch
  113. {
  114. "1" => Hotline.Share.Enums.Order.EGender.Male,
  115. "2" => Hotline.Share.Enums.Order.EGender.Female,
  116. _ => Hotline.Share.Enums.Order.EGender.Unknown,
  117. },
  118. IdentityType = Hotline.Share.Enums.Order.EIdentityType.Citizen,
  119. Transpond = false,
  120. IsEnforcementOrder = false,
  121. ExternalId = Guid.NewGuid().ToString()
  122. };
  123. switch (accountDto.PlatformSource)
  124. {
  125. case "ConvergenceMedia":
  126. data.SourceChannel = "宜宾融媒体";
  127. data.SourceChannelCode = "YBRMT";
  128. break;
  129. case "IYIBIN":
  130. data.SourceChannel = "i宜宾";
  131. data.SourceChannelCode = "IYB";
  132. break;
  133. default:
  134. break;
  135. }
  136. switch (mediaDataReceiveDto.PurTypeID)
  137. {
  138. case 17:
  139. data.AcceptType = "咨询";
  140. data.AcceptTypeCode = "10";
  141. break;
  142. case 18:
  143. data.AcceptType = "举报";
  144. data.AcceptTypeCode = "30";
  145. break;
  146. case 19:
  147. data.AcceptType = "投诉";
  148. data.AcceptTypeCode = "35";
  149. break;
  150. case 20:
  151. data.AcceptType = "求助";
  152. data.AcceptTypeCode = "20";
  153. break;
  154. case 21:
  155. data.AcceptType = "建议";
  156. data.AcceptTypeCode = "15";
  157. break;
  158. case 25:
  159. data.AcceptType = "其他";
  160. data.AcceptTypeCode = "40";
  161. break;
  162. default:
  163. data.AcceptType = "其他";
  164. data.AcceptTypeCode = "40";
  165. break;
  166. }
  167. string areaName = "";
  168. switch (mediaDataReceiveDto.AreaID)
  169. {
  170. case 2:
  171. data.AreaCode = "511504"; areaName = "叙州区";
  172. break;
  173. case 3:
  174. data.AreaCode = "511503"; areaName = "翠屏区";
  175. break;
  176. case 4:
  177. data.AreaCode = "511504"; areaName = "南溪区";
  178. break;
  179. case 5:
  180. data.AreaCode = "511524"; areaName = "长宁县";
  181. break;
  182. case 6:
  183. data.AreaCode = "511528"; areaName = "兴文县";
  184. break;
  185. case 7:
  186. data.AreaCode = "511526"; areaName = "珙县";
  187. break;
  188. case 8:
  189. data.AreaCode = "511525"; areaName = "高县";
  190. break;
  191. case 9:
  192. data.AreaCode = "511527"; areaName = "筠连县";
  193. break;
  194. case 10:
  195. data.AreaCode = "511523"; areaName = "江安县";
  196. break;
  197. case 11:
  198. data.AreaCode = "511529"; areaName = "屏山县";
  199. break;
  200. case 12:
  201. data.AreaCode = "511504"; areaName = "叙州区";
  202. break;
  203. default:
  204. break;
  205. }
  206. data.Address = "四川省宜宾市" + areaName;
  207. //调用工单创建接口
  208. var result = await _fwClient.RequestNoTokenAsync<HotlineClientResponse>("api/v1/Order/add-anonymous", "Post", System.Text.Json.JsonSerializer.Serialize(data));
  209. if (result != null && result.code == 0)
  210. {
  211. dsReceiveMediaData.ExternalId = result.result.id;
  212. dsReceiveMediaData.OrderCode = result.result.no;
  213. await _dsReceiveMediaDataRepository.UpdateAsync(dsReceiveMediaData, HttpContext.RequestAborted);
  214. List<WriteOrderResponseDto> responseDtos = new()
  215. {
  216. new WriteOrderResponseDto() { AcceptCode = result.result.no, AcceptPwd = result.result.password, Msg = "写信成功", Code = "1" }
  217. };
  218. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Success(responseDtos, "您已成功提交数据!"));
  219. }
  220. else
  221. {
  222. List<WriteOrderResponseDto> responseDtos = new()
  223. {
  224. new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", Msg = "接口调用失败", Code = "0" }
  225. };
  226. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Failed(responseDtos, "0", description: "接口调用失败!"));
  227. }
  228. }
  229. /// <summary>
  230. /// 2.2工单列表---1
  231. /// </summary>
  232. /// <param name="dto"></param>
  233. /// <returns></returns>
  234. [HttpPost("GetOrderByList")]
  235. [AllowAnonymous]
  236. public async Task<OpenResponse> GetOrderByList([FromForm] GetOrderMediaReceiveDto dto)
  237. {
  238. //密钥验证
  239. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
  240. if (accountDto is null || accountDto.IsCheckAccount == false)
  241. {
  242. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  243. new()
  244. {
  245. msg = "密钥错误",
  246. code = "-900",
  247. data = ""
  248. } };
  249. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  250. }
  251. //数据处理
  252. string acceptTypeCode = dto.PurTypeID switch
  253. {
  254. 17 => "10",
  255. 18 => "30",
  256. 19 => "35",
  257. 20 => "20",
  258. 21 => "15",
  259. 25 => "40",
  260. _ => "",
  261. };
  262. GetOrderList orderList = new()
  263. {
  264. SourceChannelCode = GetChannelCode(accountDto.PlatformSource),
  265. No = dto.AcceptCode,
  266. Title = dto.Title,
  267. Mobile = dto.Mobile,
  268. AcceptTypeCode = acceptTypeCode,
  269. StartTime = string.IsNullOrEmpty(dto.StartDate) == true ? null : Convert.ToDateTime(dto.StartDate),
  270. EndTime = string.IsNullOrEmpty(dto.EndDate) == true ? null : Convert.ToDateTime(dto.EndDate).AddDays(1),
  271. PageIndex = dto.CurrentPage,
  272. PageSize = dto.PageSize,
  273. HandleStateCode = dto.HandleStateCode,
  274. };
  275. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<PagedDto<OrderDto>>>("api/v1/DataSharing/get_order_list_own",
  276. "Post", System.Text.Json.JsonSerializer.Serialize(orderList));
  277. int nPageCount = 0;
  278. List<GetOrderMediaDataListDto> listData = [];
  279. if (result != null && result.code == 0)
  280. {
  281. if (result.result.Items != null && result.result.Items.Count > 0)
  282. {
  283. //计算总页数
  284. nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(result.result.Total) / dto.PageSize));
  285. int rowID = 0;
  286. foreach (var item in result.result.Items)
  287. {
  288. rowID++;
  289. listData.Add(new GetOrderMediaDataListDto()
  290. {
  291. RowID = ((dto.CurrentPage - 1) * dto.PageSize) + rowID + "",
  292. FlowID = item.Id,
  293. Code = item.No,
  294. Title = item.Title,
  295. AddDate = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
  296. FromName = item.SourceChannel,
  297. PurTypeName = item.AcceptType,
  298. ResultState = item.Status >= EOrderStatus.Filed ? "办理完成" : "办理中"
  299. });
  300. }
  301. }
  302. }
  303. List<GetOrderMediaDataDto> returnData = new()
  304. {
  305. //处理返回
  306. new()
  307. {
  308. PageCount = nPageCount,
  309. data = listData
  310. } };
  311. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetOrderMediaDataDto>>.Success(returnData, "成功"));
  312. }
  313. /// <summary>
  314. /// 2.3 工单查询---1
  315. /// </summary>
  316. /// <returns></returns>
  317. [HttpPost("GetOrderDetail")]
  318. [AllowAnonymous]
  319. public async Task<OpenResponse> GetOrderDetail([FromForm] MediaOrderDetailReceiveDto dto)
  320. {
  321. //验证密钥
  322. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
  323. if (accountDto is null || accountDto.IsCheckAccount == false)
  324. {
  325. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  326. new()
  327. {
  328. msg = "密钥错误",
  329. code = "-900",
  330. data = ""
  331. } };
  332. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  333. }
  334. //验证数据
  335. string strResult = dto.Validate();
  336. if (!string.IsNullOrEmpty(strResult))
  337. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo(strResult), "0", "失败"));
  338. GetOrderNoPwdDto getOrder = new()
  339. {
  340. No = dto.AcceptCode,
  341. Password = dto.AcceptPwd,
  342. SourceChannelCode = GetChannelCode(accountDto.PlatformSource)
  343. };
  344. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<OrderDto>>("api/v1/DataSharing/get_order_detail_by_no_pwd",
  345. "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
  346. List<MediaOrderDetailDataDto> items = new();
  347. if (result != null && result.code == 0)
  348. {
  349. if (result.result != null)
  350. {
  351. var item = result.result;
  352. items.Add(new()
  353. {
  354. FlowID = item.Id,
  355. FlowCode = item.No,
  356. FlowTitle = item.Title,
  357. FlowFromName = item.SourceChannel,
  358. FlowPurTypeName = item.AcceptType,
  359. FlowConTypeName = item.HotspotName,
  360. FlowAddDate = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
  361. FlowLKName = item.FromName,
  362. FlowBMName = item.ActualHandleOrgName,
  363. FlowRSFlagName = item.Status >= EOrderStatus.Filed ? "办理完成" : "办理中",
  364. FlowContent = item.Content,
  365. FlowResult = item.ActualOpinion,
  366. OrderFiles = GetOrderFiles(item.FileJson),
  367. });
  368. }
  369. }
  370. if (items == null || items.Count == 0)
  371. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo("编号、密码错误!"), "0", "失败"));
  372. else
  373. return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<MediaOrderDetailDataDto>>.Success(items, "成功"));
  374. }
  375. /// <summary>
  376. /// 2.4 今日受理分类统计---1
  377. /// </summary>
  378. /// <param name="Code"></param>
  379. /// <returns></returns>
  380. [HttpPost("GetPurTypeReport")]
  381. [AllowAnonymous]
  382. public async Task<OpenResponse> GetPurTypeReport([FromForm] string Code)
  383. {
  384. //验证密钥
  385. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(Code, HttpContext.RequestAborted);
  386. if (accountDto is null || accountDto.IsCheckAccount == false)
  387. {
  388. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  389. new()
  390. {
  391. msg = "密钥错误",
  392. code = "-900",
  393. data = ""
  394. } };
  395. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  396. }
  397. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<List<GetPurTypeReportDataDto>>>("api/v1/DataSharing/get_pur_type_report",
  398. "Post", "");
  399. List<GetPurTypeReportDataDto> data = new List<GetPurTypeReportDataDto>();
  400. if (result != null && result.code == 0)
  401. {
  402. if (result.result != null)
  403. {
  404. data = _mapper.Map<List<GetPurTypeReportDataDto>>(result.result);
  405. }
  406. }
  407. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetPurTypeReportDataDto>>.Success(data, "成功"));
  408. }
  409. /// <summary>
  410. /// 2.5 答复公开---1
  411. /// </summary>
  412. /// <param name="dto"></param>
  413. /// <returns></returns>
  414. [HttpPost("GetOrderByListOpen")]
  415. [AllowAnonymous]
  416. public async Task<OpenResponse> GetOrderByListOpen([FromForm] GetOrderMediaReceiveOpenDto dto)
  417. {
  418. //密钥验证
  419. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
  420. if (accountDto is null || accountDto.IsCheckAccount == false)
  421. {
  422. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  423. new()
  424. {
  425. msg = "密钥错误",
  426. code = "-900",
  427. data = ""
  428. } };
  429. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  430. }
  431. //数据处理
  432. string acceptTypeCode = dto.PurTypeID switch
  433. {
  434. "17" => "10",
  435. "18" => "30",
  436. "19" => "35",
  437. "20" => "20",
  438. "21" => "15",
  439. "25" => "40",
  440. _ => "",
  441. };
  442. int pageIndex = string.IsNullOrEmpty(dto.CurrentPage) == true ? 1 : Convert.ToInt32(dto.CurrentPage);
  443. int pageSize = string.IsNullOrEmpty(dto.PageSize) == true ? 1 : Convert.ToInt32(dto.PageSize);
  444. GetOrderList getOrder = new GetOrderList()
  445. {
  446. Title = dto.Title,
  447. AcceptTypeCode = acceptTypeCode,
  448. StartTime = string.IsNullOrEmpty(dto.StartDate) == true ? null : Convert.ToDateTime(dto.StartDate),
  449. EndTime = string.IsNullOrEmpty(dto.EndDate) == true ? null : Convert.ToDateTime(dto.EndDate).AddDays(1),
  450. PageIndex = pageIndex,
  451. PageSize = pageSize,
  452. };
  453. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<PagedDto<PublishDto>>>("api/v1/DataSharing/get_order_list_publish",
  454. "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
  455. int nPageCount = 0;
  456. List<GetOrderMediaDataListDto> listData = [];
  457. if (result != null && result.code == 0)
  458. {
  459. if (result.result.Items != null && result.result.Items.Count > 0)
  460. {
  461. //计算总页数
  462. nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(result.result.Total) / pageSize));
  463. int rowID = 0;
  464. foreach (var item in result.result.Items)
  465. {
  466. rowID++;
  467. listData.Add(new GetOrderMediaDataListDto()
  468. {
  469. RowID = ((pageIndex - 1) * pageSize) + rowID + "",
  470. FlowID = item.Id,
  471. Code = item.No,
  472. Title = item.Title,
  473. AddDate = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
  474. FromName = item.SourceChannel,
  475. PurTypeName = item.AcceptType,
  476. ResultState = item.Status >= EOrderStatus.Filed ? "办理完成" : "办理中",
  477. PubDate = item.PublishTime.HasValue == true ? item.PublishTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
  478. });
  479. }
  480. }
  481. }
  482. //返回数据处理
  483. List<GetOrderMediaDataDto> dataDto = new()
  484. {
  485. new(){ PageCount = nPageCount,
  486. data = listData
  487. }
  488. };
  489. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetOrderMediaDataDto>>.Success(dataDto, "成功"));
  490. }
  491. /// <summary>
  492. /// 2.6 办理明细
  493. /// </summary>
  494. /// <param name="dto"></param>
  495. /// <returns></returns>
  496. [HttpPost("GetOrderByRun")]
  497. [AllowAnonymous]
  498. public async Task<OpenResponse> GetOrderByRun([FromForm] MediaOrderDetailReceiveDto dto)
  499. {
  500. //密钥验证
  501. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
  502. if (accountDto is null || accountDto.IsCheckAccount == false)
  503. {
  504. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  505. new()
  506. {
  507. msg = "密钥错误",
  508. code = "-900",
  509. data = ""
  510. } };
  511. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  512. }
  513. //验证数据
  514. string strResult = dto.Validate();
  515. if (!string.IsNullOrEmpty(strResult))
  516. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo(strResult), "0", "失败"));
  517. GetOrderNoPwdDto getOrder = new()
  518. {
  519. No = dto.AcceptCode,
  520. Password = dto.AcceptPwd,
  521. SourceChannelCode = GetChannelCode(accountDto.PlatformSource)
  522. };
  523. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<List<WorkflowTraceDto>>>("api/v1/DataSharing/get_workflow_by_no_pwd",
  524. "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
  525. List<GetOrderByRunDataDto> orderByRunData = new();
  526. if (result != null && result.code == 0)
  527. {
  528. if (result.result != null && result.result.Count > 0)
  529. {
  530. foreach (var item in result.result)
  531. {
  532. orderByRunData.Add(new GetOrderByRunDataDto()
  533. {
  534. BMName = item.HandlerOrgName,
  535. TTime = item.StepExpiredTime.HasValue == true ? item.StepExpiredTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
  536. DisposeDate = item.HandleTime.HasValue == true ? item.HandleTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
  537. });
  538. }
  539. }
  540. }
  541. return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<GetOrderByRunDataDto>>.Success(orderByRunData, "成功"));
  542. }
  543. /// <summary>
  544. /// 2.1.3 上传附件---1
  545. /// </summary>
  546. /// <param name="formData"></param>
  547. /// <returns></returns>
  548. [HttpPost("WriteFiles")]
  549. [AllowAnonymous]
  550. public async Task<OpenResponse> WriteFiles([FromForm] IFormCollection formData)
  551. {
  552. string Code = formData["Code"];
  553. string AcceptCode = formData["AcceptCode"];
  554. string AcceptPwd = formData["AcceptPwd"];
  555. //验证密钥
  556. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(Code, HttpContext.RequestAborted);
  557. if (accountDto is null || accountDto.IsCheckAccount == false)
  558. {
  559. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  560. new()
  561. {
  562. msg = "密钥错误",
  563. code = "-900",
  564. data = ""
  565. } };
  566. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  567. }
  568. //验证数据
  569. if (string.IsNullOrEmpty(AcceptCode) || string.IsNullOrEmpty(AcceptPwd))
  570. return OpenResponse.Ok(ConvergenceMediaDeResponse<string>.Failed("编号、密码不能为空!", "0", "失败"));
  571. var dataRaw = await _dsReceiveMediaDataRepository.GetAsync(p => p.OrderCode == AcceptCode, HttpContext.RequestAborted);
  572. if (dataRaw == null)
  573. return OpenResponse.Ok(ConvergenceMediaDeResponse<string>.Failed("编号、密码错误!", "0", "失败"));
  574. IFormFileCollection files = formData.Files;//等价于Request.Form.Files
  575. List<FileDto> fileDtos = new();
  576. foreach (var item in files)
  577. {
  578. //这里需要上文件服务器上传
  579. var businessFileDto = await SendFileData(item);
  580. string strFileName = item.FileName;
  581. string strSuffix = strFileName.LastIndexOf(".") > 0 ? strFileName.Substring(strFileName.LastIndexOf(".") + 1) : "";
  582. string strSubFileName = strFileName.LastIndexOf(".") > 0 ? strFileName.Substring(0, strFileName.LastIndexOf(".")) : strFileName;
  583. fileDtos.Add(new FileDto()
  584. {
  585. Name = strSubFileName,
  586. Type = strSuffix,
  587. Classify = "受理上传",
  588. Additions = businessFileDto.id,
  589. Path = businessFileDto.path
  590. });
  591. }
  592. UpdateOrderFilesDto updateOrderFiles = new()
  593. {
  594. Files = fileDtos,
  595. Id = dataRaw.ExternalId,
  596. OrderNo = dataRaw.OrderCode
  597. };
  598. //推送数据
  599. var result = await _fwClient.RequestNoTokenAsync<HotlineClientResponse>("api/v1/Order/update-orderfiles", "Post", System.Text.Json.JsonSerializer.Serialize(updateOrderFiles));
  600. return OpenResponse.Ok(ConvergenceMediaDeResponse<string>.Success("", "上传成功"));
  601. }
  602. /// <summary>
  603. /// 2.7 新闻列表 ---1
  604. /// </summary>
  605. /// <param name="dto"></param>
  606. /// <returns></returns>
  607. [HttpPost("GetNoticeListByPage")]
  608. [AllowAnonymous]
  609. public async Task<OpenResponse> GetNoticeListByPage([FromForm] GetNoticeReceiveDto dto)
  610. {
  611. //密钥验证
  612. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
  613. if (accountDto is null || accountDto.IsCheckAccount == false)
  614. {
  615. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  616. new()
  617. {
  618. msg = "密钥错误",
  619. code = "-900",
  620. data = ""
  621. } };
  622. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  623. }
  624. string type = "1";
  625. if (accountDto.PlatformSource == "ConvergenceMedia")
  626. {
  627. type = "6";
  628. }
  629. if (accountDto.PlatformSource == "IYIBIN")
  630. {
  631. switch (dto.CType)
  632. {
  633. case "1":
  634. case "5":
  635. case "6":
  636. type = dto.CType;
  637. break;
  638. default:
  639. type = "6";
  640. break;
  641. }
  642. }
  643. GetBulletinListDto getBulletinListDto = new GetBulletinListDto()
  644. {
  645. PushRanges = "2",
  646. BulletinTypeId = type,
  647. PageIndex = dto.CurrentPage,
  648. PageSize = dto.PageSize
  649. };
  650. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<PagedDto<BulletinDto>>>("api/v1/DataSharing/query_bulletin_list",
  651. "Post", System.Text.Json.JsonSerializer.Serialize(getBulletinListDto));
  652. int nPageCount = 0;
  653. List<GetNoticeReceiveDataListDto> listData = [];
  654. if (result != null && result.code == 0)
  655. {
  656. if (result.result.Items != null && result.result.Items.Count > 0)
  657. {
  658. //计算总页数
  659. nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(result.result.Total) / dto.PageSize));
  660. int rowID = 0;
  661. foreach (var item in result.result.Items)
  662. {
  663. rowID++;
  664. listData.Add(new GetNoticeReceiveDataListDto()
  665. {
  666. Page = ((dto.CurrentPage - 1) * dto.PageSize) + rowID + "",
  667. NoticeID = item.Id,
  668. NoticeTypeName = item.BulletinTypeName,
  669. NoticeTitle = item.Title,
  670. NoticeBMName = item.SourceOrgName,
  671. NoticeCreateDate = item.BulletinTime.Value.ToString("yyyy-MM-dd HH:mm:ss"),
  672. });
  673. }
  674. }
  675. }
  676. //处理返回
  677. List<Share.Dtos.YiBin.ConvergenceMedia.GetNoticeReceiveDataDto> dataDto = new()
  678. {
  679. new(){PageCount = nPageCount,
  680. data = listData }
  681. };
  682. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<Share.Dtos.YiBin.ConvergenceMedia.GetNoticeReceiveDataDto>>.Success(dataDto, "成功"));
  683. }
  684. /// <summary>
  685. ///2.8 获取详情,修改阅读次数---1
  686. /// </summary>
  687. /// <param name="dto"></param>
  688. /// <returns></returns>
  689. [AllowAnonymous]
  690. [HttpPost("NoticeDetail")]
  691. public async Task<OpenResponse> GetArticleDetails([FromForm] MediaArticleIdDto dto)
  692. {
  693. //密钥验证
  694. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
  695. if (accountDto is null || accountDto.IsCheckAccount == false)
  696. {
  697. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  698. new()
  699. {
  700. msg = "密钥错误",
  701. code = "-900",
  702. data = ""
  703. } };
  704. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  705. }
  706. GetOrderDetailDto getOrder = new GetOrderDetailDto()
  707. {
  708. Id = dto.NoticeID
  709. };
  710. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<BulletinDto>>("api/v1/DataSharing/get_bulletin_detail",
  711. "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
  712. MediaArticleDetailsDto detailsDto = new();
  713. if (result != null && result.code == 0)
  714. {
  715. if (result.result != null)
  716. {
  717. detailsDto.NoticeID = result.result.Id;
  718. detailsDto.NoticeTypeName = result.result.BulletinTypeName;
  719. detailsDto.NoticeTitle = result.result.Title;
  720. detailsDto.NoticeBMName = result.result.SourceOrgName;
  721. detailsDto.NoticeCreateDate = result.result.BulletinTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  722. detailsDto.NoticeRCount = result.result.ReadedNum;
  723. detailsDto.NoticeContent = result.result.Content;
  724. }
  725. }
  726. List<MediaArticleDetailsDto> dataDto = new() { detailsDto };
  727. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<MediaArticleDetailsDto>>.Success(dataDto, "成功"));
  728. }
  729. /// <summary>
  730. /// 7.今日统计---1
  731. /// </summary>
  732. /// <param name="Code"></param>
  733. /// <returns></returns>
  734. [AllowAnonymous]
  735. [HttpPost("GetDayCount")]
  736. public async Task<OpenResponse> GetDayCount([FromForm] string Code)
  737. {
  738. //验证密钥
  739. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(Code, HttpContext.RequestAborted);
  740. if (accountDto is null || accountDto.IsCheckAccount == false)
  741. {
  742. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  743. new()
  744. {
  745. msg = "密钥错误",
  746. code = "-900",
  747. data = ""
  748. } };
  749. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  750. }
  751. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<GetDayCountResponse>>("api/v1/DataSharing/get_day_count",
  752. "Post", "");
  753. List<GetDayCountResponse> data = new List<GetDayCountResponse>();
  754. if (result != null && result.code == 0)
  755. {
  756. if (result.result != null)
  757. {
  758. data.Add(result.result);
  759. }
  760. }
  761. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetDayCountResponse>>.Success(data, "成功"));
  762. }
  763. /// <summary>
  764. /// 3.1、工单查询
  765. /// </summary>
  766. /// <returns></returns>
  767. [HttpPost("GetOrderDetailByFlowID")]
  768. [AllowAnonymous]
  769. public async Task<OpenResponse> GetOrderDetailByFlowID([FromForm] IYBReceiveDto dto)
  770. {
  771. //验证密钥
  772. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
  773. if (accountDto is null || accountDto.IsCheckAccount == false)
  774. {
  775. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  776. new()
  777. {
  778. msg = "密钥错误",
  779. code = "-900",
  780. data = ""
  781. } };
  782. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  783. }
  784. //验证数据
  785. string strResult = dto.Validate();
  786. if (!string.IsNullOrEmpty(strResult))
  787. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo(strResult), "0", "失败"));
  788. GetOrderDetailDto getOrder = new()
  789. {
  790. Id = dto.FlowID
  791. };
  792. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<PublishDto>>("api/v1/DataSharing/get_order_detail_by_id",
  793. "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
  794. List<MediaOrderDetailDataDto> items = new();
  795. if (result != null && result.code == 0)
  796. {
  797. if (result.result != null)
  798. {
  799. var item = result.result;
  800. items.Add(new()
  801. {
  802. FlowID = item.Id,
  803. FlowCode = item.No,
  804. FlowTitle = item.Title,
  805. FlowFromName = item.SourceChannel,
  806. FlowPurTypeName = item.AcceptType,
  807. FlowConTypeName = item.HotspotName,
  808. FlowAddDate = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
  809. FlowLKName = item.FromName,
  810. FlowBMName = item.ActualHandleOrgName,
  811. FlowRSFlagName = item.Status >= EOrderStatus.Filed ? "办理完成" : "办理中",
  812. FlowContent = item.Content,
  813. FlowResult = item.ActualOpinion,
  814. PubDate = item.PublishTime.HasValue == true ? item.PublishTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
  815. OrderFiles = GetOrderFiles(item.FileJson),
  816. });
  817. }
  818. }
  819. if (items == null || items.Count == 0)
  820. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo("编号、密码错误!"), "0", "失败"));
  821. else
  822. return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<MediaOrderDetailDataDto>>.Success(_mapper.Map<IReadOnlyList<MediaOrderDetailDataDto>>(items), "成功"));
  823. }
  824. /// <summary>
  825. /// 附件详情地址---1
  826. /// </summary>
  827. [HttpPost("GetFileAll")]
  828. [AllowAnonymous]
  829. public async Task<OpenResponse> GetFileAll([FromForm] IYBGetFilesDto dto)
  830. {
  831. //验证密钥
  832. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
  833. if (accountDto is null || accountDto.IsCheckAccount == false)
  834. {
  835. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  836. new()
  837. {
  838. msg = "密钥错误",
  839. code = "-900",
  840. data = ""
  841. } };
  842. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  843. }
  844. //验证数据
  845. string strResult = dto.Validate();
  846. if (!string.IsNullOrEmpty(strResult))
  847. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo(strResult), "0", "失败"));
  848. GetOrderDetailDto getOrder = new GetOrderDetailDto()
  849. {
  850. Id = dto.FlowID
  851. };
  852. OrderDto orderdt = new();
  853. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<OrderDto>>("api/v1/DataSharing/get_order_detail_by_no_pwd",
  854. "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
  855. if (result != null && result.code == 0)
  856. {
  857. if (result.result != null)
  858. {
  859. orderdt = result.result;
  860. }
  861. }
  862. if (orderdt == null)
  863. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo("编号错误!"), "0", "失败"));
  864. else
  865. {
  866. List<GetFiles> getFiles = [];
  867. if (orderdt.FileJson != null && orderdt.FileJson.Count > 0)
  868. {
  869. getFiles = GetOrderFiles(orderdt.FileJson);
  870. }
  871. return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<GetFiles>>.Success(_mapper.Map<List<GetFiles>>(getFiles), "成功"));
  872. }
  873. }
  874. /// <summary>
  875. /// 5、答复公开--增加区域---1
  876. /// </summary>
  877. /// <returns></returns>
  878. [HttpPost("GetOrderByListOpenArea")]
  879. [AllowAnonymous]
  880. public async Task<OpenResponse> GetOrderByListOpenArea([FromForm] GetOrderByListOpenAreaDto dto)
  881. {
  882. //密钥验证
  883. var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
  884. if (accountDto is null || accountDto.IsCheckAccount == false)
  885. {
  886. List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
  887. new()
  888. {
  889. msg = "密钥错误",
  890. code = "-900",
  891. data = ""
  892. } };
  893. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
  894. }
  895. //数据处理
  896. string acceptTypeCode = "";
  897. acceptTypeCode = dto.PurTypeID switch
  898. {
  899. "17" => "10",
  900. "18" => "30",
  901. "19" => "35",
  902. "20" => "20",
  903. "21" => "15",
  904. "25" => "40",
  905. _ => "",
  906. };
  907. string areaCode = "";
  908. switch (dto.AreaID)
  909. {
  910. case "2":
  911. areaCode = "511504";
  912. break;
  913. case "3":
  914. areaCode = "511503";
  915. break;
  916. case "4":
  917. areaCode = "511504";
  918. break;
  919. case "5":
  920. areaCode = "511524";
  921. break;
  922. case "6":
  923. areaCode = "511528";
  924. break;
  925. case "7":
  926. areaCode = "511526";
  927. break;
  928. case "8":
  929. areaCode = "511525";
  930. break;
  931. case "9":
  932. areaCode = "511527";
  933. break;
  934. case "10":
  935. areaCode = "511523";
  936. break;
  937. case "11":
  938. areaCode = "511529";
  939. break;
  940. case "12":
  941. areaCode = "511504";
  942. break;
  943. default:
  944. break;
  945. }
  946. int pageIndex = string.IsNullOrEmpty(dto.CurrentPage) == true ? 1 : Convert.ToInt32(dto.CurrentPage);
  947. int pageSize = string.IsNullOrEmpty(dto.PageSize) == true ? 1 : Convert.ToInt32(dto.PageSize);
  948. GetOrderList getOrder = new GetOrderList()
  949. {
  950. Title = dto.Title,
  951. AcceptTypeCode = acceptTypeCode,
  952. StartTime = string.IsNullOrEmpty(dto.StartDate) == true ? null : Convert.ToDateTime(dto.StartDate),
  953. EndTime = string.IsNullOrEmpty(dto.EndDate) == true ? null : Convert.ToDateTime(dto.EndDate).AddDays(1),
  954. PageIndex = pageIndex,
  955. PageSize = pageSize,
  956. AreaCode = areaCode
  957. };
  958. var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<PagedDto<PublishDto>>>("api/v1/DataSharing/get_order_list_publish",
  959. "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
  960. int nPageCount = 0;
  961. List<GetOrderMediaDataListDto> listData = [];
  962. if (result != null && result.code == 0)
  963. {
  964. if (result.result.Items != null && result.result.Items.Count > 0)
  965. {
  966. //计算总页数
  967. nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(result.result.Total) /pageSize));
  968. int rowID = 0;
  969. foreach (var item in result.result.Items)
  970. {
  971. rowID++;
  972. listData.Add(new GetOrderMediaDataListDto()
  973. {
  974. RowID = ((pageIndex - 1) * pageSize) + rowID + "",
  975. FlowID = item.Id,
  976. Code = item.No,
  977. Title = item.Title,
  978. AddDate = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
  979. FromName = item.SourceChannel,
  980. PurTypeName = item.AcceptType,
  981. ResultState = item.Status >= EOrderStatus.Filed ? "办理完成" : "办理中",
  982. PubDate = item.PublishTime.HasValue == true ? item.PublishTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
  983. });
  984. }
  985. }
  986. }
  987. //返回数据处理
  988. List<GetOrderMediaDataDto> dataDto = new()
  989. {
  990. new(){ PageCount = nPageCount,
  991. data = listData
  992. }
  993. };
  994. return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetOrderMediaDataDto>>.Success(dataDto, "成功"));
  995. }
  996. #region 私有方法-将文件转化为文件流
  997. /// <summary>
  998. /// 组装附件参数
  999. /// </summary>
  1000. /// <param name="fileJson"></param>
  1001. /// <returns></returns>
  1002. private List<GetFiles> GetOrderFiles(List<FileJson> fileJson)
  1003. {
  1004. var businessFile = _channelConfigurationManager.GetConfigurationBusinessFile();
  1005. var baseUrl = businessFile.BaseUrl.Remove(businessFile.BaseUrl.Length - 1);
  1006. List<GetFiles> getFiles = [];
  1007. if (fileJson != null && fileJson.Count > 0)
  1008. {
  1009. foreach (var item in fileJson)
  1010. {
  1011. GetFiles files = new()
  1012. {
  1013. FileID = item.FileId,
  1014. FileName = item.FileName + "." + item.FileType,
  1015. FileContent = baseUrl + item.Path
  1016. };
  1017. getFiles.Add(files);
  1018. }
  1019. }
  1020. return getFiles;
  1021. }
  1022. private string GetChannelCode(string platformSource)
  1023. {
  1024. var sourceChannelCode = "";
  1025. switch (platformSource)
  1026. {
  1027. case "ConvergenceMedia":
  1028. sourceChannelCode = "YBRMT";
  1029. break;
  1030. case "IYIBIN":
  1031. sourceChannelCode = "IYB";
  1032. break;
  1033. default:
  1034. break;
  1035. }
  1036. return sourceChannelCode;
  1037. }
  1038. /// <summary>
  1039. /// 将文件流上传到附件服务器
  1040. /// </summary>
  1041. /// <param name="file"></param>
  1042. /// <returns></returns>
  1043. private async Task<BusinessFileDto> SendFileData(IFormFile file)
  1044. {
  1045. var businessFile = _channelConfigurationManager.GetConfigurationBusinessFile();
  1046. // 文件名称
  1047. string fileName = file.FileName;
  1048. // 文件内容字节数据
  1049. using var memoryStream = new MemoryStream();
  1050. await file.CopyToAsync(memoryStream);
  1051. memoryStream.Seek(0, SeekOrigin.Begin);
  1052. byte[] fileContentBytes = memoryStream.ToArray();
  1053. // 构造字典文件数据
  1054. // 接口参数名称为files
  1055. CFormUpload.FileParameter fileParameter = new CFormUpload.FileParameter("fileData", fileContentBytes, fileName, "multipart/form-data");
  1056. Dictionary<string, object> dicParam = new()
  1057. {
  1058. { fileName, fileParameter }
  1059. };
  1060. string url = string.Format("{0}{1}?source={2}", businessFile.BaseUrl, businessFile.UploadUrlAddress, businessFile.Source);
  1061. var result = CFormUpload.MultipartFormDataPost(url, null, dicParam, "");
  1062. if (!string.IsNullOrEmpty(result))
  1063. {
  1064. var resultData = Newtonsoft.Json.JsonConvert.DeserializeObject<BusinessFileResponse>(result);
  1065. if (resultData != null && resultData.code == 0)
  1066. {
  1067. return resultData.result;
  1068. }
  1069. }
  1070. return new BusinessFileDto();
  1071. }
  1072. #endregion
  1073. }
  1074. }