feat: add order governance flags and reconciliation

This commit is contained in:
2026-01-16 13:29:59 +08:00
parent 7ead7fc11c
commit e5f40287c3
17 changed files with 1247 additions and 103 deletions

View File

@@ -44,6 +44,14 @@ func newOrder(db *gorm.DB, opts ...gen.DOOption) orderQuery {
_orderQuery.CreatedAt = field.NewTime(tableName, "created_at")
_orderQuery.UpdatedAt = field.NewTime(tableName, "updated_at")
_orderQuery.CouponID = field.NewInt64(tableName, "coupon_id")
_orderQuery.IsFlagged = field.NewBool(tableName, "is_flagged")
_orderQuery.FlagReason = field.NewString(tableName, "flag_reason")
_orderQuery.FlaggedBy = field.NewInt64(tableName, "flagged_by")
_orderQuery.FlaggedAt = field.NewTime(tableName, "flagged_at")
_orderQuery.IsReconciled = field.NewBool(tableName, "is_reconciled")
_orderQuery.ReconcileNote = field.NewString(tableName, "reconcile_note")
_orderQuery.ReconciledBy = field.NewInt64(tableName, "reconciled_by")
_orderQuery.ReconciledAt = field.NewTime(tableName, "reconciled_at")
_orderQuery.fillFieldMap()
@@ -72,7 +80,15 @@ type orderQuery struct {
RefundReason field.String
CreatedAt field.Time
UpdatedAt field.Time
CouponID field.Int64 // 使用的优惠券ID (0表示未使用)
CouponID field.Int64 // 使用的优惠券ID (0表示未使用)
IsFlagged field.Bool // 问题订单标记;用途:运营标注需复核订单;默认 false。
FlagReason field.String // 问题标记原因;用途:说明问题点与风险;默认空字符串。
FlaggedBy field.Int64 // 问题标记操作者ID用途审计追踪默认 0 表示未标记。
FlaggedAt field.Time // 问题标记时间;用途:记录标记时效;未标记为空。
IsReconciled field.Bool // 对账状态;用途:标识是否完成人工对账;默认 false。
ReconcileNote field.String // 对账说明;用途:记录对账备注与结论;默认空字符串。
ReconciledBy field.Int64 // 对账操作者ID用途审计追踪默认 0 表示未对账。
ReconciledAt field.Time // 对账时间;用途:记录完成对账时间;未对账为空。
fieldMap map[string]field.Expr
}
@@ -108,6 +124,14 @@ func (o *orderQuery) updateTableName(table string) *orderQuery {
o.CreatedAt = field.NewTime(table, "created_at")
o.UpdatedAt = field.NewTime(table, "updated_at")
o.CouponID = field.NewInt64(table, "coupon_id")
o.IsFlagged = field.NewBool(table, "is_flagged")
o.FlagReason = field.NewString(table, "flag_reason")
o.FlaggedBy = field.NewInt64(table, "flagged_by")
o.FlaggedAt = field.NewTime(table, "flagged_at")
o.IsReconciled = field.NewBool(table, "is_reconciled")
o.ReconcileNote = field.NewString(table, "reconcile_note")
o.ReconciledBy = field.NewInt64(table, "reconciled_by")
o.ReconciledAt = field.NewTime(table, "reconciled_at")
o.fillFieldMap()
@@ -138,7 +162,7 @@ func (o *orderQuery) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
}
func (o *orderQuery) fillFieldMap() {
o.fieldMap = make(map[string]field.Expr, 19)
o.fieldMap = make(map[string]field.Expr, 27)
o.fieldMap["id"] = o.ID
o.fieldMap["tenant_id"] = o.TenantID
o.fieldMap["user_id"] = o.UserID
@@ -158,6 +182,14 @@ func (o *orderQuery) fillFieldMap() {
o.fieldMap["created_at"] = o.CreatedAt
o.fieldMap["updated_at"] = o.UpdatedAt
o.fieldMap["coupon_id"] = o.CouponID
o.fieldMap["is_flagged"] = o.IsFlagged
o.fieldMap["flag_reason"] = o.FlagReason
o.fieldMap["flagged_by"] = o.FlaggedBy
o.fieldMap["flagged_at"] = o.FlaggedAt
o.fieldMap["is_reconciled"] = o.IsReconciled
o.fieldMap["reconcile_note"] = o.ReconcileNote
o.fieldMap["reconciled_by"] = o.ReconciledBy
o.fieldMap["reconciled_at"] = o.ReconciledAt
}
func (o orderQuery) clone(db *gorm.DB) orderQuery {