FlexJobApi.Core/Entities/UserServer/Enterprises/AlipayFundExpandindirectOrder.cs
New file @@ -0,0 +1,102 @@ using Aop.Api.Domain; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; namespace FlexJobApi.Core { /// <summary> /// 资金二级商户KYB代进件单 /// </summary> public class AlipayFundExpandindirectOrder : CommonEntity { /// <summary> /// 产品码 /// </summary> public string ProductCode { get; set; } /// <summary> /// 场景码 /// </summary> public string BizScene { get; set; } /// <summary> /// 外部单号 /// </summary> public string OutBizNo { get; set; } /// <summary> /// 二级商户信息-标识 /// </summary> public string Identity { get; set; } /// <summary> /// 二级商户信息-标识类型 /// </summary> public string IdentityType { get; set; } /// <summary> /// 二级商户信息-姓名 /// </summary> public string Name { get; set; } /// <summary> /// 业务类型 /// </summary> public string BizType { get; set; } /// <summary> /// 原进件单id /// </summary> public string OriginalOrderId { get; set; } /// <summary> /// 资金记账本的业务场景 /// </summary> public string SceneCode { get; set; } /// <summary> /// 转账场景说明 /// </summary> public string SceneDirections { get; set; } /// <summary> /// 转账场景截图 /// </summary> public string SceneImageOssUrl { get; set; } /// <summary> /// 转账场景截图 /// </summary> public string SceneImage { get; set; } /// <summary> /// 商户行业资质图片 /// </summary> public string SceneQualificationImageOssUrl { get; set; } /// <summary> /// 商户行业资质协议文本 /// </summary> public string SceneQualificationText { get; set; } /// <summary> /// 商户行业资质图片或协议文本 /// </summary> public string SceneQualificationImage { get; set; } /// <summary> /// 商户站点信息 /// </summary> public string Sites { get; set; } /// <summary> /// 进件单id /// </summary> public string OrderId { get; set; } /// <summary> /// 进件单状态 /// 审批中: PROCESSING /// 已生效: VALID /// 审批不通过: INVALID /// 已废弃: DISUSE /// 已撤销: REVOKED /// </summary> public string Status { get; set; } /// <summary> /// 进件单任务完结时间 /// </summary> public string TaskFinishTime { get; set; } /// <summary> /// 进件单审核不通过原因 /// </summary> public string RiskReviewRemark { get; set; } } } FlexJobApi.Core/FlexJobApi.Core.xml
@@ -1334,6 +1334,116 @@ 电子签通道 </summary> </member> <member name="T:FlexJobApi.Core.AlipayFundExpandindirectOrder"> <summary> 资金二级商户KYB代进件单 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.ProductCode"> <summary> 产品码 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.BizScene"> <summary> 场景码 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.OutBizNo"> <summary> 外部单号 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.Identity"> <summary> 二级商户信息-标识 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.IdentityType"> <summary> 二级商户信息-标识类型 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.Name"> <summary> 二级商户信息-姓名 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.BizType"> <summary> 业务类型 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.OriginalOrderId"> <summary> 原进件单id </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.SceneCode"> <summary> 资金记账本的业务场景 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.SceneDirections"> <summary> 转账场景说明 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.SceneImageOssUrl"> <summary> 转账场景截图 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.SceneImage"> <summary> 转账场景截图 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.SceneQualificationImageOssUrl"> <summary> 商户行业资质图片 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.SceneQualificationText"> <summary> 商户行业资质协议文本 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.SceneQualificationImage"> <summary> 商户行业资质图片或协议文本 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.Sites"> <summary> 商户站点信息 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.OrderId"> <summary> 进件单id </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.Status"> <summary> 进件单状态 审批中: PROCESSING 已生效: VALID 审批不通过: INVALID 已废弃: DISUSE 已撤销: REVOKED </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.TaskFinishTime"> <summary> 进件单任务完结时间 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrder.RiskReviewRemark"> <summary> 进件单审核不通过原因 </summary> </member> <member name="T:FlexJobApi.Core.Department"> <summary> 部门 @@ -9367,14 +9477,19 @@ 转账场景说明 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SceneImage"> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SceneImageOssUrl"> <summary> 转账场景截图 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SceneQualificationImage"> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SceneQualificationImageOssUrl"> <summary> 商户行业资质图片或协议文本 商户行业资质图片 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SceneQualificationText"> <summary> 商户行业资质协议文本 </summary> </member> <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SitesInfo"> @@ -11867,6 +11982,12 @@ 姓名 </summary> </member> <member name="P:FlexJobApi.Core.GetPersonalLoginInfoQueryResult.ContactPhoneNumber"> <summary> 手机号 </summary> <remarks>联系电话</remarks> </member> <member name="P:FlexJobApi.Core.GetPersonalLoginInfoQueryResult.IsReal"> <summary> 是否实名 @@ -12147,6 +12268,34 @@ 阿里支付工具 </summary> </member> <member name="M:FlexJobApi.Core.AlipayUtils.FundExpandindirectImageUpload(Aop.Api.Request.AlipayFundExpandindirectImageUploadRequest)"> <summary> 资金二级商户KYB代进件 </summary> <returns></returns> </member> <member name="M:FlexJobApi.Core.AlipayUtils.FundExpandindirectCreate(Aop.Api.Domain.AlipayFundExpandindirectCreateModel,System.String)"> <summary> 资金二级商户KYB代进件 </summary> <param name="model"></param> <param name="notifyUrl"></param> <returns></returns> </member> <member name="M:FlexJobApi.Core.AlipayUtils.FundExpandindirectOrderQuery(Aop.Api.Domain.AlipayFundExpandindirectOrderQueryModel)"> <summary> 资金二级商户KYB代进件单查询接口 </summary> <param name="model"></param> <returns></returns> </member> <member name="M:FlexJobApi.Core.AlipayUtils.FundExpandindirectOrderCancel(Aop.Api.Domain.AlipayFundExpandindirectOrderCancelModel)"> <summary> 资金二级商户KYB代进件单取消接口 </summary> <param name="model"></param> <returns></returns> </member> <member name="T:FlexJobApi.Core.AliyunOptions"> <summary> 阿里云配置 FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs
@@ -12,7 +12,7 @@ /// 支付宝资金二级商户KYB代进件 /// </summary> [Resource([EnumResourceController.UserServerEnterpriseWallet])] public class AlipayFundExpandindirectCreateCommand : IRequest<bool> public class AlipayFundExpandindirectCreateCommand : SaveDataCommand { /// <summary> /// 产品码 @@ -57,11 +57,15 @@ /// <summary> /// 转账场景截图 /// </summary> public string SceneImage { get; set; } public string SceneImageOssUrl { get; set; } /// <summary> /// 商户行业资质图片或协议文本 /// 商户行业资质图片 /// </summary> public string SceneQualificationImage { get; set; } public string SceneQualificationImageOssUrl { get; set; } /// <summary> /// 商户行业资质协议文本 /// </summary> public string SceneQualificationText { get; set; } /// <summary> /// 商户站点信息 /// </summary> FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs
@@ -3,6 +3,8 @@ using Aop.Api.Domain; using Aop.Api.Request; using Aop.Api.Response; using Aop.Api.Util; using Furion.FriendlyException; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; @@ -68,6 +70,23 @@ } } /// <summary> /// 资金二级商户KYB代进件 /// </summary> /// <returns></returns> public AlipayFundExpandindirectImageUploadResponse FundExpandindirectImageUpload(AlipayFundExpandindirectImageUploadRequest request) { AlipayFundExpandindirectImageUploadResponse response = alipayClient.Execute(request); if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.Msg); return response; } /// <summary> /// 资金二级商户KYB代进件 /// </summary> /// <param name="model"></param> /// <param name="notifyUrl"></param> /// <returns></returns> public AlipayFundExpandindirectCreateResponse FundExpandindirectCreate(AlipayFundExpandindirectCreateModel model, string notifyUrl = null) { AlipayFundExpandindirectCreateRequest request = new AlipayFundExpandindirectCreateRequest(); @@ -77,6 +96,36 @@ request.SetNotifyUrl(notifyUrl); } AlipayFundExpandindirectCreateResponse response = alipayClient.Execute(request); if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.Msg); return response; } /// <summary> /// 资金二级商户KYB代进件单查询接口 /// </summary> /// <param name="model"></param> /// <returns></returns> public AlipayFundExpandindirectOrderQueryResponse FundExpandindirectOrderQuery(AlipayFundExpandindirectOrderQueryModel model) { AlipayFundExpandindirectOrderQueryRequest request = new AlipayFundExpandindirectOrderQueryRequest(); request.SetBizModel(model); AlipayFundExpandindirectOrderQueryResponse response = alipayClient.Execute(request); if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.Msg); return response; } /// <summary> /// 资金二级商户KYB代进件单取消接口 /// </summary> /// <param name="model"></param> /// <returns></returns> public AlipayFundExpandindirectOrderCancelResponse FundExpandindirectOrderCancel(AlipayFundExpandindirectOrderCancelModel model) { AlipayFundExpandindirectOrderCancelRequest request = new AlipayFundExpandindirectOrderCancelRequest(); request.SetBizModel(model); AlipayFundExpandindirectOrderCancelResponse response = alipayClient.Execute(request); if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.Msg); return response; } } FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommandHandler.cs
@@ -1,7 +1,11 @@ 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; @@ -14,11 +18,15 @@ /// 支付宝资金二级商户KYB代进件 /// </summary> public class AlipayFundExpandindirectCreateCommandHandler( AlipayUtils alipayUtils AlipayUtils alipayUtils, IHttpRemoteService httpRemoteService, IRepository<AlipayFundExpandindirectOrder> rep ) : IRequestHandler<AlipayFundExpandindirectCreateCommand, bool> IRequestHandler<AlipayFundExpandindirectCreateCommand, Guid> { private readonly AlipayUtils alipayUtils = alipayUtils; private readonly IHttpRemoteService httpRemoteService = httpRemoteService; private readonly IRepository<AlipayFundExpandindirectOrder> rep = rep; /// <summary> /// 支付宝资金二级商户KYB代进件 @@ -26,12 +34,64 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public Task<bool> Handle(AlipayFundExpandindirectCreateCommand request, CancellationToken cancellationToken) public async Task<Guid> Handle(AlipayFundExpandindirectCreateCommand request, CancellationToken cancellationToken) { var model = request.Adapt<AlipayFundExpandindirectCreateModel>(); model.Sites = request.SitesInfo.ToJson(); var result = alipayUtils.FundExpandindirectCreate(model); return Task.FromResult(true); 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; } } } FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
@@ -569,7 +569,7 @@ 支付宝资金二级商户KYB代进件 </summary> </member> <member name="M:FlexJobApi.UserServer.Application.AlipayFundExpandindirectCreateCommandHandler.#ctor(FlexJobApi.Core.AlipayUtils)"> <member name="M:FlexJobApi.UserServer.Application.AlipayFundExpandindirectCreateCommandHandler.#ctor(FlexJobApi.Core.AlipayUtils,Furion.HttpRemote.IHttpRemoteService,Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.AlipayFundExpandindirectOrder})"> <summary> 支付宝资金二级商户KYB代进件 </summary>