FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseWallet.cs
New file @@ -0,0 +1,29 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 企业钱包 /// </summary> public class EnterpriseWallet : CommonEntity { /// <summary> /// 企业Id /// </summary> public Guid EnterpriseId { get; set; } /// <summary> /// 企业 /// </summary> public Enterprise Enterprise { get; set; } /// <summary> /// 通道 /// </summary> public EnumEnterpriseWalletAccess Access { get; set; } } } FlexJobApi.Core/Enums/Common/EnumResourceController.cs
@@ -89,6 +89,11 @@ [ResourceController(EnumResourceService.UserServer, "Enterprise")] UserServerEnterprise, /// <summary> /// 企业钱包 /// </summary> [ResourceController(EnumResourceService.UserServer, "EnterpriseWallet")] UserServerEnterpriseWallet, /// <summary> /// 灵工信息 /// </summary> [ResourceController(EnumResourceService.UserServer, "EnterpriseEmployee")] FlexJobApi.Core/Enums/Users/EnumEnterpriseWalletAccess.cs
New file @@ -0,0 +1,19 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 企业钱包通道 /// </summary> public enum EnumEnterpriseWalletAccess { /// <summary> /// 支付宝 /// </summary> Alipay = 10 } } FlexJobApi.Core/FlexJobApi.Core.csproj
@@ -44,6 +44,7 @@ <Folder Include="Models\CommonServer\Schedules\Commands\" /> <Folder Include="Models\CommonServer\Schedules\Queries\" /> <Folder Include="Models\FlexJobServer\TaskUsers\Repositories\" /> <Folder Include="Models\UserServer\EnterpriseWallets\Commands\" /> </ItemGroup> </Project> FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeesQuery.cs
@@ -189,5 +189,10 @@ /// </summary> public DateTime? EnterpriseSignContractTime { get; set; } /// <summary> /// 电子合同 /// </summary> public string ContractUrl { get; set; } } } FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Queries/AlipayUserAgreementPageSignNotifyQuery.cs
New file @@ -0,0 +1,69 @@ 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.UserServerEnterpriseWallet])] public class AlipayUserAgreementPageSignNotifyQuery : IRequest<bool> { /// <summary> /// 协议产品码,商户和支付宝签约时确定,不同业务场景对应不同的签约产品码。 /// </summary> public string personal_product_code { get; set; } /// <summary> /// 当前签约的协议场景。 /// </summary> public string sign_scene { get; set; } /// <summary> /// NORMAL 协议当前状态 1. TEMP:暂存,协议未生效过; 2. NORMAL:正常; 3. STOP:暂停 /// </summary> public string status { get; set; } /// <summary> /// 用户签约的支付宝账号对应的支付宝唯一用户号。 以2088开头的16位纯数字组成。 /// </summary> public string alipay_user_id { get; set; } /// <summary> /// 支付宝系统中用以唯一标识用户签约记录的编号。 /// </summary> public string agreement_no { get; set; } /// <summary> /// 支付宝代扣协议的实际签约时间,格式为yyyy-MM-dd HH:mm:ss。 /// </summary> public string sign_time { get; set; } /// <summary> /// 用户在商户网站的登录账号,如果商户接口中未传,则不会返回 /// </summary> public string external_logon_id { get; set; } /// <summary> /// 支付宝分配给开发者的应用Id /// </summary> public string app_id { get; set; } /// <summary> /// 支付宝分配给商户的应用Id /// </summary> public string auth_app_id { get; set; } /// <summary> /// 代扣协议中标示用户的唯一签约号(确保在商户系统中唯一)。 /// </summary> public string external_agreement_no { get; set; } /// <summary> /// 用户代扣协议的实际生效时间,格式为yyyy-MM-dd HH:mm:ss。 /// </summary> public string valid_time { get; set; } /// <summary> /// 返回脱敏的支付宝账号。 /// </summary> public string alipay_logon_id { get; set; } /// <summary> /// 用户签约成功通知类型 /// </summary> public string notify_type { get; set; } } } FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs
@@ -17,7 +17,6 @@ /// </summary> public class AlipayUtils { private readonly IOptions<AlipayOptions> options; private readonly IAopClient alipayClient; public AlipayUtils(IOptions<AlipayOptions> options) FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs
@@ -120,13 +120,14 @@ UserSignContractStatus = it.UserSignContractStatus, HireTime = it.TaskInfoUsers .OrderBy(tu => tu.HireTime) .Where(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass && tu.HireTime.HasValue) .Where(tu => tu.HireTime.HasValue) .Select(tu => tu.HireTime) .FirstOrDefault(), UserRealTime = it.User.RealTime, UserSignContractTime = it.UserSignContractTime, EnterpriseSignContractStatus = it.EnterpriseSignContractStatus, EnterpriseSignContractTime = it.EnterpriseSignContractTime EnterpriseSignContractTime = it.EnterpriseSignContractTime, ContractUrl = it.ContractUrl, }); return await request.PageModel.GetPagedListAsync<GetEnterpriseEmployeesQueryResult, GetEnterpriseEmployeesQueryResultItem>(s, cancellationToken); } FlexJobApi.UserServer.Application/EnterpriseWallets/Queries/AlipayUserAgreementPageSignNotifyQueryHandler.cs
New file @@ -0,0 +1,28 @@ using FlexJobApi.Core; using MediatR; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.UserServer.Application { /// <summary> /// 支付宝用户授权协议签约通知 /// </summary> public class AlipayUserAgreementPageSignNotifyQueryHandler : IRequestHandler<AlipayUserAgreementPageSignNotifyQuery, bool> { /// <summary> /// 支付宝用户授权协议签约通知 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public Task<bool> Handle(AlipayUserAgreementPageSignNotifyQuery request, CancellationToken cancellationToken) { return Task.FromResult(true); } } } FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj
@@ -15,4 +15,8 @@ <ProjectReference Include="..\FlexJobApi.Core\FlexJobApi.Core.csproj" /> </ItemGroup> <ItemGroup> <Folder Include="EnterpriseWallets\Commands\" /> </ItemGroup> </Project> FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs
@@ -82,7 +82,7 @@ HireTime = it.EnterpriseEmployees .SelectMany(ee => ee.TaskInfoUsers) .OrderByDescending(e => e.HireTime) .Where(e => e.HireStatus == EnumTaskUserHireStatus.Pass && e.HireTime.HasValue) .Where(e => e.HireTime.HasValue) .Select(e => e.HireTime) .FirstOrDefault(), SignContractTime = it.EnterpriseEmployees @@ -120,7 +120,7 @@ : EnumTaskUserHireStatus.Wait, HireTime = it.TaskInfoUsers .OrderBy(tu => tu.HireTime) .Where(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass && tu.HireTime.HasValue) .Where(tu => tu.HireTime.HasValue) .Select(tu => tu.HireTime) .FirstOrDefault(), UserSignContractStatus = it.UserSignContractStatus, FlexJobApi.Web.Entry/Startup.cs
@@ -38,6 +38,7 @@ services.AddComponent<DistributedCacheServiceComponent>(); services.AddHttpRemote(); services.AddSingleton<AlipayUtils>(); services.AddSingleton<AliyunSmsUtils>(); services.AddSingleton<WxmpUtils>(); services.AddScoped<SmsUtils>();