From 611af5472b33cbe81a1433ab29e26502a9aac795 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期一, 01 九月 2025 15:46:55 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Entities/UserServer/Enterprises/AlipayFundExpandindirectOrder.cs | 102 ++++++++++++++ FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommandHandler.cs | 74 +++++++++- FlexJobApi.Core/FlexJobApi.Core.xml | 155 +++++++++++++++++++++ FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs | 49 +++++++ FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml | 2 FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs | 12 + 6 files changed, 379 insertions(+), 15 deletions(-) diff --git a/FlexJobApi.Core/Entities/UserServer/Enterprises/AlipayFundExpandindirectOrder.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/AlipayFundExpandindirectOrder.cs new file mode 100644 index 0000000..712d8fb --- /dev/null +++ b/FlexJobApi.Core/Entities/UserServer/Enterprises/AlipayFundExpandindirectOrder.cs @@ -0,0 +1,102 @@ +锘縰sing 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浠h繘浠跺崟 + /// </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> + /// 杩涗欢鍗昳d + /// </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; } + } +} diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index d802435..56de3aa 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -1334,6 +1334,116 @@ 鐢靛瓙绛鹃�氶亾 </summary> </member> + <member name="T:FlexJobApi.Core.AlipayFundExpandindirectOrder"> + <summary> + 璧勯噾浜岀骇鍟嗘埛KYB浠h繘浠跺崟 + </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> + 杩涗欢鍗昳d + </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浠h繘浠� + </summary> + <returns></returns> + </member> + <member name="M:FlexJobApi.Core.AlipayUtils.FundExpandindirectCreate(Aop.Api.Domain.AlipayFundExpandindirectCreateModel,System.String)"> + <summary> + 璧勯噾浜岀骇鍟嗘埛KYB浠h繘浠� + </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浠h繘浠跺崟鏌ヨ鎺ュ彛 + </summary> + <param name="model"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.Core.AlipayUtils.FundExpandindirectOrderCancel(Aop.Api.Domain.AlipayFundExpandindirectOrderCancelModel)"> + <summary> + 璧勯噾浜岀骇鍟嗘埛KYB浠h繘浠跺崟鍙栨秷鎺ュ彛 + </summary> + <param name="model"></param> + <returns></returns> + </member> <member name="T:FlexJobApi.Core.AliyunOptions"> <summary> 闃块噷浜戦厤缃� diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs index 1f73529..03bcfc2 100644 --- a/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs +++ b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs @@ -12,7 +12,7 @@ /// 鏀粯瀹濊祫閲戜簩绾у晢鎴稫YB浠h繘浠� /// </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> diff --git a/FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs b/FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs index 6fc5b9d..8fe6911 100644 --- a/FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs +++ b/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浠h繘浠� + /// </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浠h繘浠� + /// </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浠h繘浠跺崟鏌ヨ鎺ュ彛 + /// </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浠h繘浠跺崟鍙栨秷鎺ュ彛 + /// </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; } } diff --git a/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommandHandler.cs index 0970ba2..95467c3 100644 --- a/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommandHandler.cs @@ -1,7 +1,11 @@ 锘縰sing 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 @@ /// 鏀粯瀹濊祫閲戜簩绾у晢鎴稫YB浠h繘浠� /// </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> /// 鏀粯瀹濊祫閲戜簩绾у晢鎴稫YB浠h繘浠� @@ -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, "浠h繘浠跺崟"); + } + 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; } } } diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml index 2386160..6e64db3 100644 --- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml +++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml @@ -569,7 +569,7 @@ 鏀粯瀹濊祫閲戜簩绾у晢鎴稫YB浠h繘浠� </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> 鏀粯瀹濊祫閲戜簩绾у晢鎴稫YB浠h繘浠� </summary> -- Gitblit v1.9.1