using Aop.Api.Domain; using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.FriendlyException; using Furion.HttpRemote; using Mapster; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.UserServer.Application { /// /// 支付宝资金二级商户KYB代进件 /// public class AlipayFundExpandindirectCreateCommandHandler( AlipayUtils alipayUtils, IHttpRemoteService httpRemoteService, IRepository rep ) : IRequestHandler { private readonly AlipayUtils alipayUtils = alipayUtils; private readonly IHttpRemoteService httpRemoteService = httpRemoteService; private readonly IRepository rep = rep; /// /// 支付宝资金二级商户KYB代进件 /// /// /// /// public async Task Handle(AlipayFundExpandindirectCreateCommand request, CancellationToken cancellationToken) { AlipayFundExpandindirectOrder? entity; if (request.Id.HasValue) { entity = await rep.AsQueryable() .Where(it => it.Id == request.Id) .FirstOrDefaultAsync(cancellationToken); if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "代进件单"); } else { entity = new AlipayFundExpandindirectOrder(); } if (request.SceneImageOssUrl.IsNotNull() && entity.SceneImageOssUrl != request.SceneImageOssUrl) { var url = AliyunOSSUtils.GetUrl(request.SceneImageOssUrl); var bytes = await httpRemoteService.GetAsByteArrayAsync(url); var imageType = url.Substring(url.LastIndexOf(".") + 1); var fileName = url.Substring(url.LastIndexOf("/") + 1); entity.SceneImage = alipayUtils.FundExpandindirectImageUpload(new Aop.Api.Request.AlipayFundExpandindirectImageUploadRequest { ProductCode = request.ProductCode, BizScene = request.BizScene, ImageType = imageType, ImageContent = new Aop.Api.Util.FileItem(fileName, bytes) }).ImageId; } if (request.SceneQualificationText.IsNotNull()) { entity.SceneQualificationImage = request.SceneQualificationText; } else if (request.SceneQualificationImageOssUrl.IsNotNull() && entity.SceneQualificationImageOssUrl != request.SceneQualificationImageOssUrl) { var url = AliyunOSSUtils.GetUrl(request.SceneQualificationImageOssUrl); var bytes = await httpRemoteService.GetAsByteArrayAsync(url); var imageType = url.Substring(url.LastIndexOf(".") + 1); var fileName = url.Substring(url.LastIndexOf("/") + 1); entity.SceneQualificationImage = alipayUtils.FundExpandindirectImageUpload(new Aop.Api.Request.AlipayFundExpandindirectImageUploadRequest { ProductCode = request.ProductCode, BizScene = request.BizScene, ImageType = imageType, ImageContent = new Aop.Api.Util.FileItem(fileName, bytes) }).ImageId; } entity.Sites = request.SitesInfo.ToJson(); request.Adapt(entity); if (request.Id.HasValue) { await rep.UpdateAsync(entity); } else { await rep.InsertAsync(entity); } var result = alipayUtils.FundExpandindirectCreate(entity.Adapt()); return entity.Id; } } }