feat: 积分质押功能
This commit is contained in:
52
internal/model/ms_merge_servers_model.go
Executable file
52
internal/model/ms_merge_servers_model.go
Executable 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))
|
||||
}
|
||||
Reference in New Issue
Block a user