|
@@ -1,11 +1,12 @@
|
|
|
-using DotNetCore.CAP;
|
|
|
-using Fw.Utility.UnifyResponse;
|
|
|
-using Hotline.DataSharing;
|
|
|
+using Hotline.DataSharing;
|
|
|
using Hotline.DataSharing.ConvergenceMedia;
|
|
|
using Hotline.DataSharing.Order;
|
|
|
+using Hotline.DataSharing.Province;
|
|
|
using Hotline.DataSharing.Province.Notifications;
|
|
|
using Hotline.Share.Dtos.DataSharing;
|
|
|
using Hotline.Share.Dtos.DataSharing.ConvergenceMedia;
|
|
|
+using Hotline.Share.Dtos.DataSharing.Province;
|
|
|
+using Hotline.Share.Dtos.File;
|
|
|
using Hotline.Share.Dtos.Order;
|
|
|
using Hotline.Share.Enums.DataSharing;
|
|
|
using Hotline.Share.Enums.Order;
|
|
@@ -170,11 +171,13 @@ namespace Hotline.Api.Controllers.DataSharing
|
|
|
data.Address = "四川省宜宾市" + areaName;
|
|
|
|
|
|
//调用工单创建接口
|
|
|
- var result = await _mediator.Send(new ReceiveOrderNotify { AddOrderDto = data }, HttpContext.RequestAborted);
|
|
|
+ var result = await _mediator.Send(new ReceiveOrderNotify { AddOrderDto = data, Files = new List<FileDto>() }, HttpContext.RequestAborted);
|
|
|
if (result != null && !string.IsNullOrEmpty(result.Id))
|
|
|
{
|
|
|
dto.Id = id;
|
|
|
dto.OrderId = result.Id;
|
|
|
+ dto.Password = result.Password;
|
|
|
+ dto.OrderNo = result.No;
|
|
|
await _mediaDataReceiveRepository.UpdateAsync(dto, HttpContext.RequestAborted);
|
|
|
return OpenResponse.Ok(ConvergenceMediaDeResponse<WriteOrderResponseDto>.Success(new WriteOrderResponseDto() { AcceptCode = result.No, AcceptPwd = result.Password, msg = "写信成功", Code = "1" }, "您已成功提交数据!"));
|
|
|
}
|
|
@@ -447,7 +450,7 @@ namespace Hotline.Api.Controllers.DataSharing
|
|
|
return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<GetOrderByRunDataDto>>.Failed(null, "0", strResult));
|
|
|
|
|
|
//验证信件是否存在
|
|
|
- var data = await _dataOrderRepository.GetAsync(p => p.OrderNo == dto.AcceptCode && p.Password == dto.AcceptPwd && p.Source == ESource.ConvergenceMedia.ToString());
|
|
|
+ var data = await _dataOrderRepository.GetAsync(p => p.OrderNo == dto.AcceptCode && p.Password == dto.AcceptPwd && p.Source == ESource.ConvergenceMedia.ToString(), HttpContext.RequestAborted);
|
|
|
if (data != null)
|
|
|
return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<GetOrderByRunDataDto>>.Failed(null, "0", "编号、密码错误!"));
|
|
|
|
|
@@ -472,38 +475,179 @@ namespace Hotline.Api.Controllers.DataSharing
|
|
|
/// <returns></returns>
|
|
|
[HttpPost("WriteFiles")]
|
|
|
[AllowAnonymous]
|
|
|
- public async Task<byte[]> WriteFiles([FromForm] IFormCollection formData)
|
|
|
+ public async Task<OpenResponse> WriteFiles([FromForm] IFormCollection formData)
|
|
|
{
|
|
|
string Code = formData["Code"];
|
|
|
string AcceptCode = formData["AcceptCode"];
|
|
|
string AcceptPwd = formData["AcceptPwd"];
|
|
|
|
|
|
+ //验证密钥
|
|
|
+ var mediaCode = _channelConfigurationManager.GetConfigurationMediaCode();
|
|
|
+ if (mediaCode.MediaCode.ToLower().Trim() != Code.ToLower().Trim())
|
|
|
+ return OpenResponse.Ok(ConvergenceMediaDeResponse<WriteOrderResponseDto>.Failed(null, "-900", "密钥错误"));
|
|
|
+
|
|
|
+ var dataOrder = await _mediaDataReceiveRepository.GetAsync(p => p.OrderNo == AcceptCode && p.Password == AcceptPwd, HttpContext.RequestAborted);
|
|
|
+ if (dataOrder == null)
|
|
|
+ return OpenResponse.Ok(ConvergenceMediaDeResponse<WriteOrderResponseDto>.Failed(null, "0", "编号或者密码错误"));
|
|
|
+
|
|
|
IFormFileCollection files = formData.Files;//等价于Request.Form.Files
|
|
|
- long size = files.Sum(f => f.Length);
|
|
|
- var file = files[0];
|
|
|
|
|
|
- string FileName = file.FileName;
|
|
|
+ List<FileDto> fileDtos = new List<FileDto>();
|
|
|
+
|
|
|
+ foreach (var item in files)
|
|
|
+ {
|
|
|
+ //这里需要上文件服务器上传
|
|
|
+ var businessFileDto = await SendFileData(item);
|
|
|
+
|
|
|
+ string strFileName = item.FileName;
|
|
|
+ string strSuffix = strFileName.LastIndexOf(".") > 0 ? strFileName.Substring(strFileName.LastIndexOf(".")) : "";
|
|
|
+ fileDtos.Add(new FileDto()
|
|
|
+ {
|
|
|
+ Name = item.FileName,
|
|
|
+ Type = strSuffix,
|
|
|
+ Classify = "受理上传",
|
|
|
+ Additions = businessFileDto.id,
|
|
|
+ Path = businessFileDto.path
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ //组装工单数据
|
|
|
+ AddOrderDto data = new()
|
|
|
+ {
|
|
|
+ Title = dataOrder.Title,
|
|
|
+ FromName = dataOrder.LinkName,
|
|
|
+ Contact = dataOrder.Mobile,
|
|
|
+ Address = dataOrder.Address,
|
|
|
+ Content = dataOrder.Content,
|
|
|
+ IsSecret = dataOrder.Secrecy == 0 ? false : true,
|
|
|
+ Source = ESource.ConvergenceMedia,
|
|
|
+ FromGender = dataOrder.Gender switch
|
|
|
+ {
|
|
|
+ "1" => EGender.Male,
|
|
|
+ "2" => EGender.Female,
|
|
|
+ _ => EGender.Unknown,
|
|
|
+ }
|
|
|
+ };
|
|
|
+ switch (dataOrder.PurTypeName)
|
|
|
+ {
|
|
|
+ case 17:
|
|
|
+ data.AcceptType = "咨询";
|
|
|
+ data.AcceptTypeCode = "10";
|
|
|
+ break;
|
|
|
+ case 18:
|
|
|
+ data.AcceptType = "举报";
|
|
|
+ data.AcceptTypeCode = "30";
|
|
|
+ break;
|
|
|
+ case 19:
|
|
|
+ data.AcceptType = "投诉";
|
|
|
+ data.AcceptTypeCode = "35";
|
|
|
+ break;
|
|
|
+ case 20:
|
|
|
+ data.AcceptType = "求助";
|
|
|
+ data.AcceptTypeCode = "20";
|
|
|
+ break;
|
|
|
+ case 21:
|
|
|
+ data.AcceptType = "建议";
|
|
|
+ data.AcceptTypeCode = "15";
|
|
|
+ break;
|
|
|
+ case 25:
|
|
|
+ data.AcceptType = "其他";
|
|
|
+ data.AcceptTypeCode = "40";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ data.AcceptType = "其他";
|
|
|
+ data.AcceptTypeCode = "40";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ string areaName = "";
|
|
|
+ switch (dataOrder.AreaID)
|
|
|
+ {
|
|
|
+ case 2:
|
|
|
+ data.AreaCode = "511504"; areaName = "叙州区";
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ data.AreaCode = "511503"; areaName = "翠屏区";
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ data.AreaCode = "511504"; areaName = "南溪区";
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ data.AreaCode = "511524"; areaName = "长宁县";
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ data.AreaCode = "511528"; areaName = "兴文县";
|
|
|
+ break;
|
|
|
+ case 7:
|
|
|
+ data.AreaCode = "511526"; areaName = "珙县";
|
|
|
+ break;
|
|
|
+ case 8:
|
|
|
+ data.AreaCode = "511525"; areaName = "高县";
|
|
|
+ break;
|
|
|
+ case 9:
|
|
|
+ data.AreaCode = "511527"; areaName = "筠连县";
|
|
|
+ break;
|
|
|
+ case 10:
|
|
|
+ data.AreaCode = "511523"; areaName = "江安县";
|
|
|
+ break;
|
|
|
+ case 11:
|
|
|
+ data.AreaCode = "511529"; areaName = "屏山县";
|
|
|
+ break;
|
|
|
+ case 12:
|
|
|
+ data.AreaCode = "511504"; areaName = "叙州区";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ data.Address = "四川省宜宾市" + areaName;
|
|
|
+ var result = await _mediator.Send(new ReceiveOrderNotify { AddOrderDto = data, Files = new List<FileDto>() }, HttpContext.RequestAborted);
|
|
|
|
|
|
- var stream = file.OpenReadStream();
|
|
|
- byte[] ByteFile = i_StreamToBytes(stream);
|
|
|
- return ByteFile;
|
|
|
+ return OpenResponse.Ok(ConvergenceMediaDeResponse<WriteOrderResponseDto>.Success(null, "上传成功"));
|
|
|
}
|
|
|
|
|
|
|
|
|
#region 私有方法-将文件转化为文件流
|
|
|
+
|
|
|
/// <summary>
|
|
|
- /// 将文件转化为文件流
|
|
|
+ /// 将文件流上传到附件服务器
|
|
|
/// </summary>
|
|
|
- /// <param name="stream"></param>
|
|
|
+ /// <param name="file"></param>
|
|
|
/// <returns></returns>
|
|
|
- private byte[] i_StreamToBytes(Stream stream)
|
|
|
+ private async Task<BusinessFileDto> SendFileData(IFormFile file)
|
|
|
{
|
|
|
- byte[] bytes = new byte[stream.Length];
|
|
|
- stream.Read(bytes, 0, bytes.Length);
|
|
|
- // 设置当前流的位置为流的开始
|
|
|
- stream.Seek(0, SeekOrigin.Begin);
|
|
|
- return bytes;
|
|
|
+ var businessFile = _channelConfigurationManager.GetConfigurationBusinessFile();
|
|
|
+ // 文件名称
|
|
|
+ string fileName = file.FileName;
|
|
|
+
|
|
|
+ // 文件内容字节数据
|
|
|
+ using var memoryStream = new MemoryStream();
|
|
|
+ await file.CopyToAsync(memoryStream);
|
|
|
+ memoryStream.Seek(0, SeekOrigin.Begin);
|
|
|
+ byte[] fileContentBytes = memoryStream.ToArray();
|
|
|
+
|
|
|
+ // 构造字典文件数据
|
|
|
+ // 接口参数名称为files
|
|
|
+ CFormUpload.FileParameter fileParameter = new CFormUpload.FileParameter("fileData", fileContentBytes, fileName, "multipart/form-data");
|
|
|
+
|
|
|
+ Dictionary<string, object> dicParam = new()
|
|
|
+ {
|
|
|
+ { fileName, fileParameter }
|
|
|
+ };
|
|
|
+ string url = string.Format("{0}{1}?source={2}", businessFile.BaseUrl, businessFile.UploadUrlAddress, businessFile.Source);
|
|
|
+ var result = CFormUpload.MultipartFormDataPost(url, null, dicParam, "");
|
|
|
+ if (!string.IsNullOrEmpty(result))
|
|
|
+ {
|
|
|
+ var resultData = Newtonsoft.Json.JsonConvert.DeserializeObject<BusinessFileResponse>(result);
|
|
|
+ if (resultData != null && resultData.code == 0)
|
|
|
+ {
|
|
|
+ return resultData.result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return new BusinessFileDto();
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
#endregion
|
|
|
}
|
|
|
}
|