123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780 |
- using DataSharing.FwDataExchange;
- using DataSharing.RawData;
- using DataSharing.Share.Dtos;
- using DataSharing.Share.Dtos.HotlineSetting;
- using DataSharing.Share.Dtos.YiBin.ConvergenceMedia;
- using DataSharing.Share.Enums;
- using DataSharing.YiBin.ConvergenceMedia;
- using DotNetCore.CAP;
- using Hotline.Share.Dtos.File;
- using Hotline.Share.Dtos.Order;
- using MapsterMapper;
- using MediatR;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- using SqlSugar;
- using XF.Domain.Filters;
- using XF.Domain.Repository;
- namespace DataSharing.Host.Controllers.YiBin
- {
- /// <summary>
- /// 融媒体、I宜宾
- /// </summary>
- public class ConvergenceMediaController : BaseController
- {
- #region 注入
- private readonly IMapper _mapper;
- private readonly IMediator _mediator;
- private readonly ICapPublisher _capPublisher;
- private readonly IChannelConfigurationManager _channelConfigurationManager;
- private readonly IRepository<DsOrder> _dataOrderRepository;
- private readonly IRepository<DsOrderWorkFlow> _dataOrderWorkFlowRepository;
- private readonly IRepository<DsReceiveMediaData> _dsReceiveMediaDataRepository;
- private readonly IRepository<DsBulletin> _bulletinRepository;
- private readonly FwClient _fwClient;
- private readonly IDsUserTokenInfoService _dsUserTokenInfoService;
- /// <summary>
- ///
- /// </summary>
- /// <param name="mapper"></param>
- /// <param name="mediator"></param>
- /// <param name="capPublisher"></param>
- /// <param name="channelConfigurationManager"></param>
- /// <param name="dataOrderRepository"></param>
- /// <param name="dataOrderWorkFlowRepository"></param>
- /// <param name="dsReceiveMediaDataRepository"></param>
- /// <param name="bulletinRepository"></param>
- /// <param name="fwClient"></param>
- /// <param name="dsUserTokenInfoService"></param>
- public ConvergenceMediaController(IMapper mapper, IMediator mediator,
- ICapPublisher capPublisher,
- IChannelConfigurationManager channelConfigurationManager,
- IRepository<DsOrder> dataOrderRepository,
- IRepository<DsOrderWorkFlow> dataOrderWorkFlowRepository,
- IRepository<DsReceiveMediaData> dsReceiveMediaDataRepository,
- IRepository<DsBulletin> bulletinRepository,
- FwClient fwClient,
- IDsUserTokenInfoService dsUserTokenInfoService)
- {
- _mapper = mapper;
- _mediator = mediator;
- _capPublisher = capPublisher;
- _channelConfigurationManager = channelConfigurationManager;
- _dataOrderRepository = dataOrderRepository;
- _dataOrderWorkFlowRepository = dataOrderWorkFlowRepository;
- _dsReceiveMediaDataRepository = dsReceiveMediaDataRepository;
- _bulletinRepository = bulletinRepository;
- _fwClient = fwClient;
- _dsUserTokenInfoService = dsUserTokenInfoService;
- }
- #endregion
- /// <summary>
- /// 2.1融媒体写信
- /// </summary>
- /// <param name="mediaDataReceiveDto"></param>
- /// <returns></returns>
- [HttpPost("WriteOrder")]
- [AllowAnonymous]
- public async Task<OpenResponse> WriteOrder([FromForm] MediaDataReceiveDto mediaDataReceiveDto)
- {
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(mediaDataReceiveDto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<WriteOrderResponseDto> responseDtos = new()
- {
- new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", msg = "密钥错误", Code = "-900" }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Failed(responseDtos, "0", "密钥错误"));
- }
- //验证数据
- string strResult = mediaDataReceiveDto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- {
- List<WriteOrderResponseDto> responseDtos = new()
- {
- new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", msg = strResult, Code = "0" }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Failed(responseDtos, "0", description: strResult));
- }
- //写入原始数据
- DsReceiveMediaData dsReceiveMediaData = new()
- {
- ServiceInterface = "WriteOrder",
- PlatformsName = accountDto.PlatformSourceName,
- ReceiveData = System.Text.Json.JsonSerializer.Serialize(mediaDataReceiveDto)
- };
- dsReceiveMediaData.Id = await _dsReceiveMediaDataRepository.AddAsync(dsReceiveMediaData, HttpContext.RequestAborted);
- AddOrderDto data = new()
- {
- Title = mediaDataReceiveDto.Title,
- FromName = mediaDataReceiveDto.LinkName,
- Contact = mediaDataReceiveDto.Mobile,
- FullAddress = mediaDataReceiveDto.Address,
- Content = mediaDataReceiveDto.Content,
- IsSecret = mediaDataReceiveDto.Secrecy == 0 ? false : true,
- Source = (Hotline.Share.Enums.Order.ESource)Enum.Parse(typeof(Hotline.Share.Enums.Order.ESource), accountDto.PlatformSource),
- FromGender = mediaDataReceiveDto.Gender 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()
- };
- switch (accountDto.PlatformSource)
- {
- case "ConvergenceMedia":
- data.SourceChannel = "宜宾融媒体";
- data.SourceChannelCode = "YBRMT";
- break;
- case "IYIBIN":
- data.SourceChannel = "i宜宾";
- data.SourceChannelCode = "IYB";
- break;
- default:
- break;
- }
- switch (mediaDataReceiveDto.PurTypeID)
- {
- 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;
- //调用工单创建接口
- 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<WriteOrderResponseDto> responseDtos = new()
- {
- new WriteOrderResponseDto() { AcceptCode = result.result.no, AcceptPwd = result.result.password, msg = "写信成功", Code = "1" }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Success(responseDtos, "您已成功提交数据!"));
- }
- else
- {
- List<WriteOrderResponseDto> responseDtos = new()
- {
- new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", msg = "接口调用失败", Code = "0" }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Failed(responseDtos, "0", description: "接口调用失败!"));
- }
- }
- /// <summary>
- /// 2.2工单列表
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost("GetOrderByList")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetOrderByList([FromForm] GetOrderMediaReceiveDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //数据处理
- string AcceptTypeCode = "";
- AcceptTypeCode = dto.PurTypeID switch
- {
- 17 => "10",
- 18 => "30",
- 19 => "35",
- 20 => "20",
- 21 => "15",
- 25 => "40",
- _ => "",
- };
- //数据查询
- RefAsync<int> total = 0;
- var items = await _dataOrderRepository
- .Queryable()
- //.Where(p => p.Source == Hotline.Share.Enums.Order.ESource.ConvergenceMedia.ToString())
- .Where(p => p.Source == accountDto.PlatformSource)
- .WhereIF(!string.IsNullOrEmpty(dto.AcceptCode), p => p.OrderNo.Contains(dto.AcceptCode))
- .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Title.Contains(dto.Title))
- .WhereIF(!string.IsNullOrEmpty(dto.Mobile), p => p.Contact.Contains(dto.Mobile))
- .WhereIF(!string.IsNullOrEmpty(AcceptTypeCode), p => p.CaseTypeCode == AcceptTypeCode)
- .WhereIF(!string.IsNullOrEmpty(dto.StartDate), p => p.CaseDate >= Convert.ToDateTime(dto.StartDate))
- .WhereIF(!string.IsNullOrEmpty(dto.EndDate), p => p.CaseDate < Convert.ToDateTime(dto.EndDate).AddDays(1))
- .Select(it => new
- {
- FlowID = it.Id,
- RowID = SqlFunc.RowNumber($"{it.CaseDate} desc "),
- Code = it.OrderNo,
- it.Title,
- AddDate = it.CaseDate,
- FromName = it.CaseSource,
- PurTypeName = it.CaseType,
- ResultState = it.HandleState
- })
- .ToPageListAsync(dto.CurrentPage, dto.PageSize, total);
- //计算总页数
- int nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(total) / dto.PageSize));
- List<GetOrderMediaDataDto> returnData = new()
- {
- //处理返回
- new()
- {
- PageCount = nPageCount,
- data = _mapper.Map<IReadOnlyList<GetOrderMediaDataListDto>>(items)
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetOrderMediaDataDto>>.Success(returnData, "成功"));
- }
- /// <summary>
- /// 2.3 工单查询
- /// </summary>
- /// <returns></returns>
- [HttpPost("GetOrderDetail")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetOrderDetail([FromForm] MediaOrderDetailReceiveDto dto)
- {
- //验证密钥
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //验证数据
- string strResult = dto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo(strResult), "0", "失败"));
- //查询数据
- var items = await _dataOrderRepository
- .Queryable()
- .Where(p => p.OrderNo == dto.AcceptCode)
- .Where(p => p.Password == dto.AcceptPwd)
- .Where(p => p.Source == accountDto.PlatformSource)
- .Select(it => new
- {
- FlowID = it.Id,
- FlowCode = it.OrderNo,
- FlowTitle = it.Title,
- FlowFromName = it.CaseSource,
- FlowPurTypeName = it.CaseType,
- FlowConTypeName = it.HotspotName,
- FlowAddDate = it.CaseDate,
- FlowLKName = it.FromName,
- FlowBMName = it.ActualHandleOrgName,
- FlowRSFlagName = it.HandleState,
- FlowContent = it.Content,
- FlowResult = it.ActualOpinion,
- })
- .ToListAsync();
- if (items == null || items.Count == 0)
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo("编号、密码错误!"), "0", "失败"));
- else
- return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<MediaOrderDetailDataDto>>.Success(_mapper.Map<IReadOnlyList<MediaOrderDetailDataDto>>(items), "成功"));
- }
- /// <summary>
- /// 2.4 今日受理分类统计
- /// </summary>
- /// <param name="Code"></param>
- /// <returns></returns>
- [HttpPost("GetPurTypeReport")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetPurTypeReport([FromForm] string Code)
- {
- //验证密钥
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //数据查询
- var list = await _dataOrderRepository.Queryable()
- .Where(p => p.CaseDate >= Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")))
- .Where(p => p.CaseDate <= Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")))
- .Select(it => new
- {
- it.CaseType,
- it.CaseTypeCode
- })
- .MergeTable()//将查询出来的结果合并成一个新表
- .GroupBy(it => new { it.CaseType, it.CaseTypeCode })//对新表进行分组
- .Select(it => new
- {
- PurTypeName = it.CaseType,
- Count = SqlFunc.AggregateCount(it.CaseTypeCode)
- })
- .ToListAsync();
- var listData = _mapper.Map<List<GetPurTypeReportDataDto>>(list);
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetPurTypeReportDataDto>>.Success(listData, "成功"));
- }
- /// <summary>
- /// 2.5 答复公开
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost("GetOrderByListOpen")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetOrderByListOpen([FromForm] GetOrderMediaReceiveOpenDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //数据处理
- string AcceptTypeCode = "";
- AcceptTypeCode = (object)dto.PurTypeID switch
- {
- 17 => "10",
- 18 => "30",
- 19 => "35",
- 20 => "20",
- 21 => "15",
- 25 => "40",
- _ => "",
- };
- //查询数据
- RefAsync<int> total = 0;
- var items = await _dataOrderRepository
- .Queryable()
- .Where(p => p.IsPublish == EDsPublishState.Open)
- .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Title.Contains(dto.Title))
- .WhereIF(!string.IsNullOrEmpty(AcceptTypeCode), p => p.CaseTypeCode == AcceptTypeCode)
- .WhereIF(!string.IsNullOrEmpty(dto.StartDate), p => p.CaseDate >= Convert.ToDateTime(dto.StartDate).AddDays(-30))
- .WhereIF(!string.IsNullOrEmpty(dto.EndDate), p => p.CaseDate < Convert.ToDateTime(dto.EndDate).AddDays(1))
- .Select(it => new
- {
- FlowID = it.Id,
- RowID = SqlFunc.RowNumber($"{it.CaseDate} desc "),
- Code = it.OrderNo,
- it.Title,
- AddDate = it.CaseDate,
- FromName = it.CaseSource,
- PurTypeName = it.CaseType,
- ResultState = it.HandleState
- })
- .ToPageListAsync(dto.CurrentPage, dto.PageSize, total);
- //计算总页数
- int nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(total) / dto.PageSize));
- //返回数据处理
- List<GetOrderMediaDataDto> dataDto = new()
- {
- new(){ PageCount = nPageCount,
- data = _mapper.Map<IReadOnlyList<GetOrderMediaDataListDto>>(items) }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetOrderMediaDataDto>>.Success(dataDto, "成功"));
- }
- /// <summary>
- /// 2.6 办理明细
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost("GetOrderByRun")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetOrderByRun([FromForm] MediaOrderDetailReceiveDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //验证数据
- string strResult = dto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo(strResult), "0", "失败"));
- //验证信件是否存在
- var data = await _dataOrderRepository.GetAsync(p => p.OrderNo == dto.AcceptCode && p.Password == dto.AcceptPwd && p.Source == accountDto.PlatformSource, HttpContext.RequestAborted);
- if (data == null)
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo("编号、密码错误!"), "0", "失败"));
- //数据查询
- var list = await _dataOrderWorkFlowRepository.Queryable()
- .Where(p => p.OrderId == data.OrderId)
- .Where(p => p.WorkflowId == data.WorkflowId)
- .Select(it => new
- {
- BMName = it.HandlerOrgName,
- TTime = it.StepExpiredTime,
- DisposeDate = it.HandleTime
- })
- .ToListAsync();
- return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<GetOrderByRunDataDto>>.Success(_mapper.Map<IReadOnlyList<GetOrderByRunDataDto>>(list), "成功"));
- }
- /// <summary>
- /// 2.1.3 上传附件
- /// </summary>
- /// <param name="formData"></param>
- /// <returns></returns>
- [HttpPost("WriteFiles")]
- [AllowAnonymous]
- public async Task<OpenResponse> WriteFiles([FromForm] IFormCollection formData)
- {
- string Code = formData["Code"];
- string AcceptCode = formData["AcceptCode"];
- string AcceptPwd = formData["AcceptPwd"];
- //验证密钥
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //验证数据
- if (string.IsNullOrEmpty(AcceptCode) || string.IsNullOrEmpty(AcceptPwd))
- return OpenResponse.Ok(ConvergenceMediaDeResponse<string>.Failed("编号、密码不能为空!", "0", "失败"));
- var dataRaw = await _dsReceiveMediaDataRepository.GetAsync(p => p.OrderCode == AcceptCode, HttpContext.RequestAborted);
- if (dataRaw == null)
- return OpenResponse.Ok(ConvergenceMediaDeResponse<string>.Failed("编号、密码错误!", "0", "失败"));
- IFormFileCollection files = formData.Files;//等价于Request.Form.Files
- List<FileDto> fileDtos = new();
- foreach (var item in files)
- {
- //这里需要上文件服务器上传
- var businessFileDto = await SendFileData(item);
- string strFileName = item.FileName;
- string strSuffix = strFileName.LastIndexOf(".") > 0 ? strFileName.Substring(strFileName.LastIndexOf(".") + 1) : "";
- string strSubFileName = strFileName.LastIndexOf(".") > 0 ? strFileName.Substring(0, strFileName.LastIndexOf(".")) : strFileName;
- fileDtos.Add(new FileDto()
- {
- Name = strSubFileName,
- Type = strSuffix,
- Classify = "受理上传",
- Additions = businessFileDto.id,
- Path = businessFileDto.path
- });
- }
- UpdateOrderFilesDto updateOrderFiles = new()
- {
- Files = fileDtos,
- Id = dataRaw.ExternalId,
- OrderNo = dataRaw.OrderCode
- };
- //推送数据
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientResponse>("api/v1/Order/update-orderfiles", "Post", System.Text.Json.JsonSerializer.Serialize(updateOrderFiles));
- return OpenResponse.Ok(ConvergenceMediaDeResponse<string>.Success("", "上传成功"));
- }
- /// <summary>
- /// 2.7 新闻列表
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost("GetNoticeListByPage")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetNoticeListByPage([FromForm] GetNoticeReceiveDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- int nCurrentPage = 0, nPageSize = 0;
- if (true == string.IsNullOrEmpty(dto.CurrentPage))
- nCurrentPage = 1;
- else
- nCurrentPage = Convert.ToInt32(dto.CurrentPage);
- if (true == string.IsNullOrEmpty(dto.PageSize))
- nPageSize = 10;
- else
- nPageSize = Convert.ToInt32(dto.PageSize);
- switch (dto.CType)
- {
- case "1":
- case "5":
- break;
- case "6":
- dto.CType = "4";
- break;
- default:
- dto.CType = "4";
- break;
- }
- RefAsync<int> total = 0;
- var items = await _bulletinRepository
- .Queryable()
- .Where(p => p.LoseEfficacyTime >= DateTime.Now)
- .Where(p => p.BulletinTypeId == dto.CType)
- .OrderByDescending(p => p.BulletinTime)
- .Select(it => new
- {
- Page = SqlFunc.RowNumber($"{it.BulletinTime} desc "),
- NoticeID = it.Id,
- NoticeTypeName = it.BulletinTypeName,
- NoticeTitle = it.Title,
- NoticeBMName = it.SourceOrgName,
- NoticeCreateDate = it.BulletinTime
- })
- .ToPageListAsync(nCurrentPage, nPageSize, total);
- //计算总页数
- int nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(total) / nPageSize));
- //处理返回
- List<Share.Dtos.YiBin.ConvergenceMedia.GetNoticeReceiveDataDto> dataDto = new()
- {
- new(){PageCount = nPageCount,
- data = _mapper.Map<IReadOnlyList<Share.Dtos.YiBin.ConvergenceMedia.GetNoticeReceiveDataListDto>>(items)}
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<Share.Dtos.YiBin.ConvergenceMedia.GetNoticeReceiveDataDto>>.Success(dataDto, "成功"));
- }
- /// <summary>
- ///2.8 获取详情,修改阅读次数
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [AllowAnonymous]
- [HttpPost("NoticeDetail")]
- public async Task<OpenResponse> GetArticleDetails([FromForm] MediaArticleIdDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- var data = await _bulletinRepository.GetAsync(p => p.Id == dto.NoticeID, HttpContext.RequestAborted);
- MediaArticleDetailsDto detailsDto = new();
- if (data != null)
- {
- data.ReadedNum = data.ReadedNum++;
- await _bulletinRepository.UpdateAsync(data, HttpContext.RequestAborted);
- detailsDto.NoticeID = data.Id;
- detailsDto.NoticeTypeName = data.BulletinTypeName;
- detailsDto.NoticeTitle = data.Title;
- detailsDto.NoticeBMName = data.SourceOrgName;
- detailsDto.NoticeCreateDate = data.BulletinTime;
- detailsDto.NoticeRCount = data.ReadedNum;
- detailsDto.NoticeContent = data.Content;
- }
- List<MediaArticleDetailsDto> dataDto = new() { detailsDto };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<MediaArticleDetailsDto>>.Success(dataDto, "成功"));
- }
- #region 私有方法-将文件转化为文件流
- /// <summary>
- /// 将文件流上传到附件服务器
- /// </summary>
- /// <param name="file"></param>
- /// <returns></returns>
- private async Task<BusinessFileDto> SendFileData(IFormFile file)
- {
- 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
- }
- }
|