sunpengfei
2025-09-01 611af5472b33cbe81a1433ab29e26502a9aac795
feat:开发
1个文件已添加
5个文件已修改
394 ■■■■■ 已修改文件
FlexJobApi.Core/Entities/UserServer/Enterprises/AlipayFundExpandindirectOrder.cs 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommandHandler.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>