123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- using DataSharing.Common;
- using DataSharing.ConvergenceMedia;
- using DataSharing.FwDataExchange;
- using DataSharing.RawData;
- using DataSharing.Share.Dtos;
- using DataSharing.Share.Dtos.Common;
- using DataSharing.Share.Dtos.HotlineSetting;
- using DataSharing.Share.Dtos.OtherPlatformsYB;
- using DotNetCore.CAP;
- using MapsterMapper;
- using MediatR;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- using XF.Domain.Filters;
- using XF.Domain.Repository;
- namespace DataSharing.Host.Controllers
- {
- /// <summary>
- /// 智慧宜宾
- /// </summary>
- public class OtherPlatformsYBController : BaseDataController
- {
- private readonly IMapper _mapper;
- private readonly IMediator _mediator;
- private readonly ICapPublisher _capPublisher;
- private readonly IRepository<DsOrder> _dataOrderRepository;
- private readonly IRepository<DsOrderWorkFlow> _dataOrderWorkFlowRepository;
- private readonly IRepository<DsReceiveMediaData> _dsReceiveMediaDataRepository;
- private readonly IRepository<DsUserTokenInfo> _dsUserTokenInfoRepository;
- private readonly FwClient _fwClient;
- /// <summary>
- ///
- /// </summary>
- /// <param name="mapper"></param>
- /// <param name="mediator"></param>
- /// <param name="capPublisher"></param>
- /// <param name="dataOrderRepository"></param>
- /// <param name="dataOrderWorkFlowRepository"></param>
- /// <param name="dsReceiveMediaDataRepository"></param>
- /// <param name="dsUserTokenInfoRepository"></param>
- /// <param name="fwClient"></param>
- public OtherPlatformsYBController(IMapper mapper, IMediator mediator,
- ICapPublisher capPublisher,
- IRepository<DsOrder> dataOrderRepository,
- IRepository<DsOrderWorkFlow> dataOrderWorkFlowRepository,
- IRepository<DsReceiveMediaData> dsReceiveMediaDataRepository,
- IRepository<DsUserTokenInfo> dsUserTokenInfoRepository,
- FwClient fwClient)
- {
- _mapper = mapper;
- _mediator = mediator;
- _capPublisher = capPublisher;
- _dataOrderRepository = dataOrderRepository;
- _dataOrderWorkFlowRepository = dataOrderWorkFlowRepository;
- _dsReceiveMediaDataRepository = dsReceiveMediaDataRepository;
- _dsUserTokenInfoRepository = dsUserTokenInfoRepository;
- _fwClient = fwClient;
- }
- /// <summary>
- /// 2.3.1查询受理类型
- /// </summary>
- /// <param name="strVailCode"></param>
- /// <returns></returns>
- [HttpPost("e_GetTypeID")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetAcceptType([FromForm] string strVailCode)
- {
- var accountDto = await CheckAccountAsync(strVailCode);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("密钥错误", "-900"));
- List<AcceptTypeListDto> acceptTypeListDtos = new()
- {
- new() { Name = "咨询", Value = "10" },
- new() { Name = "建议", Value = "15" },
- new() { Name = "求助", Value = "20" },
- new() { Name = "表扬", Value = "25" },
- new() { Name = "举报", Value = "30" },
- new() { Name = "投诉", Value = "35" },
- new() { Name = "其他", Value = "40" },
- new() { Name = "意见", Value = "1" },
- new() { Name = "惠民帮助", Value = "2" },
- new() { Name = "大气污染举报", Value = "3" }
- };
- return OpenResponse.Ok(OtherPlatformsDeResponse<List<AcceptTypeListDto>>.Success(acceptTypeListDtos));
- }
- /// <summary>
- /// 2.3.2网上写信
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost("e_WriteInfo")]
- [AllowAnonymous]
- public async Task<OpenResponse> WriteInfo([FromForm] AddWriteInfoDto dto)
- {
- var accountDto = await CheckAccountAsync(dto.strVailCode);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("密钥错误", "-900"));
- //验证数据
- string strResult = dto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed(strResult, "0"));
- //写入原始数据
- DsReceiveMediaData dsReceiveMediaData = new()
- {
- ServiceInterface = "e_WriteInfo",
- PlatformsName= accountDto.PlatformSource,
- ReceiveData = System.Text.Json.JsonSerializer.Serialize(dto)
- };
- dsReceiveMediaData.Id = await _dsReceiveMediaDataRepository.AddAsync(dsReceiveMediaData, HttpContext.RequestAborted);
- Hotline.Share.Dtos.Order.AddOrderDto data = new()
- {
- Title = dto.strTitle,
- FromName = dto.strUserName,
- Contact = dto.strPhone,
- FullAddress = dto.strAddress,
- Content = dto.strContent,
- IsSecret = false,
- AcceptTypeCode = dto.strTypeID,
- Source = (Hotline.Share.Enums.Order.ESource)Enum.Parse(typeof(Hotline.Share.Enums.Order.ESource), accountDto.PlatformSource),
- FromGender = dto.strGender switch
- {
- "1" => Hotline.Share.Enums.Order.EGender.Male,
- "2" => Hotline.Share.Enums.Order.EGender.Female,
- _ => Hotline.Share.Enums.Order.EGender.Unknown,
- },
- IdentityType = Hotline.Share.Enums.Order.EIdentityType.Citizen,
- Transpond = false,
- IsEnforcementOrder = false,
- ExternalId = Guid.NewGuid().ToString(),
- };
- data.SourceChannel = "智慧宜宾";
- data.SourceChannelCode = "ZHYB";
- //调用工单创建接口
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientResponse>("api/v1/Order/add-anonymous", "Post", System.Text.Json.JsonSerializer.Serialize(data));
- if (result != null && result.code == 0)
- {
- dsReceiveMediaData.ExternalId = result.result.id;
- dsReceiveMediaData.OrderCode = result.result.no;
- await _dsReceiveMediaDataRepository.UpdateAsync(dsReceiveMediaData, HttpContext.RequestAborted);
- List<WriteInfoReturnDto> returnData = new()
- {
- new WriteInfoReturnDto() { LetterCode = result.result.no, LetterPwd = result.result.password }
- };
- return OpenResponse.Ok(OtherPlatformsDeResponse<List<WriteInfoReturnDto>>.Success(returnData));
- }
- else
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("接口调用失败!", "0"));
- }
- /// <summary>
- /// 2.3.3查询办理进度
- /// </summary>
- /// <param name=""></param>
- /// <returns></returns>
- [HttpPost("e_GetFlowInfo")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetFlowInfo([FromForm] GetFlowDetailDto dto)
- {
- var accountDto = await CheckAccountAsync(dto.strVailCode);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("密钥错误", "-900"));
- //验证数据
- string strResult = dto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed(strResult, "0"));
- var dataOrder = await _dsReceiveMediaDataRepository.GetAsync(p => p.OrderCode == dto.strCode, HttpContext.RequestAborted);
- if (dataOrder == null)
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("编号或密码错误", "0"));
- var data = await _dataOrderRepository.GetAsync(p => p.OrderId == dataOrder.ExternalId, HttpContext.RequestAborted);
- if (data == null)
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("信件正在受理中", "0"));
- var dataFlow = await _dataOrderWorkFlowRepository.Queryable()
- .Where(p => p.OrderId == dataOrder.ExternalId)
- .OrderBy(p => p.CreationTime)
- .ToListAsync();
- var list = _mapper.Map<List<GetFlowInfoReturnDto>>(dataFlow);
- if (list != null && list.Count > 0 && data.HandleState == "办理完成")
- list[list.Count - 1].AcceptEnd = "1";
- return OpenResponse.Ok(OtherPlatformsDeResponse<List<GetFlowInfoReturnDto>>.Success(list));
- }
- /// <summary>
- /// 2.3.4查询办理结果
- /// </summary>
- /// <param name=""></param>
- /// <returns></returns>
- [HttpPost("e_GetFlowDetail")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetFlowDetail([FromForm] GetFlowDetailDto dto)
- {
- var accountDto = await CheckAccountAsync(dto.strVailCode);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("密钥错误", "-900"));
- //验证数据
- string strResult = dto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed(strResult, "0"));
- var dataOrder = await _dsReceiveMediaDataRepository.GetAsync(p => p.OrderCode == dto.strCode, HttpContext.RequestAborted);
- if (dataOrder == null)
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("编号或密码错误", "0"));
- var data = await _dataOrderRepository.GetAsync(p => p.OrderId == dataOrder.ExternalId, HttpContext.RequestAborted);
- if (data == null)
- return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("信件正在受理中", "0"));
- GetFlowDetailReturnDto getFlowDetailReturn = new()
- {
- state = data.HandleState == "办理完成" ? "1" : "0",
- content = data.ActualOpinion,
- AcceptName = data.ActualHandleOrgName,
- AcceptUser = data.ActualHandlerName,
- AcceptDate = data.ActualHandleTime
- };
- return OpenResponse.Ok(OtherPlatformsDeResponse<GetFlowDetailReturnDto>.Success(getFlowDetailReturn));
- }
- /// <summary>
- /// 验证密钥
- /// </summary>
- /// <param name="Code"></param>
- /// <returns></returns>
- private async Task<CheckAccountDto> CheckAccountAsync(string Code)
- {
- CheckAccountDto accountDto = new() { IsCheckAccount = false };
- var data = await _dsUserTokenInfoRepository.GetAsync(p => p.AccountId == Code && p.State == "1", HttpContext.RequestAborted);
- if (data is not null)
- {
- accountDto.PlatformSource = data.PlatformSource;
- accountDto.IsCheckAccount = true;
- return accountDto;
- }
- accountDto.Message = "授权账号或密码验证不通过";
- return accountDto;
- }
- }
- }
|