diff --git a/microservices/KonSoft.Admin.HttpApi.Host/Logs/logs.txt b/microservices/KonSoft.Admin.HttpApi.Host/Logs/logs.txt
index c908aac..f108cae 100644
--- a/microservices/KonSoft.Admin.HttpApi.Host/Logs/logs.txt
+++ b/microservices/KonSoft.Admin.HttpApi.Host/Logs/logs.txt
@@ -1025,3 +1025,141 @@ System.InvalidOperationException: An exception has been raised that is likely du
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)
2025-10-03 18:04:14.530 +08:00 [INF] Request finished HTTP/2 GET https://localhost:44354/favicon.ico - 500 null text/plain; charset=utf-8 2509.1194ms
+2025-10-26 10:37:00.036 +08:00 [INF] Starting KonSoft.Admin.HttpApi.Host.
+2025-10-26 10:39:17.756 +08:00 [INF] Starting KonSoft.Admin.HttpApi.Host.
+2025-10-26 10:39:21.029 +08:00 [INF] Loaded ABP modules:
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Admin.AdminHttpApiHostModule
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Admin.AdminHttpApiModule
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Admin.AdminApplicationContractsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Admin.AdminDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Data.AbpDataModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationContractsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationContractsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationContractsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.UI.AbpUiModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.PermissionManagement.HttpApi.AbpPermissionManagementHttpApiModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementHttpApiModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementHttpApiModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementHttpApiModule
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Admin.AdminApplicationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Admin.AdminDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.PermissionManagement.OpenIddict.AbpPermissionManagementDomainOpenIddictModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Admin.EntityFrameworkCore.AdminEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Users.EntityFrameworkCore.AbpUsersEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.AbpEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.OpenIddict.EntityFrameworkCore.AbpOpenIddictEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.SettingManagement.EntityFrameworkCore.AbpSettingManagementEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.PostgreSql.AbpEntityFrameworkCorePostgreSqlModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.BackgroundJobs.EntityFrameworkCore.AbpBackgroundJobsEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.TenantManagement.EntityFrameworkCore.AbpTenantManagementEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.FeatureManagement.EntityFrameworkCore.AbpFeatureManagementEntityFrameworkCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Shared.Hosting.Microservices.KonSoftSharedHostingMicroservicesModule
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Shared.Hosting.AspNetCore.KonSoftSharedHostingAspNetCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Shared.Localization.KonSoftSharedLocalizationModule
+2025-10-26 10:39:21.030 +08:00 [INF] - KonSoft.Shared.Hosting.KonSoftSharedHostingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.BackgroundJobs.RabbitMQ.AbpBackgroundJobsRabbitMqModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.RabbitMQ.AbpRabbitMqModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Authentication.JwtBearer.AbpAspNetCoreAuthenticationJwtBearerModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.EventBus.RabbitMq.AbpEventBusRabbitMqModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule
+2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule
+2025-10-26 10:39:21.367 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker
diff --git a/modules/admin/src/KonSoft.Admin.Application.Contracts/Dtos/OrderPagedResultRequestDto.cs b/modules/admin/src/KonSoft.Admin.Application.Contracts/Dtos/OrderPagedResultRequestDto.cs
new file mode 100644
index 0000000..e1f63b0
--- /dev/null
+++ b/modules/admin/src/KonSoft.Admin.Application.Contracts/Dtos/OrderPagedResultRequestDto.cs
@@ -0,0 +1,25 @@
+using KonSoft.Admin.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Dtos;
+
+namespace KonSoft.Admin.Dtos
+{
+ public class OrderPagedResultRequestDto : PagedResultRequestDto
+ {
+ ///
+ /// 订单状态
+ ///
+ public OrderStatus Status { get; set; } = OrderStatus.Created;
+
+ ///
+ /// 服务时间
+ ///
+ public DateTime? ServiceTime { get; set; }
+
+
+ }
+}
diff --git a/modules/admin/src/KonSoft.Admin.Application.Contracts/Dtos/WorkerRegisterDto.cs b/modules/admin/src/KonSoft.Admin.Application.Contracts/Dtos/WorkerRegisterDto.cs
new file mode 100644
index 0000000..420b9dd
--- /dev/null
+++ b/modules/admin/src/KonSoft.Admin.Application.Contracts/Dtos/WorkerRegisterDto.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace KonSoft.Admin.Dtos
+{
+ public class WorkerRegisterDto
+ {
+ }
+}
diff --git a/modules/admin/src/KonSoft.Admin.Application.Contracts/IApplicationServices/IHouseholdWorkerAppService.cs b/modules/admin/src/KonSoft.Admin.Application.Contracts/IApplicationServices/IHouseholdWorkerAppService.cs
new file mode 100644
index 0000000..ac60b01
--- /dev/null
+++ b/modules/admin/src/KonSoft.Admin.Application.Contracts/IApplicationServices/IHouseholdWorkerAppService.cs
@@ -0,0 +1,61 @@
+using KonSoft.Admin.Dtos;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+
+namespace KonSoft.Admin.IApplicationServices;
+
+public interface IHouseholdWorkerAppService : IApplicationService
+{
+ ///
+ /// 家政人员注册
+ ///
+ ///
+ ///
+ Task RegisterAsync(WorkerRegisterDto input);
+
+ ///
+ /// 家政人员接单
+ ///
+ ///
+ ///
+ Task AcceptOrderAsync(Guid orderId);
+
+ ///
+ /// 家政人员退单
+ ///
+ ///
+ ///
+ Task RejectOrderAsync(Guid orderId);
+
+
+ ///
+ /// 已到达(开始服务)
+ ///
+ ///
+ ///
+ Task StartServiceAsync(Guid orderId);
+
+ ///
+ /// 完成服务
+ ///
+ ///
+ ///
+ Task CompleteServiceAsync(Guid orderId);
+
+ ///
+ /// 获取当前分配给家政人员的订单列表
+ ///
+ ///
+ Task> GetAssignedOrdersAsync(OrderPagedResultRequestDto requestDto);
+
+ ///
+ /// 获取待接单订单
+ ///
+ ///
+ Task> GetCreatedOrdersAsync(OrderPagedResultRequestDto requestDto);
+
+
+
+}
\ No newline at end of file
diff --git a/modules/admin/src/KonSoft.Admin.Application.Contracts/IApplicationServices/IOrderAppService.cs b/modules/admin/src/KonSoft.Admin.Application.Contracts/IApplicationServices/IOrderAppService.cs
index 3750d02..fe73949 100644
--- a/modules/admin/src/KonSoft.Admin.Application.Contracts/IApplicationServices/IOrderAppService.cs
+++ b/modules/admin/src/KonSoft.Admin.Application.Contracts/IApplicationServices/IOrderAppService.cs
@@ -15,14 +15,37 @@ public interface IOrderAppService : IApplicationService
///
Task CreateAsync(CreateOrderDto input);
- Task PayAsync(Guid orderId, PayOrderDto input);
- Task AssignAsync(Guid orderId, Guid workerId);
- Task StartServiceAsync(Guid orderId);
- Task CompleteServiceAsync(Guid orderId);
- Task ConfirmAsync(Guid orderId);
+ ///
+ /// 支付上门费
+ ///
+ ///
+ ///
+ ///
+ Task PayServiceCallFeeAsync(Guid orderId, PayOrderDto input);
+
+
+ ///
+ /// 支付
+ ///
+ ///
+ ///
+ ///
+ Task PayAsync(Guid orderId, PayOrderDto input);
+
+ ///
+ /// 取消订单
+ ///
+ ///
+ ///
+ ///
Task CancelAsync(Guid orderId, string reason);
Task DeleteAsync(params Guid[] ids);
+ ///
+ /// 修改订单
+ ///
+ ///
+ ///
Task EditAsync(OrderDto input);
Task GetAsync(Guid id);
- Task> GetListAsync(PagedResultRequestDto input);
+ Task> GetListAsync(OrderPagedResultRequestDto input);
}
\ No newline at end of file
diff --git a/modules/admin/src/KonSoft.Admin.Application.Contracts/IApplicationServices/IWorkerAppService.cs b/modules/admin/src/KonSoft.Admin.Application.Contracts/IApplicationServices/IWorkerAppService.cs
deleted file mode 100644
index 105a191..0000000
--- a/modules/admin/src/KonSoft.Admin.Application.Contracts/IApplicationServices/IWorkerAppService.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using Volo.Abp.Application.Services;
-
-namespace KonSoft.Admin.IApplicationServices;
-
-public interface IWorkerAppService : IApplicationService
-{
-}
\ No newline at end of file
diff --git a/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/HouseholdWorkerAppService.cs b/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/HouseholdWorkerAppService.cs
new file mode 100644
index 0000000..0c17aa6
--- /dev/null
+++ b/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/HouseholdWorkerAppService.cs
@@ -0,0 +1,126 @@
+using KonSoft.Admin.Dtos;
+using KonSoft.Admin.Entities;
+using KonSoft.Admin.IApplicationServices;
+using KonSoft.Admin.IRepositories;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.Application.Services;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.ObjectMapping;
+
+namespace KonSoft.Admin.ApplicationServices
+{
+ public class HouseholdWorkerAppService : ApplicationService, IHouseholdWorkerAppService
+ {
+ public IOrderRepository _orderRepository { get; set; }
+
+ public HouseholdWorkerAppService(IOrderRepository orderRepository)
+ {
+ _orderRepository = orderRepository;
+ }
+
+ ///
+ /// 家政人员接单
+ ///
+ ///
+ ///
+ ///
+ public async Task AcceptOrderAsync(Guid orderId)
+ {
+ var order = await _orderRepository.FirstOrDefaultAsync(o => o.Id == orderId);
+ if (order == null) throw new BusinessException("未找到订单");
+
+ order.AssignWorker(CurrentUser.Id!.Value);
+
+ }
+
+
+
+ ///
+ /// 获取已接单任务
+ ///
+ ///
+ ///
+ public async Task> GetAssignedOrdersAsync(OrderPagedResultRequestDto requestDto)
+ {
+ //TODO 默认根据角色筛选对应订单,整合到一个接口中
+ var query = await _orderRepository.GetQueryableAsync();
+ var orders = query.Where(o => o.HouseholdWorkerId == CurrentUser.Id)
+ .PageBy(requestDto).ToList(); ;
+
+ return ObjectMapper.Map, List>(orders);
+ }
+
+ ///
+ /// 获取待接单任务
+ ///
+ ///
+ ///
+ public async Task> GetCreatedOrdersAsync(OrderPagedResultRequestDto requestDto)
+ {
+ //TODO 默认根据角色筛选对应订单,整合到一个接口中
+ var query = await _orderRepository.GetQueryableAsync();
+ var orders = query.Where(o => o.Status == Enums.OrderStatus.Created)
+ .PageBy(requestDto).ToList(); ;
+
+ return ObjectMapper.Map, List>(orders);
+ }
+
+ ///
+ /// 家政人员注册
+ ///
+ ///
+ ///
+ ///
+ public Task RegisterAsync(WorkerRegisterDto input)
+ {
+ throw new NotImplementedException();
+ }
+ ///
+ /// 退单
+ ///
+ ///
+ ///
+ ///
+ public async Task RejectOrderAsync(Guid orderId)
+ {
+ var order = await _orderRepository.FirstOrDefaultAsync(o => o.Id == orderId);
+ if (order == null) throw new BusinessException("未找到订单");
+
+ order.RejectOrder(CurrentUser.Id!.Value);
+ }
+ ///
+ /// 开始服务
+ ///
+ ///
+ ///
+ ///
+ public async Task StartServiceAsync(Guid orderId)
+ {
+ var order = await _orderRepository.FirstOrDefaultAsync(o => o.Id == orderId);
+ if (order == null) throw new BusinessException("未找到订单");
+
+ order.StartService();
+
+ }
+
+ ///
+ /// 服务完成
+ ///
+ ///
+ ///
+ ///
+ public async Task CompleteServiceAsync(Guid orderId)
+ {
+ var order = await _orderRepository.FirstOrDefaultAsync(o => o.Id == orderId);
+ if (order == null) throw new BusinessException("未找到订单");
+
+ order.CompleteService();
+
+ }
+ }
+}
diff --git a/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/OrderAppService.cs b/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/OrderAppService.cs
index 7768805..5a5ee8a 100644
--- a/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/OrderAppService.cs
+++ b/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/OrderAppService.cs
@@ -18,18 +18,6 @@ public class OrderAppService(IOrderRepository orderRepository) : ApplicationServ
{
private readonly IOrderRepository _orderRepository = orderRepository;
- ///
- /// 分配师傅
- ///
- ///
- ///
- ///
- ///
- public async Task AssignAsync(Guid orderId, Guid workerId)
- {
- var order = await _orderRepository.GetAsync(o => o.Id == orderId);
- order.AssignWorker(workerId);
- }
///
/// 取消订单
@@ -44,29 +32,6 @@ public class OrderAppService(IOrderRepository orderRepository) : ApplicationServ
order.Cancel(reason);
}
- ///
- /// 完成订单
- ///
- ///
- ///
- ///
- public async Task CompleteServiceAsync(Guid orderId)
- {
- var order = await _orderRepository.GetAsync(o => o.Id == orderId);
- order.CompleteService();
- }
-
- ///
- /// 确认订单
- ///
- ///
- ///
- ///
- public async Task ConfirmAsync(Guid orderId)
- {
- var order = await _orderRepository.GetAsync(o => o.Id == orderId);
- order.ConfirmCompletion();
- }
///
/// 创建订单
@@ -97,10 +62,9 @@ public class OrderAppService(IOrderRepository orderRepository) : ApplicationServ
}
///
- /// 修改订单信息
+ /// 修改订单信息
///
/// 订单DTO对象
- /// s
public async Task EditAsync(OrderDto input)
{
// 根据ID查询订单,如果不存在则抛出异常【修改前端必然看到了,数据若查不到提示自定义异常信息】
@@ -111,35 +75,37 @@ public class OrderAppService(IOrderRepository orderRepository) : ApplicationServ
ObjectMapper.Map(input, order);
// 更新订单
- await _orderRepository.UpdateAsync(order);
+ //await _orderRepository.UpdateAsync(order);
}
+ public async Task PayServiceCallFeeAsync(Guid orderId, PayOrderDto input)
+ {
+ var order = await _orderRepository.FirstOrDefaultAsync(o => o.Id == orderId);
+ if (order == null) throw new BusinessException("未找到订单");
+
+ order.PayServiceCallFee();
+
+ }
+
+
///
- /// 支付
+ /// 支付
///
///
///
///
///
- public Task PayAsync(Guid orderId, PayOrderDto input)
+ public async Task PayAsync(Guid orderId, PayOrderDto input)
{
- throw new NotImplementedException();
+ var order = await _orderRepository.FirstOrDefaultAsync(o => o.Id == orderId);
+ if (order == null) throw new BusinessException("未找到订单");
+
+ order.Pay();
}
- ///
- /// 开始订单
- ///
- ///
- ///
- ///
- public async Task StartServiceAsync(Guid orderId)
- {
- var order = await _orderRepository.GetAsync(o => o.Id == orderId);
- order.StartService();
- }
///
- /// 根据订单ID获取单个订单
+ /// 根据订单ID获取单个订单
///
public async Task GetAsync(Guid id)
{
@@ -151,12 +117,13 @@ public class OrderAppService(IOrderRepository orderRepository) : ApplicationServ
}
///
- /// 获取所有订单列表
+ /// 获取订单列表
///
- public async Task> GetListAsync(PagedResultRequestDto input)
+ public async Task> GetListAsync(OrderPagedResultRequestDto input)
{
- // 查询所有订单
- var orders = await _orderRepository.GetPagedListAsync(input.SkipCount, input.MaxResultCount, "Id");
+ //TODO 默认根据角色筛选对应订单,整合到一个接口中
+ var query = await _orderRepository.GetQueryableAsync();
+ var orders = query.PageBy(input).OrderBy(o => o.Id).ToList();
var totalCount = await _orderRepository.CountAsync();
@@ -164,4 +131,8 @@ public class OrderAppService(IOrderRepository orderRepository) : ApplicationServ
return new PagedResultDto(totalCount, orderDtos);
}
+
+
+
+
}
\ No newline at end of file
diff --git a/modules/admin/src/KonSoft.Admin.Domain.Shared/Enums/OrderStatus.cs b/modules/admin/src/KonSoft.Admin.Domain.Shared/Enums/OrderStatus.cs
index e6c8335..7c353ce 100644
--- a/modules/admin/src/KonSoft.Admin.Domain.Shared/Enums/OrderStatus.cs
+++ b/modules/admin/src/KonSoft.Admin.Domain.Shared/Enums/OrderStatus.cs
@@ -2,13 +2,13 @@
public enum OrderStatus
{
- PendingPayment, // 待支付
- PaidWaitingAssign, // 已支付待派单
- AssignedWaitingService, // 已派单待服务
- InService, // 服务中
- WaitingConfirm, // 待用户确认
- Completed, // 已完成
- Canceled, // 已取消
- Refunding, // 退款中
- Refunded // 已退款
+ Created = 1, //用户创建订单
+ Assigned, //家政人员已接单
+ ServiceCallPaymentComplete, //上门费支付完成
+ ServiceStarted, //服务开始
+ ServiceCompleted, //服务已完成
+ PaymentPending, //用户支付订单
+ PaymentComplete, //用户支付完成
+ Cancelled, //订单取消
+ Refunded, //订单退款
}
\ No newline at end of file
diff --git a/modules/admin/src/KonSoft.Admin.Domain/Entities/Order.cs b/modules/admin/src/KonSoft.Admin.Domain/Entities/Order.cs
index 1bcb9cb..157f0c8 100644
--- a/modules/admin/src/KonSoft.Admin.Domain/Entities/Order.cs
+++ b/modules/admin/src/KonSoft.Admin.Domain/Entities/Order.cs
@@ -1,7 +1,9 @@
-using System;
-using KonSoft.Admin.Enums;
+using KonSoft.Admin.Enums;
using KonSoft.Admin.ValueObjects;
+using System;
+using Volo.Abp;
using Volo.Abp.Domain.Entities.Auditing;
+using Volo.Abp.Identity;
namespace KonSoft.Admin.Entities;
@@ -21,18 +23,20 @@ public class Order : FullAuditedAggregateRoot
Amount = amount;
Address = address;
Remark = remark;
- Status = OrderStatus.PendingPayment;
+ Status = OrderStatus.Created;
}
///
/// 用户ID
///
public Guid CustomerId { get; private set; }
+ public virtual IdentityUser Customer { get; private set; }
///
/// 家政人员ID
///
- public Guid? WorkerId { get; private set; }
+ public Guid? HouseholdWorkerId { get; private set; }
+ public IdentityUser? HouseholdWorker { get; private set; }
///
/// 服务项目ID
@@ -80,79 +84,105 @@ public class Order : FullAuditedAggregateRoot
public string? CancelReason { get; private set; }
- public void MarkPaid(decimal paidAmount, string method)
- {
- if (Status != OrderStatus.PendingPayment)
- {
- throw new InvalidOperationException("订单不在待付款状态");
- }
+ //public void MarkPaid(decimal paidAmount, string method)
+ //{
+ // if (Status != OrderStatus.PendingPayment)
+ // {
+ // throw new InvalidOperationException("订单不在待付款状态");
+ // }
- PaidAmount = paidAmount;
- PaymentMethod = method;
- Status = OrderStatus.PaidWaitingAssign;
- }
+ // PaidAmount = paidAmount;
+ // PaymentMethod = method;
+ // Status = OrderStatus.PaidWaitingAssign;
+ //}
public void AssignWorker(Guid workerId)
{
- if (Status != OrderStatus.PaidWaitingAssign)
+ if (Status != OrderStatus.Created)
{
- throw new InvalidOperationException("订单无法分配师傅");
+ throw new BusinessException("订单无法分配师傅");
}
- WorkerId = workerId;
- Status = OrderStatus.AssignedWaitingService;
+ HouseholdWorkerId = workerId;
+ Status = OrderStatus.Assigned;
+ }
+
+ public void RejectOrder(Guid workerId)
+ {
+ if (Status != OrderStatus.Created)
+ {
+ throw new BusinessException("订单无法分配师傅");
+ }
+ if (HouseholdWorkerId != workerId)
+ {
+ throw new BusinessException("订单不属于你,无法退单");
+ }
+
+
+ Status = OrderStatus.Created;
+ }
+
+
+ public void PayServiceCallFee()
+ {
+ if (Status != OrderStatus.Assigned)
+ {
+ throw new BusinessException("订单无法支付上门费");
+ }
+
+
+ Status = OrderStatus.ServiceCallPaymentComplete;
+ }
+
+
+ public void Pay()
+ {
+ if (Status != OrderStatus.ServiceCompleted)
+ {
+ throw new BusinessException("订单服务未完成无法支付");
+ }
+
+ Status = OrderStatus.PaymentPending;
}
public void StartService()
{
- if (Status != OrderStatus.AssignedWaitingService)
+ if (Status != OrderStatus.ServiceCallPaymentComplete)
{
- throw new InvalidOperationException("订单无法开始");
+ throw new BusinessException("订单未支付上门费无法开始");
}
-
- Status = OrderStatus.InService;
+ Status = OrderStatus.ServiceStarted;
}
public void CompleteService()
{
- if (Status != OrderStatus.InService)
+ if (Status != OrderStatus.ServiceStarted)
{
- throw new InvalidOperationException("订单未开始服务,无法完成");
+ throw new BusinessException("订单未开始,无法完成");
}
-
- Status = OrderStatus.WaitingConfirm;
+ Status = OrderStatus.ServiceCompleted;
}
- public void ConfirmCompletion()
- {
- if (Status != OrderStatus.WaitingConfirm)
- {
- throw new InvalidOperationException("订单无法确认");
- }
-
-
- Status = OrderStatus.Completed;
- }
public void Cancel(string reason)
{
// 若已完成或退款中则不可取消
- if (Status == OrderStatus.Completed || Status == OrderStatus.Refunding || Status == OrderStatus.Refunded)
+ if (Status == OrderStatus.ServiceCompleted || Status == OrderStatus.Cancelled || Status == OrderStatus.Refunded)
{
- throw new InvalidOperationException("订单无法被取消");
+ throw new BusinessException("订单无法被取消");
}
CancelReason = reason;
- Status = OrderStatus.Canceled;
+ Status = OrderStatus.Cancelled;
}
}
\ No newline at end of file