feat: 积分质押功能

This commit is contained in:
2025-04-03 16:17:20 +08:00
parent 229f1d181b
commit 8119bcefdc
40 changed files with 2552 additions and 108 deletions

View File

@@ -0,0 +1,52 @@
package model
import (
"context"
"errors"
"fmt"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ MsMergeServersModel = (*customMsMergeServersModel)(nil)
type (
// MsMergeServersModel is an interface to be customized, add more methods here,
// and implement the added methods in customMsMergeServersModel.
MsMergeServersModel interface {
msMergeServersModel
withSession(session sqlx.Session) MsMergeServersModel
FinalServer(ctx context.Context, childAgentId, childServerId int64) (FinalAgentId, FinalServerServerId int64, err error)
}
customMsMergeServersModel struct {
*defaultMsMergeServersModel
}
)
func (m *customMsMergeServersModel) FinalServer(ctx context.Context, childAgentId, childServerId int64) (FinalAgentId, FinalServerServerId int64, err error) {
query := fmt.Sprintf("select final_agent_id, final_server_id from %s where child_agent_id = ? and child_server_id = ?", m.table)
var result struct {
FinalServerServerId int64 `db:"final_server_server_id"` // 物理服务器ID来自mg_servers的自增ID
FinalAgentId int64 `db:"final_agent_id"` // 最终被合到了此agent_id下
}
err = m.conn.QueryRowCtx(ctx, &result, query, childAgentId, childServerId)
switch {
case err == nil:
return result.FinalAgentId, result.FinalServerServerId, nil
case errors.Is(err, sqlx.ErrNotFound):
return childAgentId, childServerId, nil
default:
return 0, 0, err
}
}
// NewMsMergeServersModel returns a model for the database table.
func NewMsMergeServersModel(conn sqlx.SqlConn) MsMergeServersModel {
return &customMsMergeServersModel{
defaultMsMergeServersModel: newMsMergeServersModel(conn),
}
}
func (m *customMsMergeServersModel) withSession(session sqlx.Session) MsMergeServersModel {
return NewMsMergeServersModel(sqlx.NewSqlConnFromSession(session))
}