14868c45c7
1. 重构用户与任务实体:UserEntity实现IUser<Guid>,TaskEntity继承ABP风格FullAuditedEntityWithUser,主键从int改为Guid 2. 新增云同步代理系统:嵌入式WebServer支持CloudSyncProxy转发云同步请求,新增配置API与持久化 3. 完善前端适配:新增Guid工具函数,更新任务类型定义与API交互逻辑,调整云同步设置弹窗适配本地代理 4. 文档与配置优化:更新文档结构,新增部署文档、版本记录,统一各项目配置项 5. 补充测试与迁移:新增单元测试,更新EF Core数据库迁移快照
174 lines
4.2 KiB
C#
174 lines
4.2 KiB
C#
using System.Text.Json.Serialization;
|
||
using Hua.Todo.Core.Entities;
|
||
|
||
namespace Hua.Todo.Application.CloudSync.Models;
|
||
|
||
/// <summary>
|
||
/// 云同步任务条目(ABP 标准)。
|
||
/// </summary>
|
||
public class CloudTaskItem
|
||
{
|
||
/// <summary>
|
||
/// 任务 ID(服务端分配,Guid)。
|
||
/// </summary>
|
||
[JsonPropertyName("id")]
|
||
public Guid Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 标题。
|
||
/// </summary>
|
||
[JsonPropertyName("title")]
|
||
public string Title { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 优先级。
|
||
/// </summary>
|
||
[JsonPropertyName("priority")]
|
||
public TaskPriority Priority { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否完成。
|
||
/// </summary>
|
||
[JsonPropertyName("isCompleted")]
|
||
public bool IsCompleted { get; set; }
|
||
|
||
/// <summary>
|
||
/// 任务编号(用户级自增字符串)。
|
||
/// </summary>
|
||
[JsonPropertyName("code")]
|
||
public string Code { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 父任务 ID(Guid)。
|
||
/// </summary>
|
||
[JsonPropertyName("parentTaskId")]
|
||
public Guid? ParentTaskId { get; set; }
|
||
|
||
// === ABP 审计字段 ===
|
||
|
||
/// <summary>
|
||
/// 创建时间。
|
||
/// </summary>
|
||
[JsonPropertyName("creationTime")]
|
||
public DateTime CreationTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建人 ID。
|
||
/// </summary>
|
||
[JsonPropertyName("creatorId")]
|
||
public Guid? CreatorId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最后修改时间(用于 LWW 冲突判断)。
|
||
/// </summary>
|
||
[JsonPropertyName("lastModificationTime")]
|
||
public DateTime? LastModificationTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最后修改人 ID。
|
||
/// </summary>
|
||
[JsonPropertyName("lastModifierId")]
|
||
public Guid? LastModifierId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 软删除标记。
|
||
/// </summary>
|
||
[JsonPropertyName("isDeleted")]
|
||
public bool IsDeleted { get; set; }
|
||
|
||
/// <summary>
|
||
/// 删除时间。
|
||
/// </summary>
|
||
[JsonPropertyName("deletionTime")]
|
||
public DateTime? DeletionTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 删除人 ID。
|
||
/// </summary>
|
||
[JsonPropertyName("deleterId")]
|
||
public Guid? DeleterId { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 任务 Upsert DTO(客户端提交)。
|
||
/// </summary>
|
||
public class CloudTaskUpsert
|
||
{
|
||
/// <summary>
|
||
/// 任务 ID;为 null 表示新建。
|
||
/// </summary>
|
||
[JsonPropertyName("id")]
|
||
public Guid? Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 标题。
|
||
/// </summary>
|
||
[JsonPropertyName("title")]
|
||
public string Title { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 优先级。
|
||
/// </summary>
|
||
[JsonPropertyName("priority")]
|
||
public TaskPriority Priority { get; set; } = TaskPriority.Medium;
|
||
|
||
/// <summary>
|
||
/// 是否完成。
|
||
/// </summary>
|
||
[JsonPropertyName("isCompleted")]
|
||
public bool IsCompleted { get; set; }
|
||
|
||
/// <summary>
|
||
/// 任务编号。
|
||
/// </summary>
|
||
[JsonPropertyName("code")]
|
||
public string Code { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 父任务 ID(可选)。
|
||
/// </summary>
|
||
[JsonPropertyName("parentTaskId")]
|
||
public Guid? ParentTaskId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 客户端发起变更时写入的时间戳(UTC),用于 LWW 冲突判断。
|
||
/// </summary>
|
||
[JsonPropertyName("lastModificationTime")]
|
||
public DateTime? LastModificationTime { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 同步请求(增改删)。
|
||
/// </summary>
|
||
public class SyncRequest
|
||
{
|
||
/// <summary>
|
||
/// 新增或更新的任务列表。
|
||
/// </summary>
|
||
[JsonPropertyName("upserts")]
|
||
public List<CloudTaskUpsert> Upserts { get; set; } = new();
|
||
|
||
/// <summary>
|
||
/// 需要逻辑删除的任务 ID 列表。
|
||
/// </summary>
|
||
[JsonPropertyName("deletes")]
|
||
public List<Guid> Deletes { get; set; } = new();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 同步响应。
|
||
/// </summary>
|
||
public class SyncResponse
|
||
{
|
||
/// <summary>
|
||
/// 服务端时间(UTC)。
|
||
/// </summary>
|
||
[JsonPropertyName("serverTimeUtc")]
|
||
public DateTime ServerTimeUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 当前用户的任务全量(含 Tombstone)。
|
||
/// </summary>
|
||
[JsonPropertyName("tasks")]
|
||
public List<CloudTaskItem> Tasks { get; set; } = new();
|
||
} |