feat: migrate snowflake ids and refresh migrations

This commit is contained in:
2025-12-02 09:04:37 +08:00
parent 462e15abbb
commit 148475fa43
174 changed files with 8020 additions and 34278 deletions

View File

@@ -11,7 +11,7 @@ public sealed class MetricAlertRule : MultiTenantEntityBase
/// <summary>
/// 关联指标。
/// </summary>
public Guid MetricDefinitionId { get; set; }
public long MetricDefinitionId { get; set; }
/// <summary>
/// 触发条件 JSON。

View File

@@ -10,7 +10,7 @@ public sealed class MetricSnapshot : MultiTenantEntityBase
/// <summary>
/// 指标定义 ID。
/// </summary>
public Guid MetricDefinitionId { get; set; }
public long MetricDefinitionId { get; set; }
/// <summary>
/// 维度键JSON

View File

@@ -11,7 +11,7 @@ public sealed class Coupon : MultiTenantEntityBase
/// <summary>
/// 模板标识。
/// </summary>
public Guid CouponTemplateId { get; set; }
public long CouponTemplateId { get; set; }
/// <summary>
/// 券码或序列号。
@@ -21,12 +21,12 @@ public sealed class Coupon : MultiTenantEntityBase
/// <summary>
/// 归属用户。
/// </summary>
public Guid UserId { get; set; }
public long UserId { get; set; }
/// <summary>
/// 订单 ID已使用时记录
/// </summary>
public Guid? OrderId { get; set; }
public long? OrderId { get; set; }
/// <summary>
/// 状态。

View File

@@ -11,7 +11,7 @@ public sealed class ChatMessage : MultiTenantEntityBase
/// <summary>
/// 会话标识。
/// </summary>
public Guid ChatSessionId { get; set; }
public long ChatSessionId { get; set; }
/// <summary>
/// 发送方类型。
@@ -21,7 +21,7 @@ public sealed class ChatMessage : MultiTenantEntityBase
/// <summary>
/// 发送方用户 ID。
/// </summary>
public Guid? SenderUserId { get; set; }
public long? SenderUserId { get; set; }
/// <summary>
/// 消息内容。

View File

@@ -16,17 +16,17 @@ public sealed class ChatSession : MultiTenantEntityBase
/// <summary>
/// 顾客用户 ID。
/// </summary>
public Guid CustomerUserId { get; set; }
public long CustomerUserId { get; set; }
/// <summary>
/// 当前客服员工 ID。
/// </summary>
public Guid? AgentUserId { get; set; }
public long? AgentUserId { get; set; }
/// <summary>
/// 所属门店(可空为平台)。
/// </summary>
public Guid? StoreId { get; set; }
public long? StoreId { get; set; }
/// <summary>
/// 会话状态。

View File

@@ -16,12 +16,12 @@ public sealed class SupportTicket : MultiTenantEntityBase
/// <summary>
/// 客户用户 ID。
/// </summary>
public Guid CustomerUserId { get; set; }
public long CustomerUserId { get; set; }
/// <summary>
/// 关联订单(如有)。
/// </summary>
public Guid? OrderId { get; set; }
public long? OrderId { get; set; }
/// <summary>
/// 工单主题。
@@ -46,7 +46,7 @@ public sealed class SupportTicket : MultiTenantEntityBase
/// <summary>
/// 指派的客服。
/// </summary>
public Guid? AssignedAgentId { get; set; }
public long? AssignedAgentId { get; set; }
/// <summary>
/// 关闭时间。

View File

@@ -10,12 +10,12 @@ public sealed class TicketComment : MultiTenantEntityBase
/// <summary>
/// 工单标识。
/// </summary>
public Guid SupportTicketId { get; set; }
public long SupportTicketId { get; set; }
/// <summary>
/// 评论人 ID。
/// </summary>
public Guid? AuthorUserId { get; set; }
public long? AuthorUserId { get; set; }
/// <summary>
/// 评论内容。

View File

@@ -11,7 +11,7 @@ public sealed class DeliveryEvent : MultiTenantEntityBase
/// <summary>
/// 配送单标识。
/// </summary>
public Guid DeliveryOrderId { get; set; }
public long DeliveryOrderId { get; set; }
/// <summary>
/// 事件类型。

View File

@@ -8,7 +8,7 @@ namespace TakeoutSaaS.Domain.Deliveries.Entities;
/// </summary>
public sealed class DeliveryOrder : MultiTenantEntityBase
{
public Guid OrderId { get; set; }
public long OrderId { get; set; }
/// <summary>
/// 配送服务商。

View File

@@ -0,0 +1,42 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Deliveries.Entities;
namespace TakeoutSaaS.Domain.Deliveries.Repositories;
/// <summary>
/// 配送聚合仓储契约。
/// </summary>
public interface IDeliveryRepository
{
/// <summary>
/// 依据标识获取配送单。
/// </summary>
Task<DeliveryOrder?> FindByIdAsync(long deliveryOrderId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 依据订单标识获取配送单。
/// </summary>
Task<DeliveryOrder?> FindByOrderIdAsync(long orderId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取配送事件轨迹。
/// </summary>
Task<IReadOnlyList<DeliveryEvent>> GetEventsAsync(long deliveryOrderId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 新增配送单。
/// </summary>
Task AddDeliveryOrderAsync(DeliveryOrder deliveryOrder, CancellationToken cancellationToken = default);
/// <summary>
/// 新增配送事件。
/// </summary>
Task AddEventAsync(DeliveryEvent deliveryEvent, CancellationToken cancellationToken = default);
/// <summary>
/// 持久化变更。
/// </summary>
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}

View File

@@ -10,7 +10,7 @@ public sealed class DictionaryItem : MultiTenantEntityBase
/// <summary>
/// 关联分组 ID。
/// </summary>
public Guid GroupId { get; set; }
public long GroupId { get; set; }
/// <summary>
/// 字典项键。

View File

@@ -14,7 +14,7 @@ public interface IDictionaryRepository
/// <summary>
/// 依据 ID 获取分组。
/// </summary>
Task<DictionaryGroup?> FindGroupByIdAsync(Guid id, CancellationToken cancellationToken = default);
Task<DictionaryGroup?> FindGroupByIdAsync(long id, CancellationToken cancellationToken = default);
/// <summary>
/// 依据编码获取分组。
@@ -39,17 +39,17 @@ public interface IDictionaryRepository
/// <summary>
/// 依据 ID 获取字典项。
/// </summary>
Task<DictionaryItem?> FindItemByIdAsync(Guid id, CancellationToken cancellationToken = default);
Task<DictionaryItem?> FindItemByIdAsync(long id, CancellationToken cancellationToken = default);
/// <summary>
/// 获取某分组下的所有字典项。
/// </summary>
Task<IReadOnlyList<DictionaryItem>> GetItemsByGroupIdAsync(Guid groupId, CancellationToken cancellationToken = default);
Task<IReadOnlyList<DictionaryItem>> GetItemsByGroupIdAsync(long groupId, CancellationToken cancellationToken = default);
/// <summary>
/// 按分组编码集合获取字典项(可包含系统参数)。
/// </summary>
Task<IReadOnlyList<DictionaryItem>> GetItemsByCodesAsync(IEnumerable<string> codes, Guid tenantId, bool includeSystem, CancellationToken cancellationToken = default);
Task<IReadOnlyList<DictionaryItem>> GetItemsByCodesAsync(IEnumerable<string> codes, long tenantId, bool includeSystem, CancellationToken cancellationToken = default);
/// <summary>
/// 新增字典项。

View File

@@ -11,17 +11,17 @@ public sealed class AffiliateOrder : MultiTenantEntityBase
/// <summary>
/// 推广人标识。
/// </summary>
public Guid AffiliatePartnerId { get; set; }
public long AffiliatePartnerId { get; set; }
/// <summary>
/// 关联订单。
/// </summary>
public Guid OrderId { get; set; }
public long OrderId { get; set; }
/// <summary>
/// 用户 ID。
/// </summary>
public Guid BuyerUserId { get; set; }
public long BuyerUserId { get; set; }
/// <summary>
/// 订单金额。

View File

@@ -11,7 +11,7 @@ public sealed class AffiliatePartner : MultiTenantEntityBase
/// <summary>
/// 用户 ID如绑定平台账号
/// </summary>
public Guid? UserId { get; set; }
public long? UserId { get; set; }
/// <summary>
/// 昵称或渠道名称。

View File

@@ -11,7 +11,7 @@ public sealed class AffiliatePayout : MultiTenantEntityBase
/// <summary>
/// 合作伙伴标识。
/// </summary>
public Guid AffiliatePartnerId { get; set; }
public long AffiliatePartnerId { get; set; }
/// <summary>
/// 结算周期描述。

View File

@@ -10,12 +10,12 @@ public sealed class CheckInRecord : MultiTenantEntityBase
/// <summary>
/// 活动标识。
/// </summary>
public Guid CheckInCampaignId { get; set; }
public long CheckInCampaignId { get; set; }
/// <summary>
/// 用户标识。
/// </summary>
public Guid UserId { get; set; }
public long UserId { get; set; }
/// <summary>
/// 签到日期(本地)。

View File

@@ -10,12 +10,12 @@ public sealed class CommunityComment : MultiTenantEntityBase
/// <summary>
/// 动态标识。
/// </summary>
public Guid PostId { get; set; }
public long PostId { get; set; }
/// <summary>
/// 评论人。
/// </summary>
public Guid AuthorUserId { get; set; }
public long AuthorUserId { get; set; }
/// <summary>
/// 评论内容。
@@ -25,7 +25,7 @@ public sealed class CommunityComment : MultiTenantEntityBase
/// <summary>
/// 父级评论 ID。
/// </summary>
public Guid? ParentId { get; set; }
public long? ParentId { get; set; }
/// <summary>
/// 状态。

View File

@@ -11,7 +11,7 @@ public sealed class CommunityPost : MultiTenantEntityBase
/// <summary>
/// 作者用户 ID。
/// </summary>
public Guid AuthorUserId { get; set; }
public long AuthorUserId { get; set; }
/// <summary>
/// 标题。

View File

@@ -11,12 +11,12 @@ public sealed class CommunityReaction : MultiTenantEntityBase
/// <summary>
/// 动态 ID。
/// </summary>
public Guid PostId { get; set; }
public long PostId { get; set; }
/// <summary>
/// 用户 ID。
/// </summary>
public Guid UserId { get; set; }
public long UserId { get; set; }
/// <summary>
/// 反应类型。

View File

@@ -11,12 +11,12 @@ public sealed class GroupOrder : MultiTenantEntityBase
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 关联商品或套餐。
/// </summary>
public Guid ProductId { get; set; }
public long ProductId { get; set; }
/// <summary>
/// 拼单编号。
@@ -26,7 +26,7 @@ public sealed class GroupOrder : MultiTenantEntityBase
/// <summary>
/// 团长用户 ID。
/// </summary>
public Guid LeaderUserId { get; set; }
public long LeaderUserId { get; set; }
/// <summary>
/// 成团需要的人数。

View File

@@ -11,17 +11,17 @@ public sealed class GroupParticipant : MultiTenantEntityBase
/// <summary>
/// 拼单活动标识。
/// </summary>
public Guid GroupOrderId { get; set; }
public long GroupOrderId { get; set; }
/// <summary>
/// 对应订单标识。
/// </summary>
public Guid OrderId { get; set; }
public long OrderId { get; set; }
/// <summary>
/// 用户标识。
/// </summary>
public Guid UserId { get; set; }
public long UserId { get; set; }
/// <summary>
/// 参与状态。

View File

@@ -25,7 +25,7 @@ public sealed class IdentityUser : MultiTenantEntityBase
/// <summary>
/// 所属商户(平台管理员为空)。
/// </summary>
public Guid? MerchantId { get; set; }
public long? MerchantId { get; set; }
/// <summary>
/// 角色集合。

View File

@@ -18,5 +18,5 @@ public interface IIdentityUserRepository
/// <summary>
/// 根据 ID 获取后台用户。
/// </summary>
Task<IdentityUser?> FindByIdAsync(Guid userId, CancellationToken cancellationToken = default);
Task<IdentityUser?> FindByIdAsync(long userId, CancellationToken cancellationToken = default);
}

View File

@@ -21,7 +21,7 @@ public interface IMiniUserRepository
/// <param name="id">用户 ID</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>小程序用户,如果不存在则返回 null</returns>
Task<MiniUser?> FindByIdAsync(Guid id, CancellationToken cancellationToken = default);
Task<MiniUser?> FindByIdAsync(long id, CancellationToken cancellationToken = default);
/// <summary>
/// 创建或更新小程序用户(如果 OpenId 已存在则更新,否则创建)。
@@ -33,5 +33,5 @@ public interface IMiniUserRepository
/// <param name="tenantId">租户 ID</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>创建或更新后的小程序用户</returns>
Task<MiniUser> CreateOrUpdateAsync(string openId, string? unionId, string? nickname, string? avatar, Guid tenantId, CancellationToken cancellationToken = default);
Task<MiniUser> CreateOrUpdateAsync(string openId, string? unionId, string? nickname, string? avatar, long tenantId, CancellationToken cancellationToken = default);
}

View File

@@ -11,7 +11,7 @@ public sealed class InventoryAdjustment : MultiTenantEntityBase
/// <summary>
/// 对应的库存记录标识。
/// </summary>
public Guid InventoryItemId { get; set; }
public long InventoryItemId { get; set; }
/// <summary>
/// 调整类型。
@@ -31,7 +31,7 @@ public sealed class InventoryAdjustment : MultiTenantEntityBase
/// <summary>
/// 操作人标识。
/// </summary>
public Guid? OperatorId { get; set; }
public long? OperatorId { get; set; }
/// <summary>
/// 发生时间。

View File

@@ -10,12 +10,12 @@ public sealed class InventoryBatch : MultiTenantEntityBase
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// SKU 标识。
/// </summary>
public Guid ProductSkuId { get; set; }
public long ProductSkuId { get; set; }
/// <summary>
/// 批次编号。

View File

@@ -10,12 +10,12 @@ public sealed class InventoryItem : MultiTenantEntityBase
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// SKU 标识。
/// </summary>
public Guid ProductSkuId { get; set; }
public long ProductSkuId { get; set; }
/// <summary>
/// 批次编号,可为空表示混批。

View File

@@ -10,7 +10,7 @@ public sealed class MemberGrowthLog : MultiTenantEntityBase
/// <summary>
/// 会员标识。
/// </summary>
public Guid MemberId { get; set; }
public long MemberId { get; set; }
/// <summary>
/// 变动数量。

View File

@@ -11,7 +11,7 @@ public sealed class MemberPointLedger : MultiTenantEntityBase
/// <summary>
/// 会员标识。
/// </summary>
public Guid MemberId { get; set; }
public long MemberId { get; set; }
/// <summary>
/// 变动数量,可为负值。
@@ -31,7 +31,7 @@ public sealed class MemberPointLedger : MultiTenantEntityBase
/// <summary>
/// 来源 ID订单、活动等
/// </summary>
public Guid? SourceId { get; set; }
public long? SourceId { get; set; }
/// <summary>
/// 发生时间。

View File

@@ -11,7 +11,7 @@ public sealed class MemberProfile : MultiTenantEntityBase
/// <summary>
/// 用户标识。
/// </summary>
public Guid UserId { get; set; }
public long UserId { get; set; }
/// <summary>
/// 手机号。
@@ -31,7 +31,7 @@ public sealed class MemberProfile : MultiTenantEntityBase
/// <summary>
/// 当前会员等级 ID。
/// </summary>
public Guid? MemberTierId { get; set; }
public long? MemberTierId { get; set; }
/// <summary>
/// 会员状态。

View File

@@ -11,7 +11,7 @@ public sealed class MerchantContract : MultiTenantEntityBase
/// <summary>
/// 所属商户标识。
/// </summary>
public Guid MerchantId { get; set; }
public long MerchantId { get; set; }
/// <summary>
/// 合同编号。

View File

@@ -11,7 +11,7 @@ public sealed class MerchantDocument : MultiTenantEntityBase
/// <summary>
/// 所属商户标识。
/// </summary>
public Guid MerchantId { get; set; }
public long MerchantId { get; set; }
/// <summary>
/// 证照类型。

View File

@@ -11,12 +11,12 @@ public sealed class MerchantStaff : MultiTenantEntityBase
/// <summary>
/// 所属商户标识。
/// </summary>
public Guid MerchantId { get; set; }
public long MerchantId { get; set; }
/// <summary>
/// 可选的关联门店 ID。
/// </summary>
public Guid? StoreId { get; set; }
public long? StoreId { get; set; }
/// <summary>
/// 员工姓名。
@@ -36,7 +36,7 @@ public sealed class MerchantStaff : MultiTenantEntityBase
/// <summary>
/// 登录账号 ID指向统一身份体系
/// </summary>
public Guid? IdentityUserId { get; set; }
public long? IdentityUserId { get; set; }
/// <summary>
/// 员工角色类型。

View File

@@ -0,0 +1,63 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Merchants.Entities;
using TakeoutSaaS.Domain.Merchants.Enums;
namespace TakeoutSaaS.Domain.Merchants.Repositories;
/// <summary>
/// 商户聚合仓储契约,提供基础 CRUD 与查询能力。
/// </summary>
public interface IMerchantRepository
{
/// <summary>
/// 依据标识获取商户。
/// </summary>
Task<Merchant?> FindByIdAsync(long merchantId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 按状态筛选商户列表。
/// </summary>
Task<IReadOnlyList<Merchant>> SearchAsync(long tenantId, MerchantStatus? status, CancellationToken cancellationToken = default);
/// <summary>
/// 获取指定商户的员工列表。
/// </summary>
Task<IReadOnlyList<MerchantStaff>> GetStaffAsync(long merchantId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取指定商户的合同列表。
/// </summary>
Task<IReadOnlyList<MerchantContract>> GetContractsAsync(long merchantId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取指定商户的资质文件列表。
/// </summary>
Task<IReadOnlyList<MerchantDocument>> GetDocumentsAsync(long merchantId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 新增商户主体。
/// </summary>
Task AddMerchantAsync(Merchant merchant, CancellationToken cancellationToken = default);
/// <summary>
/// 新增商户员工。
/// </summary>
Task AddStaffAsync(MerchantStaff staff, CancellationToken cancellationToken = default);
/// <summary>
/// 新增商户合同。
/// </summary>
Task AddContractAsync(MerchantContract contract, CancellationToken cancellationToken = default);
/// <summary>
/// 新增商户资质文件。
/// </summary>
Task AddDocumentAsync(MerchantDocument document, CancellationToken cancellationToken = default);
/// <summary>
/// 持久化变更。
/// </summary>
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}

View File

@@ -10,7 +10,7 @@ public sealed class MapLocation : MultiTenantEntityBase
/// <summary>
/// 关联门店 ID可空表示独立 POI。
/// </summary>
public Guid? StoreId { get; set; }
public long? StoreId { get; set; }
/// <summary>
/// 名称。

View File

@@ -11,12 +11,12 @@ public sealed class NavigationRequest : MultiTenantEntityBase
/// <summary>
/// 用户 ID。
/// </summary>
public Guid UserId { get; set; }
public long UserId { get; set; }
/// <summary>
/// 门店 ID。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 来源通道小程序、H5 等)。

View File

@@ -11,17 +11,17 @@ public sealed class CartItem : MultiTenantEntityBase
/// <summary>
/// 所属购物车标识。
/// </summary>
public Guid ShoppingCartId { get; set; }
public long ShoppingCartId { get; set; }
/// <summary>
/// 商品或 SKU 标识。
/// </summary>
public Guid ProductId { get; set; }
public long ProductId { get; set; }
/// <summary>
/// SKU 标识。
/// </summary>
public Guid? ProductSkuId { get; set; }
public long? ProductSkuId { get; set; }
/// <summary>
/// 商品名称快照。

View File

@@ -10,7 +10,7 @@ public sealed class CartItemAddon : MultiTenantEntityBase
/// <summary>
/// 所属购物车条目。
/// </summary>
public Guid CartItemId { get; set; }
public long CartItemId { get; set; }
/// <summary>
/// 选项名称。
@@ -25,5 +25,5 @@ public sealed class CartItemAddon : MultiTenantEntityBase
/// <summary>
/// 选项 ID可对应 ProductAddonOption
/// </summary>
public Guid? OptionId { get; set; }
public long? OptionId { get; set; }
}

View File

@@ -11,12 +11,12 @@ public sealed class CheckoutSession : MultiTenantEntityBase
/// <summary>
/// 用户标识。
/// </summary>
public Guid UserId { get; set; }
public long UserId { get; set; }
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 会话 Token。

View File

@@ -11,12 +11,12 @@ public sealed class ShoppingCart : MultiTenantEntityBase
/// <summary>
/// 用户标识。
/// </summary>
public Guid UserId { get; set; }
public long UserId { get; set; }
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 购物车状态,包含正常/锁定。

View File

@@ -17,7 +17,7 @@ public sealed class Order : MultiTenantEntityBase
/// <summary>
/// 门店。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 下单渠道。
@@ -62,7 +62,7 @@ public sealed class Order : MultiTenantEntityBase
/// <summary>
/// 预约 ID。
/// </summary>
public Guid? ReservationId { get; set; }
public long? ReservationId { get; set; }
/// <summary>
/// 商品总额。

View File

@@ -10,12 +10,12 @@ public sealed class OrderItem : MultiTenantEntityBase
/// <summary>
/// 订单 ID。
/// </summary>
public Guid OrderId { get; set; }
public long OrderId { get; set; }
/// <summary>
/// 商品 ID。
/// </summary>
public Guid ProductId { get; set; }
public long ProductId { get; set; }
/// <summary>
/// 商品名称。

View File

@@ -11,7 +11,7 @@ public sealed class OrderStatusHistory : MultiTenantEntityBase
/// <summary>
/// 订单标识。
/// </summary>
public Guid OrderId { get; set; }
public long OrderId { get; set; }
/// <summary>
/// 变更后的状态。
@@ -21,7 +21,7 @@ public sealed class OrderStatusHistory : MultiTenantEntityBase
/// <summary>
/// 操作人标识(可为空表示系统)。
/// </summary>
public Guid? OperatorId { get; set; }
public long? OperatorId { get; set; }
/// <summary>
/// 备注信息。

View File

@@ -11,7 +11,7 @@ public sealed class RefundRequest : MultiTenantEntityBase
/// <summary>
/// 关联订单标识。
/// </summary>
public Guid OrderId { get; set; }
public long OrderId { get; set; }
/// <summary>
/// 退款单号。

View File

@@ -0,0 +1,69 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Orders.Entities;
using TakeoutSaaS.Domain.Orders.Enums;
using TakeoutSaaS.Domain.Payments.Enums;
namespace TakeoutSaaS.Domain.Orders.Repositories;
/// <summary>
/// 订单聚合仓储契约。
/// </summary>
public interface IOrderRepository
{
/// <summary>
/// 依据标识获取订单。
/// </summary>
Task<Order?> FindByIdAsync(long orderId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 依据订单号获取订单。
/// </summary>
Task<Order?> FindByOrderNoAsync(string orderNo, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 按状态筛选订单列表。
/// </summary>
Task<IReadOnlyList<Order>> SearchAsync(long tenantId, OrderStatus? status, PaymentStatus? paymentStatus, CancellationToken cancellationToken = default);
/// <summary>
/// 获取订单明细行。
/// </summary>
Task<IReadOnlyList<OrderItem>> GetItemsAsync(long orderId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取订单状态流转记录。
/// </summary>
Task<IReadOnlyList<OrderStatusHistory>> GetStatusHistoryAsync(long orderId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取订单退款申请。
/// </summary>
Task<IReadOnlyList<RefundRequest>> GetRefundsAsync(long orderId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 新增订单。
/// </summary>
Task AddOrderAsync(Order order, CancellationToken cancellationToken = default);
/// <summary>
/// 新增订单明细。
/// </summary>
Task AddItemsAsync(IEnumerable<OrderItem> items, CancellationToken cancellationToken = default);
/// <summary>
/// 新增订单状态记录。
/// </summary>
Task AddStatusHistoryAsync(OrderStatusHistory history, CancellationToken cancellationToken = default);
/// <summary>
/// 新增退款申请。
/// </summary>
Task AddRefundAsync(RefundRequest refund, CancellationToken cancellationToken = default);
/// <summary>
/// 持久化变更。
/// </summary>
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}

View File

@@ -11,7 +11,7 @@ public sealed class PaymentRecord : MultiTenantEntityBase
/// <summary>
/// 关联订单。
/// </summary>
public Guid OrderId { get; set; }
public long OrderId { get; set; }
/// <summary>
/// 支付方式。

View File

@@ -11,12 +11,12 @@ public sealed class PaymentRefundRecord : MultiTenantEntityBase
/// <summary>
/// 原支付记录标识。
/// </summary>
public Guid PaymentRecordId { get; set; }
public long PaymentRecordId { get; set; }
/// <summary>
/// 关联订单标识。
/// </summary>
public Guid OrderId { get; set; }
public long OrderId { get; set; }
/// <summary>
/// 退款金额。

View File

@@ -0,0 +1,42 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Payments.Entities;
namespace TakeoutSaaS.Domain.Payments.Repositories;
/// <summary>
/// 支付记录仓储契约。
/// </summary>
public interface IPaymentRepository
{
/// <summary>
/// 依据标识获取支付记录。
/// </summary>
Task<PaymentRecord?> FindByIdAsync(long paymentId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 依据订单标识获取支付记录。
/// </summary>
Task<PaymentRecord?> FindByOrderIdAsync(long orderId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取支付对应的退款记录。
/// </summary>
Task<IReadOnlyList<PaymentRefundRecord>> GetRefundsAsync(long paymentId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 新增支付记录。
/// </summary>
Task AddPaymentAsync(PaymentRecord payment, CancellationToken cancellationToken = default);
/// <summary>
/// 新增退款记录。
/// </summary>
Task AddRefundAsync(PaymentRefundRecord refund, CancellationToken cancellationToken = default);
/// <summary>
/// 持久化变更。
/// </summary>
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}

View File

@@ -11,12 +11,12 @@ public sealed class Product : MultiTenantEntityBase
/// <summary>
/// 所属门店。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 所属分类。
/// </summary>
public Guid CategoryId { get; set; }
public long CategoryId { get; set; }
/// <summary>
/// 商品编码。

View File

@@ -11,7 +11,7 @@ public sealed class ProductAddonGroup : MultiTenantEntityBase
/// <summary>
/// 所属商品。
/// </summary>
public Guid ProductId { get; set; }
public long ProductId { get; set; }
/// <summary>
/// 分组名称。

View File

@@ -10,7 +10,7 @@ public sealed class ProductAddonOption : MultiTenantEntityBase
/// <summary>
/// 所属加料分组。
/// </summary>
public Guid AddonGroupId { get; set; }
public long AddonGroupId { get; set; }
/// <summary>
/// 选项名称。

View File

@@ -11,7 +11,12 @@ public sealed class ProductAttributeGroup : MultiTenantEntityBase
/// <summary>
/// 关联门店,可为空表示所有门店共享。
/// </summary>
public Guid? StoreId { get; set; }
public long? StoreId { get; set; }
/// <summary>
/// 所属商品标识。
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 分组名称,例如“辣度”“份量”。

View File

@@ -10,7 +10,7 @@ public sealed class ProductAttributeOption : MultiTenantEntityBase
/// <summary>
/// 所属规格组。
/// </summary>
public Guid AttributeGroupId { get; set; }
public long AttributeGroupId { get; set; }
/// <summary>
/// 选项名称。

View File

@@ -10,7 +10,7 @@ public sealed class ProductCategory : MultiTenantEntityBase
/// <summary>
/// 所属门店。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 分类名称。

View File

@@ -11,7 +11,7 @@ public sealed class ProductMediaAsset : MultiTenantEntityBase
/// <summary>
/// 商品标识。
/// </summary>
public Guid ProductId { get; set; }
public long ProductId { get; set; }
/// <summary>
/// 媒体类型。

View File

@@ -11,7 +11,7 @@ public sealed class ProductPricingRule : MultiTenantEntityBase
/// <summary>
/// 所属商品。
/// </summary>
public Guid ProductId { get; set; }
public long ProductId { get; set; }
/// <summary>
/// 策略类型。
@@ -42,4 +42,9 @@ public sealed class ProductPricingRule : MultiTenantEntityBase
/// 生效星期JSON 数组)。
/// </summary>
public string? WeekdaysJson { get; set; }
/// <summary>
/// 排序值。
/// </summary>
public int SortOrder { get; set; } = 100;
}

View File

@@ -10,7 +10,7 @@ public sealed class ProductSku : MultiTenantEntityBase
/// <summary>
/// 所属商品标识。
/// </summary>
public Guid ProductId { get; set; }
public long ProductId { get; set; }
/// <summary>
/// SKU 编码。
@@ -46,4 +46,9 @@ public sealed class ProductSku : MultiTenantEntityBase
/// 规格属性 JSON记录选项 ID
/// </summary>
public string AttributesJson { get; set; } = string.Empty;
/// <summary>
/// 排序值。
/// </summary>
public int SortOrder { get; set; } = 100;
}

View File

@@ -0,0 +1,103 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Products.Entities;
using TakeoutSaaS.Domain.Products.Enums;
namespace TakeoutSaaS.Domain.Products.Repositories;
/// <summary>
/// 商品聚合仓储契约。
/// </summary>
public interface IProductRepository
{
/// <summary>
/// 依据标识获取商品。
/// </summary>
Task<Product?> FindByIdAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 按分类与状态筛选商品列表。
/// </summary>
Task<IReadOnlyList<Product>> SearchAsync(long tenantId, long? categoryId, ProductStatus? status, CancellationToken cancellationToken = default);
/// <summary>
/// 获取租户下的商品分类。
/// </summary>
Task<IReadOnlyList<ProductCategory>> GetCategoriesAsync(long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品 SKU。
/// </summary>
Task<IReadOnlyList<ProductSku>> GetSkusAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品加料组与选项。
/// </summary>
Task<IReadOnlyList<ProductAddonGroup>> GetAddonGroupsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品加料选项。
/// </summary>
Task<IReadOnlyList<ProductAddonOption>> GetAddonOptionsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品规格组与选项。
/// </summary>
Task<IReadOnlyList<ProductAttributeGroup>> GetAttributeGroupsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品规格选项。
/// </summary>
Task<IReadOnlyList<ProductAttributeOption>> GetAttributeOptionsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品媒资。
/// </summary>
Task<IReadOnlyList<ProductMediaAsset>> GetMediaAssetsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品定价规则。
/// </summary>
Task<IReadOnlyList<ProductPricingRule>> GetPricingRulesAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 新增分类。
/// </summary>
Task AddCategoryAsync(ProductCategory category, CancellationToken cancellationToken = default);
/// <summary>
/// 新增商品。
/// </summary>
Task AddProductAsync(Product product, CancellationToken cancellationToken = default);
/// <summary>
/// 新增 SKU。
/// </summary>
Task AddSkusAsync(IEnumerable<ProductSku> skus, CancellationToken cancellationToken = default);
/// <summary>
/// 新增加料组与选项。
/// </summary>
Task AddAddonGroupsAsync(IEnumerable<ProductAddonGroup> groups, IEnumerable<ProductAddonOption> options, CancellationToken cancellationToken = default);
/// <summary>
/// 新增规格组与选项。
/// </summary>
Task AddAttributeGroupsAsync(IEnumerable<ProductAttributeGroup> groups, IEnumerable<ProductAttributeOption> options, CancellationToken cancellationToken = default);
/// <summary>
/// 新增媒资。
/// </summary>
Task AddMediaAssetsAsync(IEnumerable<ProductMediaAsset> assets, CancellationToken cancellationToken = default);
/// <summary>
/// 新增定价规则。
/// </summary>
Task AddPricingRulesAsync(IEnumerable<ProductPricingRule> rules, CancellationToken cancellationToken = default);
/// <summary>
/// 持久化变更。
/// </summary>
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}

View File

@@ -8,7 +8,7 @@ namespace TakeoutSaaS.Domain.Queues.Entities;
/// </summary>
public sealed class QueueTicket : MultiTenantEntityBase
{
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 排队编号。

View File

@@ -11,7 +11,7 @@ public sealed class Reservation : MultiTenantEntityBase
/// <summary>
/// 门店。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 预约号。

View File

@@ -11,7 +11,7 @@ public sealed class Store : MultiTenantEntityBase
/// <summary>
/// 所属商户标识。
/// </summary>
public Guid MerchantId { get; set; }
public long MerchantId { get; set; }
/// <summary>
/// 门店编码,便于扫码及外部对接。

View File

@@ -11,7 +11,7 @@ public sealed class StoreBusinessHour : MultiTenantEntityBase
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 星期几0 表示周日。

View File

@@ -10,7 +10,7 @@ public sealed class StoreDeliveryZone : MultiTenantEntityBase
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 区域名称。
@@ -36,4 +36,9 @@ public sealed class StoreDeliveryZone : MultiTenantEntityBase
/// 预计送达分钟。
/// </summary>
public int? EstimatedMinutes { get; set; }
/// <summary>
/// 排序值。
/// </summary>
public int SortOrder { get; set; } = 100;
}

View File

@@ -11,12 +11,12 @@ public sealed class StoreEmployeeShift : MultiTenantEntityBase
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 员工标识。
/// </summary>
public Guid StaffId { get; set; }
public long StaffId { get; set; }
/// <summary>
/// 班次日期。

View File

@@ -10,7 +10,7 @@ public sealed class StoreHoliday : MultiTenantEntityBase
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 日期。

View File

@@ -11,12 +11,12 @@ public sealed class StoreTable : MultiTenantEntityBase
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 所在区域 ID。
/// </summary>
public Guid? AreaId { get; set; }
public long? AreaId { get; set; }
/// <summary>
/// 桌码。

View File

@@ -10,7 +10,7 @@ public sealed class StoreTableArea : MultiTenantEntityBase
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
public long StoreId { get; set; }
/// <summary>
/// 区域名称。
@@ -21,4 +21,9 @@ public sealed class StoreTableArea : MultiTenantEntityBase
/// 区域描述。
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 排序值。
/// </summary>
public int SortOrder { get; set; } = 100;
}

View File

@@ -0,0 +1,93 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Stores.Entities;
using TakeoutSaaS.Domain.Stores.Enums;
namespace TakeoutSaaS.Domain.Stores.Repositories;
/// <summary>
/// 门店聚合仓储契约。
/// </summary>
public interface IStoreRepository
{
/// <summary>
/// 依据标识获取门店。
/// </summary>
Task<Store?> FindByIdAsync(long storeId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 按租户筛选门店列表。
/// </summary>
Task<IReadOnlyList<Store>> SearchAsync(long tenantId, StoreStatus? status, CancellationToken cancellationToken = default);
/// <summary>
/// 获取门店营业时段。
/// </summary>
Task<IReadOnlyList<StoreBusinessHour>> GetBusinessHoursAsync(long storeId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取门店配送区域配置。
/// </summary>
Task<IReadOnlyList<StoreDeliveryZone>> GetDeliveryZonesAsync(long storeId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取门店节假日配置。
/// </summary>
Task<IReadOnlyList<StoreHoliday>> GetHolidaysAsync(long storeId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取门店桌台区域。
/// </summary>
Task<IReadOnlyList<StoreTableArea>> GetTableAreasAsync(long storeId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取门店桌台列表。
/// </summary>
Task<IReadOnlyList<StoreTable>> GetTablesAsync(long storeId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取门店员工排班。
/// </summary>
Task<IReadOnlyList<StoreEmployeeShift>> GetShiftsAsync(long storeId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 新增门店。
/// </summary>
Task AddStoreAsync(Store store, CancellationToken cancellationToken = default);
/// <summary>
/// 新增营业时段。
/// </summary>
Task AddBusinessHoursAsync(IEnumerable<StoreBusinessHour> hours, CancellationToken cancellationToken = default);
/// <summary>
/// 新增配送区域。
/// </summary>
Task AddDeliveryZonesAsync(IEnumerable<StoreDeliveryZone> zones, CancellationToken cancellationToken = default);
/// <summary>
/// 新增节假日配置。
/// </summary>
Task AddHolidaysAsync(IEnumerable<StoreHoliday> holidays, CancellationToken cancellationToken = default);
/// <summary>
/// 新增桌台区域。
/// </summary>
Task AddTableAreasAsync(IEnumerable<StoreTableArea> areas, CancellationToken cancellationToken = default);
/// <summary>
/// 新增桌台。
/// </summary>
Task AddTablesAsync(IEnumerable<StoreTable> tables, CancellationToken cancellationToken = default);
/// <summary>
/// 新增排班。
/// </summary>
Task AddShiftsAsync(IEnumerable<StoreEmployeeShift> shifts, CancellationToken cancellationToken = default);
/// <summary>
/// 持久化变更。
/// </summary>
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}

View File

@@ -86,7 +86,7 @@ public sealed class Tenant : AuditableEntityBase
/// <summary>
/// 系统内对应的租户所有者账号 ID。
/// </summary>
public Guid? PrimaryOwnerUserId { get; set; }
public long? PrimaryOwnerUserId { get; set; }
/// <summary>
/// 租户当前状态,涵盖审核、启用、停用等场景。

View File

@@ -11,7 +11,7 @@ public sealed class TenantSubscription : MultiTenantEntityBase
/// <summary>
/// 当前订阅关联的套餐标识。
/// </summary>
public Guid TenantPackageId { get; set; }
public long TenantPackageId { get; set; }
/// <summary>
/// 订阅生效时间UTC
@@ -41,7 +41,7 @@ public sealed class TenantSubscription : MultiTenantEntityBase
/// <summary>
/// 若已排期升降配,对应的新套餐 ID。
/// </summary>
public Guid? ScheduledPackageId { get; set; }
public long? ScheduledPackageId { get; set; }
/// <summary>
/// 运营备注信息。