feat: implement new structure
This commit is contained in:
@@ -29,7 +29,7 @@ func newTenantLedger(db *gorm.DB, opts ...gen.DOOption) tenantLedgerQuery {
|
||||
_tenantLedgerQuery.TenantID = field.NewInt64(tableName, "tenant_id")
|
||||
_tenantLedgerQuery.UserID = field.NewInt64(tableName, "user_id")
|
||||
_tenantLedgerQuery.OrderID = field.NewInt64(tableName, "order_id")
|
||||
_tenantLedgerQuery.Type = field.NewField(tableName, "type")
|
||||
_tenantLedgerQuery.Type = field.NewString(tableName, "type")
|
||||
_tenantLedgerQuery.Amount = field.NewInt64(tableName, "amount")
|
||||
_tenantLedgerQuery.BalanceBefore = field.NewInt64(tableName, "balance_before")
|
||||
_tenantLedgerQuery.BalanceAfter = field.NewInt64(tableName, "balance_after")
|
||||
@@ -37,16 +37,11 @@ func newTenantLedger(db *gorm.DB, opts ...gen.DOOption) tenantLedgerQuery {
|
||||
_tenantLedgerQuery.FrozenAfter = field.NewInt64(tableName, "frozen_after")
|
||||
_tenantLedgerQuery.IdempotencyKey = field.NewString(tableName, "idempotency_key")
|
||||
_tenantLedgerQuery.Remark = field.NewString(tableName, "remark")
|
||||
_tenantLedgerQuery.CreatedAt = field.NewTime(tableName, "created_at")
|
||||
_tenantLedgerQuery.UpdatedAt = field.NewTime(tableName, "updated_at")
|
||||
_tenantLedgerQuery.OperatorUserID = field.NewInt64(tableName, "operator_user_id")
|
||||
_tenantLedgerQuery.BizRefType = field.NewString(tableName, "biz_ref_type")
|
||||
_tenantLedgerQuery.BizRefID = field.NewInt64(tableName, "biz_ref_id")
|
||||
_tenantLedgerQuery.Order = tenantLedgerQueryBelongsToOrder{
|
||||
db: db.Session(&gorm.Session{}),
|
||||
|
||||
RelationField: field.NewRelation("Order", "Order"),
|
||||
}
|
||||
_tenantLedgerQuery.CreatedAt = field.NewTime(tableName, "created_at")
|
||||
_tenantLedgerQuery.UpdatedAt = field.NewTime(tableName, "updated_at")
|
||||
|
||||
_tenantLedgerQuery.fillFieldMap()
|
||||
|
||||
@@ -57,24 +52,23 @@ type tenantLedgerQuery struct {
|
||||
tenantLedgerQueryDo tenantLedgerQueryDo
|
||||
|
||||
ALL field.Asterisk
|
||||
ID field.Int64 // 主键ID:自增
|
||||
TenantID field.Int64 // 租户ID:多租户隔离关键字段;必须与 tenant_users.tenant_id 一致
|
||||
UserID field.Int64 // 用户ID:余额账户归属用户;对应 tenant_users.user_id
|
||||
OrderID field.Int64 // 关联订单ID:购买/退款类流水应关联 orders.id;非订单类可为空
|
||||
Type field.Field // 流水类型:debit_purchase/credit_refund/freeze/unfreeze/adjustment;不同类型决定余额/冻结余额的变更方向
|
||||
Amount field.Int64 // 流水金额:分/最小货币单位;通常为正数,方向由 type 决定(由业务层约束)
|
||||
BalanceBefore field.Int64 // 变更前可用余额:用于审计与对账回放
|
||||
BalanceAfter field.Int64 // 变更后可用余额:用于审计与对账回放
|
||||
FrozenBefore field.Int64 // 变更前冻结余额:用于审计与对账回放
|
||||
FrozenAfter field.Int64 // 变更后冻结余额:用于审计与对账回放
|
||||
IdempotencyKey field.String // 幂等键:同一租户同一用户同一业务操作固定;用于防止重复落账(建议由业务层生成)
|
||||
Remark field.String // 备注:业务说明/后台操作原因等;用于审计
|
||||
CreatedAt field.Time // 创建时间:默认 now()
|
||||
UpdatedAt field.Time // 更新时间:默认 now()
|
||||
OperatorUserID field.Int64 // 操作者用户ID:谁触发该流水(admin/buyer/system);用于审计与追责;可为空(历史数据或无法识别时)
|
||||
BizRefType field.String // 业务引用类型:order/refund/etc;与 biz_ref_id 组成可选的结构化幂等/追溯键
|
||||
BizRefID field.Int64 // 业务引用ID:与 biz_ref_type 配合使用(例如 orders.id);用于对账与审计
|
||||
Order tenantLedgerQueryBelongsToOrder
|
||||
ID field.Int64
|
||||
TenantID field.Int64
|
||||
UserID field.Int64
|
||||
OrderID field.Int64
|
||||
Type field.String
|
||||
Amount field.Int64
|
||||
BalanceBefore field.Int64
|
||||
BalanceAfter field.Int64
|
||||
FrozenBefore field.Int64
|
||||
FrozenAfter field.Int64
|
||||
IdempotencyKey field.String
|
||||
Remark field.String
|
||||
OperatorUserID field.Int64
|
||||
BizRefType field.String
|
||||
BizRefID field.Int64
|
||||
CreatedAt field.Time
|
||||
UpdatedAt field.Time
|
||||
|
||||
fieldMap map[string]field.Expr
|
||||
}
|
||||
@@ -95,7 +89,7 @@ func (t *tenantLedgerQuery) updateTableName(table string) *tenantLedgerQuery {
|
||||
t.TenantID = field.NewInt64(table, "tenant_id")
|
||||
t.UserID = field.NewInt64(table, "user_id")
|
||||
t.OrderID = field.NewInt64(table, "order_id")
|
||||
t.Type = field.NewField(table, "type")
|
||||
t.Type = field.NewString(table, "type")
|
||||
t.Amount = field.NewInt64(table, "amount")
|
||||
t.BalanceBefore = field.NewInt64(table, "balance_before")
|
||||
t.BalanceAfter = field.NewInt64(table, "balance_after")
|
||||
@@ -103,11 +97,11 @@ func (t *tenantLedgerQuery) updateTableName(table string) *tenantLedgerQuery {
|
||||
t.FrozenAfter = field.NewInt64(table, "frozen_after")
|
||||
t.IdempotencyKey = field.NewString(table, "idempotency_key")
|
||||
t.Remark = field.NewString(table, "remark")
|
||||
t.CreatedAt = field.NewTime(table, "created_at")
|
||||
t.UpdatedAt = field.NewTime(table, "updated_at")
|
||||
t.OperatorUserID = field.NewInt64(table, "operator_user_id")
|
||||
t.BizRefType = field.NewString(table, "biz_ref_type")
|
||||
t.BizRefID = field.NewInt64(table, "biz_ref_id")
|
||||
t.CreatedAt = field.NewTime(table, "created_at")
|
||||
t.UpdatedAt = field.NewTime(table, "updated_at")
|
||||
|
||||
t.fillFieldMap()
|
||||
|
||||
@@ -140,7 +134,7 @@ func (t *tenantLedgerQuery) GetFieldByName(fieldName string) (field.OrderExpr, b
|
||||
}
|
||||
|
||||
func (t *tenantLedgerQuery) fillFieldMap() {
|
||||
t.fieldMap = make(map[string]field.Expr, 18)
|
||||
t.fieldMap = make(map[string]field.Expr, 17)
|
||||
t.fieldMap["id"] = t.ID
|
||||
t.fieldMap["tenant_id"] = t.TenantID
|
||||
t.fieldMap["user_id"] = t.UserID
|
||||
@@ -153,108 +147,23 @@ func (t *tenantLedgerQuery) fillFieldMap() {
|
||||
t.fieldMap["frozen_after"] = t.FrozenAfter
|
||||
t.fieldMap["idempotency_key"] = t.IdempotencyKey
|
||||
t.fieldMap["remark"] = t.Remark
|
||||
t.fieldMap["created_at"] = t.CreatedAt
|
||||
t.fieldMap["updated_at"] = t.UpdatedAt
|
||||
t.fieldMap["operator_user_id"] = t.OperatorUserID
|
||||
t.fieldMap["biz_ref_type"] = t.BizRefType
|
||||
t.fieldMap["biz_ref_id"] = t.BizRefID
|
||||
|
||||
t.fieldMap["created_at"] = t.CreatedAt
|
||||
t.fieldMap["updated_at"] = t.UpdatedAt
|
||||
}
|
||||
|
||||
func (t tenantLedgerQuery) clone(db *gorm.DB) tenantLedgerQuery {
|
||||
t.tenantLedgerQueryDo.ReplaceConnPool(db.Statement.ConnPool)
|
||||
t.Order.db = db.Session(&gorm.Session{Initialized: true})
|
||||
t.Order.db.Statement.ConnPool = db.Statement.ConnPool
|
||||
return t
|
||||
}
|
||||
|
||||
func (t tenantLedgerQuery) replaceDB(db *gorm.DB) tenantLedgerQuery {
|
||||
t.tenantLedgerQueryDo.ReplaceDB(db)
|
||||
t.Order.db = db.Session(&gorm.Session{})
|
||||
return t
|
||||
}
|
||||
|
||||
type tenantLedgerQueryBelongsToOrder struct {
|
||||
db *gorm.DB
|
||||
|
||||
field.RelationField
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrder) Where(conds ...field.Expr) *tenantLedgerQueryBelongsToOrder {
|
||||
if len(conds) == 0 {
|
||||
return &a
|
||||
}
|
||||
|
||||
exprs := make([]clause.Expression, 0, len(conds))
|
||||
for _, cond := range conds {
|
||||
exprs = append(exprs, cond.BeCond().(clause.Expression))
|
||||
}
|
||||
a.db = a.db.Clauses(clause.Where{Exprs: exprs})
|
||||
return &a
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrder) WithContext(ctx context.Context) *tenantLedgerQueryBelongsToOrder {
|
||||
a.db = a.db.WithContext(ctx)
|
||||
return &a
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrder) Session(session *gorm.Session) *tenantLedgerQueryBelongsToOrder {
|
||||
a.db = a.db.Session(session)
|
||||
return &a
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrder) Model(m *TenantLedger) *tenantLedgerQueryBelongsToOrderTx {
|
||||
return &tenantLedgerQueryBelongsToOrderTx{a.db.Model(m).Association(a.Name())}
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrder) Unscoped() *tenantLedgerQueryBelongsToOrder {
|
||||
a.db = a.db.Unscoped()
|
||||
return &a
|
||||
}
|
||||
|
||||
type tenantLedgerQueryBelongsToOrderTx struct{ tx *gorm.Association }
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrderTx) Find() (result *Order, err error) {
|
||||
return result, a.tx.Find(&result)
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrderTx) Append(values ...*Order) (err error) {
|
||||
targetValues := make([]interface{}, len(values))
|
||||
for i, v := range values {
|
||||
targetValues[i] = v
|
||||
}
|
||||
return a.tx.Append(targetValues...)
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrderTx) Replace(values ...*Order) (err error) {
|
||||
targetValues := make([]interface{}, len(values))
|
||||
for i, v := range values {
|
||||
targetValues[i] = v
|
||||
}
|
||||
return a.tx.Replace(targetValues...)
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrderTx) Delete(values ...*Order) (err error) {
|
||||
targetValues := make([]interface{}, len(values))
|
||||
for i, v := range values {
|
||||
targetValues[i] = v
|
||||
}
|
||||
return a.tx.Delete(targetValues...)
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrderTx) Clear() error {
|
||||
return a.tx.Clear()
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrderTx) Count() int64 {
|
||||
return a.tx.Count()
|
||||
}
|
||||
|
||||
func (a tenantLedgerQueryBelongsToOrderTx) Unscoped() *tenantLedgerQueryBelongsToOrderTx {
|
||||
a.tx = a.tx.Unscoped()
|
||||
return &a
|
||||
}
|
||||
|
||||
type tenantLedgerQueryDo struct{ gen.DO }
|
||||
|
||||
func (t tenantLedgerQueryDo) Debug() *tenantLedgerQueryDo {
|
||||
|
||||
Reference in New Issue
Block a user