feat: 门店员工与排班管理上线

This commit is contained in:
2025-12-04 09:32:03 +08:00
parent 1a5209a8b1
commit 19422df0f1
31 changed files with 1265 additions and 7 deletions

View File

@@ -0,0 +1,46 @@
using MediatR;
using TakeoutSaaS.Application.App.Stores.Dto;
using TakeoutSaaS.Domain.Merchants.Enums;
namespace TakeoutSaaS.Application.App.Stores.Commands;
/// <summary>
/// 创建员工排班命令。
/// </summary>
public sealed record CreateStoreEmployeeShiftCommand : IRequest<StoreEmployeeShiftDto>
{
/// <summary>
/// 门店 ID。
/// </summary>
public long StoreId { get; init; }
/// <summary>
/// 员工 ID。
/// </summary>
public long StaffId { get; init; }
/// <summary>
/// 班次日期。
/// </summary>
public DateTime ShiftDate { get; init; }
/// <summary>
/// 开始时间。
/// </summary>
public TimeSpan StartTime { get; init; }
/// <summary>
/// 结束时间。
/// </summary>
public TimeSpan EndTime { get; init; }
/// <summary>
/// 排班角色。
/// </summary>
public StaffRoleType RoleType { get; init; } = StaffRoleType.FrontDesk;
/// <summary>
/// 备注。
/// </summary>
public string? Notes { get; init; }
}

View File

@@ -0,0 +1,36 @@
using MediatR;
using TakeoutSaaS.Application.App.Stores.Dto;
using TakeoutSaaS.Domain.Merchants.Enums;
namespace TakeoutSaaS.Application.App.Stores.Commands;
/// <summary>
/// 创建门店员工命令。
/// </summary>
public sealed record CreateStoreStaffCommand : IRequest<StoreStaffDto>
{
/// <summary>
/// 门店 ID。
/// </summary>
public long StoreId { get; init; }
/// <summary>
/// 姓名。
/// </summary>
public string Name { get; init; } = string.Empty;
/// <summary>
/// 手机号。
/// </summary>
public string Phone { get; init; } = string.Empty;
/// <summary>
/// 邮箱。
/// </summary>
public string? Email { get; init; }
/// <summary>
/// 角色。
/// </summary>
public StaffRoleType RoleType { get; init; } = StaffRoleType.FrontDesk;
}

View File

@@ -0,0 +1,19 @@
using MediatR;
namespace TakeoutSaaS.Application.App.Stores.Commands;
/// <summary>
/// 删除员工排班命令。
/// </summary>
public sealed record DeleteStoreEmployeeShiftCommand : IRequest<bool>
{
/// <summary>
/// 门店 ID。
/// </summary>
public long StoreId { get; init; }
/// <summary>
/// 排班 ID。
/// </summary>
public long ShiftId { get; init; }
}

View File

@@ -0,0 +1,19 @@
using MediatR;
namespace TakeoutSaaS.Application.App.Stores.Commands;
/// <summary>
/// 删除门店员工命令。
/// </summary>
public sealed record DeleteStoreStaffCommand : IRequest<bool>
{
/// <summary>
/// 门店 ID。
/// </summary>
public long StoreId { get; init; }
/// <summary>
/// 员工 ID。
/// </summary>
public long StaffId { get; init; }
}

View File

@@ -0,0 +1,51 @@
using MediatR;
using TakeoutSaaS.Application.App.Stores.Dto;
using TakeoutSaaS.Domain.Merchants.Enums;
namespace TakeoutSaaS.Application.App.Stores.Commands;
/// <summary>
/// 更新员工排班命令。
/// </summary>
public sealed record UpdateStoreEmployeeShiftCommand : IRequest<StoreEmployeeShiftDto?>
{
/// <summary>
/// 排班 ID。
/// </summary>
public long ShiftId { get; init; }
/// <summary>
/// 门店 ID。
/// </summary>
public long StoreId { get; init; }
/// <summary>
/// 员工 ID。
/// </summary>
public long StaffId { get; init; }
/// <summary>
/// 班次日期。
/// </summary>
public DateTime ShiftDate { get; init; }
/// <summary>
/// 开始时间。
/// </summary>
public TimeSpan StartTime { get; init; }
/// <summary>
/// 结束时间。
/// </summary>
public TimeSpan EndTime { get; init; }
/// <summary>
/// 排班角色。
/// </summary>
public StaffRoleType RoleType { get; init; } = StaffRoleType.FrontDesk;
/// <summary>
/// 备注。
/// </summary>
public string? Notes { get; init; }
}

View File

@@ -0,0 +1,46 @@
using MediatR;
using TakeoutSaaS.Application.App.Stores.Dto;
using TakeoutSaaS.Domain.Merchants.Enums;
namespace TakeoutSaaS.Application.App.Stores.Commands;
/// <summary>
/// 更新门店员工命令。
/// </summary>
public sealed record UpdateStoreStaffCommand : IRequest<StoreStaffDto?>
{
/// <summary>
/// 员工 ID。
/// </summary>
public long StaffId { get; init; }
/// <summary>
/// 门店 ID。
/// </summary>
public long StoreId { get; init; }
/// <summary>
/// 姓名。
/// </summary>
public string Name { get; init; } = string.Empty;
/// <summary>
/// 手机号。
/// </summary>
public string Phone { get; init; } = string.Empty;
/// <summary>
/// 邮箱。
/// </summary>
public string? Email { get; init; }
/// <summary>
/// 角色。
/// </summary>
public StaffRoleType RoleType { get; init; } = StaffRoleType.FrontDesk;
/// <summary>
/// 状态。
/// </summary>
public StaffStatus Status { get; init; } = StaffStatus.Active;
}