feat(geo): add tenant/merchant/store geocode fallback and retry workflow
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 43s

This commit is contained in:
2026-02-19 17:13:00 +08:00
parent ad245078a2
commit 53f7c54c82
33 changed files with 9514 additions and 11 deletions

View File

@@ -0,0 +1,22 @@
namespace TakeoutSaaS.Domain.Common.Enums;
/// <summary>
/// 地理定位状态。
/// </summary>
public enum GeoLocationStatus
{
/// <summary>
/// 待定位(可重试)。
/// </summary>
Pending = 0,
/// <summary>
/// 定位成功。
/// </summary>
Success = 1,
/// <summary>
/// 定位失败(达到重试上限或不可恢复错误)。
/// </summary>
Failed = 2
}

View File

@@ -99,6 +99,31 @@ public sealed class Merchant : MultiTenantEntityBase
/// </summary>
public double? Latitude { get; set; }
/// <summary>
/// 地理定位状态。
/// </summary>
public GeoLocationStatus GeoStatus { get; set; } = GeoLocationStatus.Pending;
/// <summary>
/// 地理定位失败原因。
/// </summary>
public string? GeoFailReason { get; set; }
/// <summary>
/// 地理定位重试次数。
/// </summary>
public int GeoRetryCount { get; set; }
/// <summary>
/// 地理定位最近成功时间UTC
/// </summary>
public DateTime? GeoUpdatedAt { get; set; }
/// <summary>
/// 下次地理定位重试时间UTC
/// </summary>
public DateTime? GeoNextRetryAt { get; set; }
/// <summary>
/// 入驻状态。
/// </summary>

View File

@@ -1,3 +1,4 @@
using TakeoutSaaS.Domain.Common.Enums;
using TakeoutSaaS.Domain.Stores.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
@@ -153,6 +154,31 @@ public sealed class Store : MultiTenantEntityBase
/// </summary>
public double? Latitude { get; set; }
/// <summary>
/// 地理定位状态。
/// </summary>
public GeoLocationStatus GeoStatus { get; set; } = GeoLocationStatus.Pending;
/// <summary>
/// 地理定位失败原因。
/// </summary>
public string? GeoFailReason { get; set; }
/// <summary>
/// 地理定位重试次数。
/// </summary>
public int GeoRetryCount { get; set; }
/// <summary>
/// 地理定位最近成功时间UTC
/// </summary>
public DateTime? GeoUpdatedAt { get; set; }
/// <summary>
/// 下次地理定位重试时间UTC
/// </summary>
public DateTime? GeoNextRetryAt { get; set; }
/// <summary>
/// 门店描述或公告。
/// </summary>

View File

@@ -69,6 +69,41 @@ public sealed class Tenant : AuditableEntityBase
/// </summary>
public string? Address { get; set; }
/// <summary>
/// 经度信息。
/// </summary>
public double? Longitude { get; set; }
/// <summary>
/// 纬度信息。
/// </summary>
public double? Latitude { get; set; }
/// <summary>
/// 地理定位状态。
/// </summary>
public GeoLocationStatus GeoStatus { get; set; } = GeoLocationStatus.Pending;
/// <summary>
/// 地理定位失败原因。
/// </summary>
public string? GeoFailReason { get; set; }
/// <summary>
/// 地理定位重试次数。
/// </summary>
public int GeoRetryCount { get; set; }
/// <summary>
/// 地理定位最近成功时间UTC
/// </summary>
public DateTime? GeoUpdatedAt { get; set; }
/// <summary>
/// 下次地理定位重试时间UTC
/// </summary>
public DateTime? GeoNextRetryAt { get; set; }
/// <summary>
/// 主联系人姓名。
/// </summary>