实现七月迭代公共技术基础
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
This commit is contained in:
@@ -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"`
|
||||
|
||||
46
internal/model/dto/system_config_dto.go
Normal file
46
internal/model/dto/system_config_dto.go
Normal 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
|
||||
}
|
||||
39
internal/model/outbox_event.go
Normal file
39
internal/model/outbox_event.go
Normal 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"
|
||||
}
|
||||
24
internal/model/system_config.go
Normal file
24
internal/model/system_config.go
Normal 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"
|
||||
}
|
||||
Reference in New Issue
Block a user