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
|
{
|
/// <summary>
|
/// 支付宝资金二级商户KYB代进件
|
/// </summary>
|
public class AlipayFundExpandindirectCreateCommandHandler(
|
AlipayUtils alipayUtils,
|
IHttpRemoteService httpRemoteService,
|
IRepository<AlipayFundExpandindirectOrder> rep
|
) :
|
IRequestHandler<AlipayFundExpandindirectCreateCommand, Guid>
|
{
|
private readonly AlipayUtils alipayUtils = alipayUtils;
|
private readonly IHttpRemoteService httpRemoteService = httpRemoteService;
|
private readonly IRepository<AlipayFundExpandindirectOrder> rep = rep;
|
|
/// <summary>
|
/// 支付宝资金二级商户KYB代进件
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public async Task<Guid> 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<AlipayFundExpandindirectCreateModel>());
|
return entity.Id;
|
}
|
}
|
}
|