|
@@ -0,0 +1,163 @@
|
|
|
+using DotNetCore.CAP;
|
|
|
+using Hotline.Share.Dtos.Order;
|
|
|
+using MapsterMapper;
|
|
|
+using Microsoft.AspNetCore.Authorization;
|
|
|
+using Microsoft.AspNetCore.Mvc;
|
|
|
+using Sharing.ConvergenceMedia.Dtos;
|
|
|
+using Sharing.WebCore;
|
|
|
+using XF.Domain.Repository;
|
|
|
+
|
|
|
+namespace Sharing.ConvergenceMedia.Controllers
|
|
|
+{
|
|
|
+ public class ConvergenceMediaController : BaseController
|
|
|
+ {
|
|
|
+ private readonly IMapper _mapper;
|
|
|
+ private readonly ICapPublisher _capPublisher;
|
|
|
+ private readonly IChannelConfigurationManager _channelConfigurationManager;
|
|
|
+ private readonly IRepository<MediaDataReceive> _mediaDataReceiveRepository;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ ///
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="mapper"></param>
|
|
|
+ /// <param name="capPublisher"></param>
|
|
|
+ /// <param name="channelConfigurationManager"></param>
|
|
|
+ /// <param name="mediaDataReceiveRepository"></param>
|
|
|
+ public ConvergenceMediaController(IMapper mapper, ICapPublisher capPublisher, IChannelConfigurationManager channelConfigurationManager, IRepository<MediaDataReceive> mediaDataReceiveRepository)
|
|
|
+ {
|
|
|
+ _mapper = mapper;
|
|
|
+ _capPublisher = capPublisher;
|
|
|
+ _channelConfigurationManager = channelConfigurationManager;
|
|
|
+ _mediaDataReceiveRepository = mediaDataReceiveRepository;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 融媒体写信
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="mediaDataReceiveDto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("WriteOrder")]
|
|
|
+ [AllowAnonymous]
|
|
|
+ public async Task<DeReponse<WriteOrderResponseDto>> WriteOrder([FromBody] MediaDataReceiveDto mediaDataReceiveDto)
|
|
|
+ {
|
|
|
+ // 验证
|
|
|
+ if (mediaDataReceiveDto is null)
|
|
|
+ return DeReponse<WriteOrderResponseDto>.Failed(new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", msg = "数据解析失败", Code = "0" }, "1", "数据解析失败");
|
|
|
+
|
|
|
+ //验证数据
|
|
|
+ string strResult = mediaDataReceiveDto.Validate();
|
|
|
+ if (!string.IsNullOrEmpty(strResult))
|
|
|
+ return DeReponse<WriteOrderResponseDto>.Failed(new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", msg = strResult, Code = "0" }, "1", description: strResult);
|
|
|
+
|
|
|
+ var mediaCode = _channelConfigurationManager.GetConfigurationMediaCode();
|
|
|
+ if (mediaCode.MediaCode.ToLower().Trim() != mediaDataReceiveDto.Code.ToLower().Trim())
|
|
|
+ return DeReponse<WriteOrderResponseDto>.Failed(new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", msg = "密钥错误", Code = "-900" }, "1", "密钥错误");
|
|
|
+
|
|
|
+ //转换数据
|
|
|
+ var dto = _mapper.Map<MediaDataReceive>(mediaDataReceiveDto);
|
|
|
+ //添加数据
|
|
|
+ var id = await _mediaDataReceiveRepository.AddAsync(dto, HttpContext.RequestAborted);
|
|
|
+ if (!string.IsNullOrEmpty(id))
|
|
|
+ {
|
|
|
+ OrderDto data = new()
|
|
|
+ {
|
|
|
+ Title = mediaDataReceiveDto.Title,
|
|
|
+ FromName = mediaDataReceiveDto.LinkName,
|
|
|
+ Contact = mediaDataReceiveDto.Mobile,
|
|
|
+ Address = mediaDataReceiveDto.Address,
|
|
|
+ Content = mediaDataReceiveDto.Content,
|
|
|
+ IsSecret = mediaDataReceiveDto.Secrecy == 0 ? false : true,
|
|
|
+ Source = Hotline.Share.Enums.Order.ESource.ConvergenceMedia,
|
|
|
+ FromGender = mediaDataReceiveDto.Gender switch
|
|
|
+ {
|
|
|
+ "1" => Hotline.Share.Enums.Order.EGender.Male,
|
|
|
+ "2" => Hotline.Share.Enums.Order.EGender.Female,
|
|
|
+ _ => Hotline.Share.Enums.Order.EGender.Unknown,
|
|
|
+ }
|
|
|
+ };
|
|
|
+ switch (mediaDataReceiveDto.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 (mediaDataReceiveDto.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;
|
|
|
+ data.Password = Convert.ToString(DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + "0000").Substring(0, 4);
|
|
|
+
|
|
|
+ //向业务系统推送消息
|
|
|
+ await _capPublisher.PublishAsync(Sharing.Share.Mq.EventNames.SharingOrderCreation, data, cancellationToken: HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return DeReponse<WriteOrderResponseDto>.Success(new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = data.Password, msg = "写信成功", Code = "1" }, "您已成功提交数据!");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ return DeReponse<WriteOrderResponseDto>.Failed(new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", msg = "接口调用失败", Code = "0" }, "1", description: "接口调用失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+}
|