sunpengfei
6 天以前 8ffda541b48cbf619f8493196da4fb44d4f3ddc5
feat:开发
2个文件已添加
19个文件已修改
365 ■■■■ 已修改文件
FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseWallet.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Enums/Common/EnumSmsTemplateCode.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Enums/Users/EnumEnterpriseWalletExpandindirectOrderStatus.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Enums/Users/EnumEnterpriseWalletSignStatus.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Jobs/CompleteTaskSettlementT1Job.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Jobs/RefreshEnterpriseWalletStatusJob.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Jobs/RefreshEnterpriseWalletTransactionStatusJob.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetSettlementTaskUsersQuery.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/SendInviteElectronSignSmsCommand.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Queries/GetEnterpriseWalletQuery.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/SmsUtils/SendSmsModel.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/SmsUtils/SmsUtils.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/ElectronSign/Commands/PersonalUserRealCommandHandler.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/EnterpriseWallets/Queries/EnterpriseWalletQueryHandler.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Web.Entry/appsettings.json 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseWallet.cs
@@ -28,6 +28,16 @@
        public EnumEnterpriseWalletAccess Access { get; set; }
        /// <summary>
        /// 账号
        /// </summary>
        public string Account { get; set; }
        /// <summary>
        /// 商户Id
        /// </summary>
        public string MerchantId { get; set; }
        /// <summary>
        /// 余额
        /// </summary>
        public decimal Balance { get; set; }
FlexJobApi.Core/Enums/Common/EnumSmsTemplateCode.cs
@@ -90,6 +90,17 @@
        /// 818钱包开通 
        /// 验证码${code},用户您好,您正在进行平台钱包开通,该验证码5分钟内有效,请勿泄露于他人。
        /// </summary>
        BankWalletAccountOpen
        BankWalletAccountOpen,
        /// <summary>
        /// 电子签邀约
        /// ${name}请您点击签约http://testwww.81812333.com/sg/${code}
        /// </summary>
        InviteElectronSign,
        /// <summary>
        /// 签约地址
        /// ${name}请您点击签约https://testwww.81812333.com/sgu/${code}
        /// </summary>
        ElectronSignUrl,
    }
}
FlexJobApi.Core/Enums/Users/EnumEnterpriseWalletExpandindirectOrderStatus.cs
@@ -12,11 +12,15 @@
    public enum EnumEnterpriseWalletExpandindirectOrderStatus
    {
        /// <summary>
        /// 未进件
        /// </summary>
        Wait = 1,
        /// <summary>
        /// 审批中
        /// </summary>
        PROCESSING = 10,
        /// <summary>
        /// 已生效
        /// 已进件
        /// </summary>
        VALID = 20,
        /// <summary>
FlexJobApi.Core/Enums/Users/EnumEnterpriseWalletSignStatus.cs
@@ -12,6 +12,10 @@
    public enum EnumEnterpriseWalletSignStatus
    {
        /// <summary>
        /// 未签约
        /// </summary>
        Wait = 1,
        /// <summary>
        /// 申请中
        /// </summary>
        Apply = 10,
FlexJobApi.Core/FlexJobApi.Core.xml
@@ -2050,6 +2050,16 @@
            通道
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.EnterpriseWallet.Account">
            <summary>
            账号
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.EnterpriseWallet.MerchantId">
            <summary>
            商户Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.EnterpriseWallet.Balance">
            <summary>
            余额
@@ -3697,6 +3707,18 @@
            验证码${code},用户您好,您正在进行平台钱包开通,该验证码5分钟内有效,请勿泄露于他人。
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.EnumSmsTemplateCode.InviteElectronSign">
            <summary>
            电子签邀约
            ${name}请您点击签约http://testwww.81812333.com/sg/${code}
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.EnumSmsTemplateCode.ElectronSignUrl">
            <summary>
            签约地址
            ${name}请您点击签约https://testwww.81812333.com/sgu/${code}
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.EnumValidationTypes">
            <summary>
            验证类型
@@ -4142,6 +4164,11 @@
            企业钱包代进件单状态
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.EnumEnterpriseWalletExpandindirectOrderStatus.Wait">
            <summary>
            未进件
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.EnumEnterpriseWalletExpandindirectOrderStatus.PROCESSING">
            <summary>
            审批中
@@ -4149,7 +4176,7 @@
        </member>
        <member name="F:FlexJobApi.Core.EnumEnterpriseWalletExpandindirectOrderStatus.VALID">
            <summary>
            已生效
            已进件
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.EnumEnterpriseWalletExpandindirectOrderStatus.INVALID">
@@ -4170,6 +4197,11 @@
        <member name="T:FlexJobApi.Core.EnumEnterpriseWalletSignStatus">
            <summary>
            企业钱包签约状态
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.EnumEnterpriseWalletSignStatus.Wait">
            <summary>
            未签约
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.EnumEnterpriseWalletSignStatus.Apply">
@@ -8201,11 +8233,6 @@
            任务Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetSettlementTaskUsersQuery.Keywords">
            <summary>
            关键字
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetSettlementTaskUsersQuery.SettlementOrderUrl">
            <summary>
            结算单地址
@@ -8214,6 +8241,11 @@
        <member name="T:FlexJobApi.Core.GetSettlementTaskUsersQueryResult">
            <summary>
            查询结算任务分页列表数据
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetSettlementTaskUsersQueryResult.Data">
            <summary>
            结算名单
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetSettlementTaskUsersQueryResult.Errors">
@@ -9670,6 +9702,16 @@
            签署合同长链接
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.SendInviteElectronSignSmsCommand">
            <summary>
            发送邀请签约短信
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.SendInviteElectronSignSmsCommand.Ids">
            <summary>
            Id
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.StopElectronSignCommand">
            <summary>
            灵工解约
@@ -10633,6 +10675,16 @@
            通道
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.OpenEnterpriseWalletCommand.Account">
            <summary>
            账号
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.OpenEnterpriseWalletCommand.MerchantId">
            <summary>
            商户Id
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.OpenEnterpriseWalletCommandResult">
            <summary>
            开通企业钱包
@@ -10843,6 +10895,16 @@
            通道
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.Account">
            <summary>
            账号
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.MerchantId">
            <summary>
            商户Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.Code">
            <summary>
            协议号
@@ -10871,6 +10933,11 @@
        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.SignStatus">
            <summary>
            签约状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.ExpandindirectOrderStatus">
            <summary>
            待进件状态
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetEnterpriseWalletTransactionQuery">
@@ -15208,6 +15275,21 @@
            验证码
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.SendSmsModel">
            <summary>
            发送短信
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.SendSmsModel.PhoneNumber">
            <summary>
            手机号码
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.SendSmsModel.TemplateCode">
            <summary>
            短信模板编号
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.SendVerifyCodeModel">
            <summary>
            发送验证码
FlexJobApi.Core/Jobs/CompleteTaskSettlementT1Job.cs
@@ -34,13 +34,13 @@
        [UnitOfWork(false)]
        public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
        {
            var now = DateTime.Now;
            var env = App.GetConfig<string>("Environment");
            if (env != "Local")
            {
                var now = DateTime.Now;
            var q = rep.AsQueryable()
                .Where(it => it.SettlementStatus == EnumTaskSettlementStatus.InProcess);
            var minTime = env == "Local"
                ? now.AddMinutes(-1)
                : env == "Test"
                var minTime = env == "Test"
                ? now.AddMinutes(-5)
                : now.AddDays(-1);
            q = q.Where(it => it.SettlementStartTime.HasValue && it.SettlementStartTime < minTime);
@@ -148,6 +148,7 @@
                }
            }
        }
        }
        private async Task SetCode(EnterpriseWalletTransaction entity)
        {
FlexJobApi.Core/Jobs/RefreshEnterpriseWalletStatusJob.cs
@@ -1,4 +1,5 @@
using Aop.Api.Domain;
using Furion;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
using Furion.Schedule;
@@ -23,6 +24,9 @@
        [UnitOfWork(false)]
        public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
        {
            var env = App.GetConfig<string>("Environment");
            if (env != "Local")
        {
            var entities = await rep.AsQueryable()
                .Include(it => it.Enterprise)
@@ -115,3 +119,4 @@
        }
    }
}
}
FlexJobApi.Core/Jobs/RefreshEnterpriseWalletTransactionStatusJob.cs
@@ -1,4 +1,5 @@
using Aop.Api.Domain;
using Furion;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
using Furion.Schedule;
@@ -24,6 +25,9 @@
        private readonly AlipayUtils alipayUtils = alipayUtils;
        public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
        {
            var env = App.GetConfig<string>("Environment");
            if (env != "Local")
        {
            var entities = await rep.AsQueryable()
                .Where(it =>
@@ -95,3 +99,4 @@
        }
    }
}
}
FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetSettlementTaskUsersQuery.cs
@@ -12,17 +12,12 @@
    /// 查询结算名单分页列表数据
    /// </summary>
    [Resource([EnumResourceController.FlexJobServerTaskUser])]
    public class GetSettlementTaskUsersQuery : PagedListQuery<GetSettlementTaskUsersQueryResult, GetSettlementTaskUsersQueryResultItem>
    public class GetSettlementTaskUsersQuery : IRequest<GetSettlementTaskUsersQueryResult>
    {
        /// <summary>
        /// 任务Id
        /// </summary>
        public Guid TaskInfoId { get; set; }
        /// <summary>
        /// 关键字
        /// </summary>
        public string Keywords { get; set; }
        /// <summary>
        /// 结算单地址
@@ -33,9 +28,13 @@
    /// <summary>
    /// 查询结算任务分页列表数据
    /// </summary>
    public class GetSettlementTaskUsersQueryResult : PagedListQueryResult<GetSettlementTaskUsersQueryResultItem>
    public class GetSettlementTaskUsersQueryResult
    {
        /// <summary>
        /// 结算名单
        /// </summary>
        public List<GetSettlementTaskUsersQueryResultItem> Data { get; set; }
        /// <summary>
        /// 错误信息
        /// </summary>
        public List<GetSettlementTaskUsersQueryResultError> Errors { get; set; }
FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/SendInviteElectronSignSmsCommand.cs
New file
@@ -0,0 +1,26 @@
using MediatR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 发送邀请签约短信
    /// </summary>
    [Resource([EnumResourceController.UserServerEnterpriseEmployee])]
    public class SendInviteElectronSignSmsCommand : IRequest<int>
    {
        public SendInviteElectronSignSmsCommand()
        {
            Ids = [];
        }
        /// <summary>
        /// Id
        /// </summary>
        public List<Guid> Ids { get; set; }
    }
}
FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs
@@ -22,6 +22,15 @@
        /// </summary>
        public EnumEnterpriseWalletAccess Access { get; set; }
        /// <summary>
        /// 账号
        /// </summary>
        public string Account { get; set; }
        /// <summary>
        /// 商户Id
        /// </summary>
        public string MerchantId { get; set; }
    }
    /// <summary>
FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Queries/GetEnterpriseWalletQuery.cs
@@ -34,12 +34,22 @@
        /// <summary>
        /// 钱包Id
        /// </summary>
        public Guid Id { get; set; }
        public Guid? Id { get; set; }
        /// <summary>
        /// 通道
        /// </summary>
        public EnumEnterpriseWalletAccess Access { get; set; }
        /// <summary>
        /// 账号
        /// </summary>
        public string Account { get; set; }
        /// <summary>
        /// 商户Id
        /// </summary>
        public string MerchantId { get; set; }
        /// <summary>
        /// 协议号
@@ -70,5 +80,10 @@
        /// 签约状态
        /// </summary>
        public EnumEnterpriseWalletSignStatus SignStatus { get; set; }
        /// <summary>
        /// 待进件状态
        /// </summary>
        public EnumEnterpriseWalletExpandindirectOrderStatus ExpandindirectOrderStatus { get; set; }
    }
}
FlexJobApi.Core/Utils/SmsUtils/SendSmsModel.cs
New file
@@ -0,0 +1,28 @@
using Furion.DataValidation;
using MediatR;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 发送短信
    /// </summary>
    public class SendSmsModel
    {
        /// <summary>
        /// 手机号码
        /// </summary>
        [Required, DataValidation(ValidationTypes.PhoneNumber)]
        public string PhoneNumber { get; set; }
        /// <summary>
        /// 短信模板编号
        /// </summary>
        public EnumSmsTemplateCode TemplateCode { get; set; }
    }
}
FlexJobApi.Core/Utils/SmsUtils/SmsUtils.cs
@@ -36,6 +36,17 @@
            this.aliyunSmsUtils = aliyunSmsUtils;
        }
        public async Task<Guid> Send(SendSmsModel model, object templateParam, CancellationToken cancellationToken = default)
        {
            var entity = new SmsLog();
            model.Adapt(entity);
            entity.Expiry = DateTime.Now.AddMinutes(10);
            entity.TemplateParam = templateParam.ToJson();
            await aliyunSmsUtils.SendAsync(model.PhoneNumber, model.TemplateCode, entity.TemplateParam, cancellationToken);
            await rep.InsertAsync(entity);
            return entity.Id;
        }
        public async Task<Guid> SendVerifyCode(SendVerifyCodeModel model, CancellationToken cancellationToken = default)
        {
            var code = new Random().Next(100000, 999999).ToString();
FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
@@ -168,9 +168,10 @@
        public async Task<GetSettlementTaskUsersQueryResult> Handle(GetSettlementTaskUsersQuery request, CancellationToken cancellationToken)
        {
            var logier = JwtUtils.GetCurrentLogier();
            var list = new GetSettlementTaskUsersQueryResult();
            var q = rep.AsQueryable().AsNoTracking()
                .Where(it => it.TaskInfoId == request.TaskInfoId);
            var s = q
            list.Data = q
                .Select(it => new GetSettlementTaskUsersQueryResultItem
                {
                    Id = it.Id,
@@ -184,8 +185,8 @@
                    SettlementAmount = it.SettlementAmount,
                    ActualSettlementAmount = it.ActualSettlementAmount,
                    SettlementTime = it.SettlementTime
                });
            var list = await request.PageModel.GetPagedListAsync<GetSettlementTaskUsersQueryResult, GetSettlementTaskUsersQueryResultItem>(s, cancellationToken);
                })
                .ToList();
            var successList = new List<GetSettlementTaskUsersQueryResultExcelRow>();
            if (request.SettlementOrderUrl.IsNotNull())
@@ -270,14 +271,9 @@
                }
            }
            var pagedList = await list.Data
            list.Data = list.Data
                .Where(it => successList.Any(s => s.Identity == it.Identity))
                .AsQueryable()
                .ToPagedListAsync(request.PageModel.Page, request.PageModel.Rows, cancellationToken);
            list.PageModel = request.PageModel.Adapt<PagedListQueryResultPageModel>();
            list.PageModel.TotalCount = pagedList.TotalCount;
            list.PageModel.TotalPage = pagedList.TotalPages;
            list.Data = pagedList.Items.ToList();
                .ToList();
            return list;
        }
FlexJobApi.UserServer.Application/ElectronSign/Commands/PersonalUserRealCommandHandler.cs
@@ -191,7 +191,7 @@
                faceRealUrl: result.Result.FaceUrl);
            await repUser.UpdateAsync(user);
            return result.Result.FaceUrl;
            return result.Result.FaceUrl.Replace("https://h5-v2.kych5.com", "https://wx05.ssqian.com.cn");
        }
        /// <summary>
FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs
@@ -30,6 +30,7 @@
    /// 灵工命令处理器
    /// </summary>
    public class EnterpriseEmployeesCommandHandler(
            SmsUtils smsUtils,
            IMediator mediator,
            IRepository<EnterpriseEmployee> rep,
            IRepository<User> repUser,
@@ -45,8 +46,10 @@
        IRequestHandler<InviteElectronSignCommand, int>,
        IRequestHandler<PersonalUserElectronSignCommand, PersonalUserElectronSignCommandResult>,
        IRequestHandler<EnterpriseUserElectronSignCommand, EnterpriseUserElectronSignCommandResult>,
        IRequestHandler<StopElectronSignCommand, int>
        IRequestHandler<StopElectronSignCommand, int>,
        IRequestHandler<SendInviteElectronSignSmsCommand, int>
    {
        private readonly SmsUtils smsUtils = smsUtils;
        private readonly IMediator mediator = mediator;
        private readonly IRepository<EnterpriseEmployee> rep = rep;
        private readonly IRepository<User> repUser = repUser;
@@ -266,6 +269,39 @@
        }
        /// <summary>
        /// 发送邀请签约短信
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<int> Handle(SendInviteElectronSignSmsCommand request, CancellationToken cancellationToken)
        {
            var logier = JwtUtils.GetCurrentLogier();
            var entities = await rep.AsQueryable()
                .Include(it => it.Enterprise)
                .Include(it => it.ContractTemplate)
                .Where(it =>
                    it.EnterpriseId == logier.EnterpriseId
                    && request.Ids.Contains(it.Id)
                    && it.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait)
                .ToListAsync();
            foreach (var entity in entities)
            {
                await smsUtils.Send(new SendSmsModel
                {
                    PhoneNumber = entity.ContactPhoneNumber,
                    TemplateCode = EnumSmsTemplateCode.InviteElectronSign,
                },
                new
                {
                    name = entity.Enterprise.EnterpriseName,
                    code = entity.ContractTemplate.Code
                });
            }
            return entities.Count;
        }
        /// <summary>
        /// 个人用户签约
        /// </summary>
        /// <param name="request"></param>
@@ -332,7 +368,11 @@
            {
                throw Oops.Oh(EnumErrorCodeType.s510, result?.Message ?? "签约失败");
            }
            return result.Result.Adapt<PersonalUserElectronSignCommandResult>();
            var model = result.Result.Adapt<PersonalUserElectronSignCommandResult>();
            model.SignContractLongUrl = model.SignContractLongUrl
                .Replace("https://openapi.bestsign.info:443", "https://wx115.bestsign.info")
                .Replace("https://openapi.bestsign.cn:443", "https://wx115.bestsign.cn");
            return model;
        }
        /// <summary>
@@ -383,7 +423,11 @@
            {
                throw Oops.Oh(EnumErrorCodeType.s510, result?.Message ?? "签约失败");
            }
            return result.Result.Adapt<EnterpriseUserElectronSignCommandResult>();
            var model = result.Result.Adapt<EnterpriseUserElectronSignCommandResult>();
            model.SignContractLongUrl = model.SignContractLongUrl
                .Replace("https://openapi.bestsign.info:443", "https://wx115.bestsign.info")
                .Replace("https://openapi.bestsign.cn:443", "https://wx115.bestsign.cn");
            return model;
        }
        /// <summary>
@@ -433,5 +477,6 @@
            return entities.Count;
        }
    }
}
FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs
@@ -59,6 +59,8 @@
                entity = new EnterpriseWallet();
                entity.EnterpriseId = request.EnterpriseId!.Value;
                entity.Access = EnumEnterpriseWalletAccess.Alipay;
                entity.Account = request.Account;
                entity.MerchantId = request.MerchantId;
                entity.PersonalProductCode = "FUND_SAFT_SIGN_WITHHOLDING_P";
                entity.SignScene = "INDUSTRY|SATF_ACC";
                entity.ThirdPartyType = "PARTNER";
@@ -70,6 +72,8 @@
            else
            {
                if (entity.SignStatus == EnumEnterpriseWalletSignStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s510, "已签约");
                entity.Account = request.Account;
                entity.MerchantId = request.MerchantId;
                entity.SignStatus = EnumEnterpriseWalletSignStatus.Apply;
                await rep.UpdateAsync(entity);
            }
FlexJobApi.UserServer.Application/EnterpriseWallets/Queries/EnterpriseWalletQueryHandler.cs
@@ -21,6 +21,7 @@
    public class EnterpriseWalletQueryHandler(
            IRepository<EnterpriseWallet> rep,
            IRepository<EnterpriseWalletTransaction> repEnterpriseWalletTransaction,
            IRepository<EnterpriseWalletExpandindirectOrder> repEnterpriseWalletExpandindirectOrder,
            IRepository<Enterprise> repEnterprise,
            AlipayUtils alipayUtils
        ) :
@@ -29,6 +30,7 @@
    {
        private readonly IRepository<EnterpriseWallet> rep = rep;
        private readonly IRepository<EnterpriseWalletTransaction> repEnterpriseWalletTransaction = repEnterpriseWalletTransaction;
        private readonly IRepository<EnterpriseWalletExpandindirectOrder> repEnterpriseWalletExpandindirectOrder = repEnterpriseWalletExpandindirectOrder;
        private readonly IRepository<Enterprise> repEnterprise = repEnterprise;
        private readonly AlipayUtils alipayUtils = alipayUtils;
@@ -53,7 +55,15 @@
            var entity = await rep.AsQueryable()
                .Where(it => it.EnterpriseId == request.EnterpriseId && it.Access == request.Access)
                .FirstOrDefaultAsync();
            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "企业钱包");
            if (entity == null)
            {
                return new GetEnterpriseWalletQueryResult
                {
                    Access = request.Access,
                    SignStatus = EnumEnterpriseWalletSignStatus.Wait,
                    ExpandindirectOrderStatus = EnumEnterpriseWalletExpandindirectOrderStatus.Wait
                };
            }
            var update = false;
            if (entity.Access == EnumEnterpriseWalletAccess.Alipay)
            {
@@ -134,6 +144,19 @@
            }
            var model = entity.Adapt<GetEnterpriseWalletQueryResult>();
            var expandindirectOrder = await repEnterpriseWalletExpandindirectOrder.AsQueryable().AsNoTracking()
                .OrderByDescending(it => it.CreatedTime)
                .Where(it => it.WalletId == model.Id)
                .Select(it => new
                {
                    it.OrderStatus
                })
                .FirstOrDefaultAsync();
            model.ExpandindirectOrderStatus = expandindirectOrder == null
                ? EnumEnterpriseWalletExpandindirectOrderStatus.Wait
                : expandindirectOrder.OrderStatus;
            return model;
        }
FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
@@ -374,7 +374,7 @@
            灵工命令处理器
            </summary>
        </member>
        <member name="M:FlexJobApi.UserServer.Application.EnterpriseEmployeesCommandHandler.#ctor(MediatR.IMediator,Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseEmployee},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Enterprise},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseEmployeeContract},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.ElectronSignSetting},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.ContractTemplate},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseCost},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser})">
        <member name="M:FlexJobApi.UserServer.Application.EnterpriseEmployeesCommandHandler.#ctor(FlexJobApi.Core.SmsUtils,MediatR.IMediator,Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseEmployee},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Enterprise},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseEmployeeContract},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.ElectronSignSetting},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.ContractTemplate},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseCost},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser})">
            <summary>
            灵工命令处理器
            </summary>
@@ -398,6 +398,14 @@
        <member name="M:FlexJobApi.UserServer.Application.EnterpriseEmployeesCommandHandler.Handle(FlexJobApi.Core.InviteElectronSignCommand,System.Threading.CancellationToken)">
            <summary>
            邀请灵工签约
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.UserServer.Application.EnterpriseEmployeesCommandHandler.Handle(FlexJobApi.Core.SendInviteElectronSignSmsCommand,System.Threading.CancellationToken)">
            <summary>
            发送邀请签约短信
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
@@ -699,7 +707,7 @@
            企业钱包查询处理器
            </summary>
        </member>
        <member name="M:FlexJobApi.UserServer.Application.EnterpriseWalletQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseWallet},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseWalletTransaction},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Enterprise},FlexJobApi.Core.AlipayUtils)">
        <member name="M:FlexJobApi.UserServer.Application.EnterpriseWalletQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseWallet},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseWalletTransaction},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseWalletExpandindirectOrder},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Enterprise},FlexJobApi.Core.AlipayUtils)">
            <summary>
            企业钱包查询处理器
            </summary>
FlexJobApi.Web.Entry/appsettings.json
@@ -117,7 +117,10 @@
        "UserElectronSign": "SMS_476485061",
        //818钱包开通 验证码${code},用户您好,您正在进行平台钱包开通,该验证码5分钟内有效,请勿泄露于他人。
        "BankWalletAccountOpen": "SMS_473860301"
        "BankWalletAccountOpen": "SMS_473860301",
        "InviteElectronSign": "SMS_493755029",
        "ElectronSignUrl": "SMS_493715033"
      }
    }
  },