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
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 43s
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user