实现七月迭代公共技术基础
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s

This commit is contained in:
2026-07-23 17:52:48 +09:00
parent f7c42252c0
commit 17782d5f8e
76 changed files with 5246 additions and 158 deletions

View File

@@ -31,6 +31,7 @@ type ListExportTaskRequest struct {
// ExportTaskItem 导出任务列表项。
type ExportTaskItem struct {
ID uint `json:"id" description:"任务ID"`
TaskID uint `json:"task_id" description:"任务ID"`
TaskNo string `json:"task_no" description:"任务编号"`
Scene string `json:"scene" description:"导出场景 (device:设备, iot_card:IoT卡, order:订单)"`
Format string `json:"format" description:"导出格式 (xlsx:Excel, csv:CSV)"`
@@ -42,10 +43,16 @@ type ExportTaskItem struct {
TotalShards int `json:"total_shards" description:"总分片数"`
SuccessShards int `json:"success_shards" description:"成功分片数"`
FailedShards int `json:"failed_shards" description:"失败分片数"`
TotalCount int `json:"total_count" description:"统一任务总数"`
SuccessCount int `json:"success_count" description:"统一任务成功数"`
FailedCount int `json:"failed_count" description:"统一任务失败数"`
CancelRequested bool `json:"cancel_requested" description:"是否已请求取消"`
FileKey string `json:"file_key,omitempty" description:"导出文件Key"`
ErrorMessage string `json:"error_message,omitempty" description:"错误信息"`
ErrorCode string `json:"error_code,omitempty" description:"安全错误码"`
ErrorSummary string `json:"error_summary,omitempty" description:"安全失败摘要"`
CreatedAt time.Time `json:"created_at" description:"创建时间"`
UpdatedAt time.Time `json:"updated_at" description:"更新时间"`
StartedAt *time.Time `json:"started_at,omitempty" description:"开始处理时间"`
CompletedAt *time.Time `json:"completed_at,omitempty" description:"完成时间"`
CreatorUserID uint `json:"creator_user_id" description:"创建人用户ID"`

View File

@@ -0,0 +1,46 @@
package dto
import "time"
// SystemConfigListRequest 是系统配置分页查询参数。
type SystemConfigListRequest struct {
Module string `json:"module" query:"module" validate:"omitempty,max=100" description:"模块筛选"`
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
}
// SystemConfigItem 是超级管理员可见的受控配置投影。
type SystemConfigItem struct {
ConfigKey string `json:"config_key" description:"稳定配置 Key"`
Value string `json:"value" description:"配置值;敏感值按注册策略脱敏"`
ValueType string `json:"value_type" description:"值类型 (string:字符串, int:整数, bool:布尔, json:JSON)"`
Module string `json:"module" description:"所属模块"`
Description string `json:"description" description:"中文说明"`
Readonly bool `json:"readonly" description:"是否只读"`
Sensitive bool `json:"sensitive" description:"是否敏感"`
Registered bool `json:"registered" description:"是否已在代码注册"`
Control string `json:"control" description:"前端控件提示"`
EnumValues []string `json:"enum_values,omitempty" description:"允许的枚举值"`
Min *int64 `json:"min,omitempty" description:"整数最小值"`
Max *int64 `json:"max,omitempty" description:"整数最大值"`
UpdatedAt *time.Time `json:"updated_at,omitempty" description:"最近更新时间"`
}
// SystemConfigListResponse 是系统配置分页结果。
type SystemConfigListResponse struct {
List []SystemConfigItem `json:"list" description:"配置列表"`
Total int64 `json:"total" description:"总数量"`
Page int `json:"page" description:"页码"`
PageSize int `json:"page_size" description:"每页数量"`
}
// UpdateSystemConfigRequest 是单 Key 更新请求。
type UpdateSystemConfigRequest struct {
Value string `json:"value" validate:"required" required:"true" description:"字符串化配置值"`
}
// UpdateSystemConfigParams 组合路径和请求体文档参数。
type UpdateSystemConfigParams struct {
Key string `json:"key" path:"key" validate:"required" required:"true" description:"稳定配置 Key"`
UpdateSystemConfigRequest
}

View File

@@ -0,0 +1,39 @@
package model
import (
"time"
"gorm.io/datatypes"
)
// OutboxEvent 是跨进程可靠事件的权威公共持久化模型。
type OutboxEvent struct {
ID uint `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
EventID string `gorm:"column:event_id;type:varchar(64);not null;uniqueIndex:uq_outbox_event_id" json:"event_id"`
EventType string `gorm:"column:event_type;type:varchar(150);not null;index:idx_outbox_event_type_status,priority:1" json:"event_type"`
PayloadVersion int `gorm:"column:payload_version;type:int;not null;default:1" json:"payload_version"`
AggregateType string `gorm:"column:aggregate_type;type:varchar(100);not null" json:"aggregate_type"`
AggregateID string `gorm:"column:aggregate_id;type:varchar(100);not null" json:"aggregate_id"`
ResourceType string `gorm:"column:resource_type;type:varchar(100);not null" json:"resource_type"`
ResourceID string `gorm:"column:resource_id;type:varchar(100);not null" json:"resource_id"`
BusinessKey string `gorm:"column:business_key;type:varchar(150);not null;default:''" json:"business_key,omitempty"`
RequestID string `gorm:"column:request_id;type:varchar(100);not null;default:'';index" json:"request_id,omitempty"`
CorrelationID string `gorm:"column:correlation_id;type:varchar(100);not null;default:'';index" json:"correlation_id,omitempty"`
Payload datatypes.JSON `gorm:"column:payload;type:jsonb;not null" json:"payload"`
Status int `gorm:"column:status;type:int;not null;default:1;index:idx_outbox_event_type_status,priority:2" json:"status"`
RetryCount int `gorm:"column:retry_count;type:int;not null;default:0" json:"retry_count"`
MaxRetries int `gorm:"column:max_retries;type:int;not null;default:10" json:"max_retries"`
NextAttemptAt time.Time `gorm:"column:next_attempt_at;type:timestamptz;not null;index:idx_outbox_event_claim,priority:2" json:"next_attempt_at"`
LeaseOwner *string `gorm:"column:lease_owner;type:varchar(100)" json:"lease_owner,omitempty"`
LeaseExpiresAt *time.Time `gorm:"column:lease_expires_at;type:timestamptz;index:idx_outbox_event_claim,priority:3" json:"lease_expires_at,omitempty"`
LastErrorCode string `gorm:"column:last_error_code;type:varchar(100);not null;default:''" json:"last_error_code,omitempty"`
LastErrorSummary string `gorm:"column:last_error_summary;type:varchar(500);not null;default:''" json:"last_error_summary,omitempty"`
DeliveredAt *time.Time `gorm:"column:delivered_at;type:timestamptz" json:"delivered_at,omitempty"`
CreatedAt time.Time `gorm:"column:created_at;type:timestamptz;not null;autoCreateTime;index:idx_outbox_event_claim,priority:4" json:"created_at"`
UpdatedAt time.Time `gorm:"column:updated_at;type:timestamptz;not null;autoUpdateTime" json:"updated_at"`
}
// TableName 返回公共 Outbox 表名。
func (OutboxEvent) TableName() string {
return "tb_outbox_event"
}

View File

@@ -0,0 +1,24 @@
package model
import "time"
// SystemConfig 是受控系统配置的 PostgreSQL 持久化模型。
type SystemConfig struct {
ID uint `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
ConfigKey string `gorm:"column:config_key;type:varchar(150);not null;uniqueIndex:uq_system_config_key" json:"config_key"`
ConfigValue string `gorm:"column:config_value;type:text;not null" json:"config_value"`
ValueType string `gorm:"column:value_type;type:varchar(20);not null" json:"value_type"`
Module string `gorm:"column:module;type:varchar(100);not null;index:idx_system_config_module_key,priority:1" json:"module"`
Description string `gorm:"column:description;type:varchar(500);not null" json:"description"`
IsReadonly bool `gorm:"column:is_readonly;type:boolean;not null;default:false" json:"is_readonly"`
IsSensitive bool `gorm:"column:is_sensitive;type:boolean;not null;default:false" json:"is_sensitive"`
Creator uint `gorm:"column:creator;not null;default:0" json:"creator"`
Updater uint `gorm:"column:updater;not null;default:0" json:"updater"`
CreatedAt time.Time `gorm:"column:created_at;type:timestamptz;not null;autoCreateTime" json:"created_at"`
UpdatedAt time.Time `gorm:"column:updated_at;type:timestamptz;not null;autoUpdateTime" json:"updated_at"`
}
// TableName 返回受控系统配置表名。
func (SystemConfig) TableName() string {
return "tb_system_config"
}