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,57 @@
package model
import (
"context"
"errors"
"fmt"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ MgServersModel = (*customMgServersModel)(nil)
type (
// MgServersModel is an interface to be customized, add more methods here,
// and implement the added methods in customMgServersModel.
MgServersModel interface {
mgServersModel
withSession(session sqlx.Session) MgServersModel
GetGameServer(ctx context.Context, agentId, serverId int64) (*GameServer, error)
}
customMgServersModel struct {
*defaultMgServersModel
}
GameServer struct {
AgentID int `db:"agent_id"` // 代理ID
ServerID int `db:"server_id"` // 服务器ID
WebPort int `db:"web_port"` // web访问端口
ServerIP string `db:"server_ip"` // 内网IP
PublicServerIP string `db:"public_server_ip"` // 公网IP
}
)
func (m *customMgServersModel) GetGameServer(ctx context.Context, agentId, serverId int64) (*GameServer, error) {
query := fmt.Sprintf("SELECT g.agent_id, g.server_id, g.web_port, s.ip AS server_ip, s.public_ip AS public_server_ip FROM ms_game_server AS g LEFT JOIN mg_servers AS s ON s.id = g.server_server_id WHERE g.server_id = ? AND g.agent_id = ?")
var result GameServer
err := m.conn.QueryRowCtx(ctx, &result, query, serverId, agentId)
switch {
case err == nil:
return &result, nil
case errors.Is(err, sqlx.ErrNotFound):
return nil, ErrNotFound
default:
return nil, err
}
}
// NewMgServersModel returns a model for the database table.
func NewMgServersModel(conn sqlx.SqlConn) MgServersModel {
return &customMgServersModel{
defaultMgServersModel: newMgServersModel(conn),
}
}
func (m *customMgServersModel) withSession(session sqlx.Session) MgServersModel {
return NewMgServersModel(sqlx.NewSqlConnFromSession(session))
}

View File

@@ -0,0 +1,92 @@
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.7.6
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
var (
mgServersFieldNames = builder.RawFieldNames(&MgServers{})
mgServersRows = strings.Join(mgServersFieldNames, ",")
mgServersRowsExpectAutoSet = strings.Join(stringx.Remove(mgServersFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
mgServersRowsWithPlaceHolder = strings.Join(stringx.Remove(mgServersFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
mgServersModel interface {
Insert(ctx context.Context, data *MgServers) (sql.Result, error)
FindOne(ctx context.Context, id int) (*MgServers, error)
Update(ctx context.Context, data *MgServers) error
Delete(ctx context.Context, id int) error
}
defaultMgServersModel struct {
conn sqlx.SqlConn
table string
}
MgServers struct {
Id int `db:"id"`
RegionId int `db:"region_id"` // 区域ID
Ip sql.NullString `db:"ip"` // 内网IP
PublicIp sql.NullString `db:"public_ip"` // 公网IP
Domain sql.NullString `db:"domain"` // 域名
ServerCategory sql.NullInt64 `db:"server_category"` // 服务器分类 1:游戏节点服, 2:游戏业务数据库服, 3:游戏日志数据库服,
ServerType sql.NullInt64 `db:"server_type"` // 服务器类型 1:本地开发;3:Android服;4:iOS服;
AdminId sql.NullInt64 `db:"admin_id"`
AddTime sql.NullTime `db:"add_time"`
}
)
func newMgServersModel(conn sqlx.SqlConn) *defaultMgServersModel {
return &defaultMgServersModel{
conn: conn,
table: "`mg_servers`",
}
}
func (m *defaultMgServersModel) Delete(ctx context.Context, id int) error {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
_, err := m.conn.ExecCtx(ctx, query, id)
return err
}
func (m *defaultMgServersModel) FindOne(ctx context.Context, id int) (*MgServers, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", mgServersRows, m.table)
var resp MgServers
err := m.conn.QueryRowCtx(ctx, &resp, query, id)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultMgServersModel) Insert(ctx context.Context, data *MgServers) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?)", m.table, mgServersRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.RegionId, data.Ip, data.PublicIp, data.Domain, data.ServerCategory, data.ServerType, data.AdminId, data.AddTime)
return ret, err
}
func (m *defaultMgServersModel) Update(ctx context.Context, data *MgServers) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, mgServersRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.RegionId, data.Ip, data.PublicIp, data.Domain, data.ServerCategory, data.ServerType, data.AdminId, data.AddTime, data.Id)
return err
}
func (m *defaultMgServersModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,29 @@
package model
import "github.com/zeromicro/go-zero/core/stores/sqlx"
var _ MsGameServerModel = (*customMsGameServerModel)(nil)
type (
// MsGameServerModel is an interface to be customized, add more methods here,
// and implement the added methods in customMsGameServerModel.
MsGameServerModel interface {
msGameServerModel
withSession(session sqlx.Session) MsGameServerModel
}
customMsGameServerModel struct {
*defaultMsGameServerModel
}
)
// NewMsGameServerModel returns a model for the database table.
func NewMsGameServerModel(conn sqlx.SqlConn) MsGameServerModel {
return &customMsGameServerModel{
defaultMsGameServerModel: newMsGameServerModel(conn),
}
}
func (m *customMsGameServerModel) withSession(session sqlx.Session) MsGameServerModel {
return NewMsGameServerModel(sqlx.NewSqlConnFromSession(session))
}

View File

@@ -0,0 +1,125 @@
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.7.6
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
var (
msGameServerFieldNames = builder.RawFieldNames(&MsGameServer{})
msGameServerRows = strings.Join(msGameServerFieldNames, ",")
msGameServerRowsExpectAutoSet = strings.Join(stringx.Remove(msGameServerFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
msGameServerRowsWithPlaceHolder = strings.Join(stringx.Remove(msGameServerFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
msGameServerModel interface {
Insert(ctx context.Context, data *MsGameServer) (sql.Result, error)
FindOne(ctx context.Context, id int) (*MsGameServer, error)
Update(ctx context.Context, data *MsGameServer) error
Delete(ctx context.Context, id int) error
}
defaultMsGameServerModel struct {
conn sqlx.SqlConn
table string
}
MsGameServer struct {
Id int `db:"id"` // ID
AgentId int `db:"agent_id"` // 代理ID
ServerId int `db:"server_id"` // 服务器ID
AgentServer sql.NullInt64 `db:"agent_server"` // agent_id 和 server_id的组合agent_id*10000000 + server_id
ServerName string `db:"server_name"` // 服名称
ServerServerId sql.NullInt64 `db:"server_server_id"` // 游戏节点服的物理服务器ID
MainNodes sql.NullString `db:"main_nodes"` // 主节点集合
Gateways sql.NullString `db:"gateways"` // 网关节点集合
GatewayPort int `db:"gateway_port"` // 游戏服端口
GameCode string `db:"game_code"` // 游戏名
AgentCode string `db:"agent_code"` // 代理
Branch string `db:"branch"` // 分支
ServerStartTime sql.NullTime `db:"server_start_time"` // 开服时间
WebPort int `db:"web_port"` // web访问端口
LogLevel int `db:"log_level"` // 日志等级
LogDir string `db:"log_dir"` // 日志地址
IsDebug string `db:"is_debug"` // debug是否开启,默认false
BackgroundLogOpen string `db:"background_log_open"` // 是否记录后台日志,默认开启
CenterId int `db:"center_id"` // 游戏中央服id
CenterIp string `db:"center_ip"` // 游戏中央服ip
ReplayId int `db:"replay_id"` // 重播日志服务器id
CrossId int `db:"cross_id"` // 跨服服务器id
DbServerId sql.NullInt64 `db:"db_server_id"` // 游戏业务数据库的物理服务器ID
DbPort int `db:"db_port"` // 游戏数据库port
RedisServerId sql.NullInt64 `db:"redis_server_id"` // redis的物理服务器ID
RedisPort sql.NullInt64 `db:"redis_port"` // redis端口
AdminServerId sql.NullInt64 `db:"admin_server_id"` // 游戏日志数据库的物理服务器ID
AdminPort int `db:"admin_port"` // 日志数据库端口
SdkVerifyUrl string `db:"sdk_verify_url"` // SDK验证地址
SdkVerifySandboxUrl string `db:"sdk_verify_sandbox_url"` // SDK验证地址(沙盒)
WebUrl string `db:"web_url"` // API接口域名
EsUrl string `db:"es_url"` // ES接口地址
IsMerge uint `db:"is_merge"` // 是否是合服后的新服
MergeTime sql.NullString `db:"merge_time"` // 合服时间
HbCheckClosed string `db:"hb_check_closed"` // 心跳包检查是否关闭,默认关闭
ItemBanList sql.NullString `db:"item_ban_list"` // 禁用道具
RegionIso string `db:"region_iso"` // 地区ISO
BytedanceLogOpen string `db:"bytedance_log_open"` // 字节跳动元宝日志,默认开启
IsFightLog string `db:"is_fight_log"` // 是否开启战斗日志默认false
CookieExtend string `db:"cookie_extend"` // 节点cookie
IsOverseas int8 `db:"is_overseas"` // 0国内 1国外
Status int8 `db:"status"` // 1:正常; 2:被合服了; 4:关服
}
)
func newMsGameServerModel(conn sqlx.SqlConn) *defaultMsGameServerModel {
return &defaultMsGameServerModel{
conn: conn,
table: "`ms_game_server`",
}
}
func (m *defaultMsGameServerModel) Delete(ctx context.Context, id int) error {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
_, err := m.conn.ExecCtx(ctx, query, id)
return err
}
func (m *defaultMsGameServerModel) FindOne(ctx context.Context, id int) (*MsGameServer, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", msGameServerRows, m.table)
var resp MsGameServer
err := m.conn.QueryRowCtx(ctx, &resp, query, id)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultMsGameServerModel) Insert(ctx context.Context, data *MsGameServer) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, msGameServerRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.AgentId, data.ServerId, data.AgentServer, data.ServerName, data.ServerServerId, data.MainNodes, data.Gateways, data.GatewayPort, data.GameCode, data.AgentCode, data.Branch, data.ServerStartTime, data.WebPort, data.LogLevel, data.LogDir, data.IsDebug, data.BackgroundLogOpen, data.CenterId, data.CenterIp, data.ReplayId, data.CrossId, data.DbServerId, data.DbPort, data.RedisServerId, data.RedisPort, data.AdminServerId, data.AdminPort, data.SdkVerifyUrl, data.SdkVerifySandboxUrl, data.WebUrl, data.EsUrl, data.IsMerge, data.MergeTime, data.HbCheckClosed, data.ItemBanList, data.RegionIso, data.BytedanceLogOpen, data.IsFightLog, data.CookieExtend, data.IsOverseas, data.Status)
return ret, err
}
func (m *defaultMsGameServerModel) Update(ctx context.Context, data *MsGameServer) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, msGameServerRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.AgentId, data.ServerId, data.AgentServer, data.ServerName, data.ServerServerId, data.MainNodes, data.Gateways, data.GatewayPort, data.GameCode, data.AgentCode, data.Branch, data.ServerStartTime, data.WebPort, data.LogLevel, data.LogDir, data.IsDebug, data.BackgroundLogOpen, data.CenterId, data.CenterIp, data.ReplayId, data.CrossId, data.DbServerId, data.DbPort, data.RedisServerId, data.RedisPort, data.AdminServerId, data.AdminPort, data.SdkVerifyUrl, data.SdkVerifySandboxUrl, data.WebUrl, data.EsUrl, data.IsMerge, data.MergeTime, data.HbCheckClosed, data.ItemBanList, data.RegionIso, data.BytedanceLogOpen, data.IsFightLog, data.CookieExtend, data.IsOverseas, data.Status, data.Id)
return err
}
func (m *defaultMsGameServerModel) tableName() string {
return m.table
}

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))
}

View File

@@ -0,0 +1,96 @@
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.7.6
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
var (
msMergeServersFieldNames = builder.RawFieldNames(&MsMergeServers{})
msMergeServersRows = strings.Join(msMergeServersFieldNames, ",")
msMergeServersRowsExpectAutoSet = strings.Join(stringx.Remove(msMergeServersFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
msMergeServersRowsWithPlaceHolder = strings.Join(stringx.Remove(msMergeServersFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
msMergeServersModel interface {
Insert(ctx context.Context, data *MsMergeServers) (sql.Result, error)
FindOne(ctx context.Context, id uint) (*MsMergeServers, error)
Update(ctx context.Context, data *MsMergeServers) error
Delete(ctx context.Context, id uint) error
}
defaultMsMergeServersModel struct {
conn sqlx.SqlConn
table string
}
MsMergeServers struct {
Id uint `db:"id"`
GsId sql.NullInt64 `db:"gs_id"` // 被合的服ms_game_server里的自增id
FinalServerServerId sql.NullInt64 `db:"final_server_server_id"` // 物理服务器ID来自mg_servers的自增ID
FinalAgentId sql.NullInt64 `db:"final_agent_id"` // 最终被合到了此agent_id下
FinalServerId sql.NullInt64 `db:"final_server_id"` // 最终被合到了此server_id下
FinalAgentServer sql.NullInt64 `db:"final_agent_server"` // 最终被合到了此agent_server下
ServerId sql.NullInt64 `db:"server_id"` // 合到此服
AgentServer sql.NullInt64 `db:"agent_server"` // agent_id 和 server_id的组合
ChildAgentId sql.NullInt64 `db:"child_agent_id"` // 被合服的agent_id
ChildServerId sql.NullInt64 `db:"child_server_id"` // 被合服的server_id
ChildAgentServer sql.NullInt64 `db:"child_agent_server"` // 被合服的server_id 和 server_id组合
AdminId sql.NullInt64 `db:"admin_id"` // 操作员
AddTime sql.NullInt64 `db:"add_time"` // 合服时间
}
)
func newMsMergeServersModel(conn sqlx.SqlConn) *defaultMsMergeServersModel {
return &defaultMsMergeServersModel{
conn: conn,
table: "`ms_merge_servers`",
}
}
func (m *defaultMsMergeServersModel) Delete(ctx context.Context, id uint) error {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
_, err := m.conn.ExecCtx(ctx, query, id)
return err
}
func (m *defaultMsMergeServersModel) FindOne(ctx context.Context, id uint) (*MsMergeServers, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", msMergeServersRows, m.table)
var resp MsMergeServers
err := m.conn.QueryRowCtx(ctx, &resp, query, id)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultMsMergeServersModel) Insert(ctx context.Context, data *MsMergeServers) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, msMergeServersRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.GsId, data.FinalServerServerId, data.FinalAgentId, data.FinalServerId, data.FinalAgentServer, data.ServerId, data.AgentServer, data.ChildAgentId, data.ChildServerId, data.ChildAgentServer, data.AdminId, data.AddTime)
return ret, err
}
func (m *defaultMsMergeServersModel) Update(ctx context.Context, data *MsMergeServers) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, msMergeServersRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.GsId, data.FinalServerServerId, data.FinalAgentId, data.FinalServerId, data.FinalAgentServer, data.ServerId, data.AgentServer, data.ChildAgentId, data.ChildServerId, data.ChildAgentServer, data.AdminId, data.AddTime, data.Id)
return err
}
func (m *defaultMsMergeServersModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,80 @@
package model
import (
"context"
"errors"
"fmt"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ NhGameServerNotifyModel = (*customNhGameServerNotifyModel)(nil)
type (
// NhGameServerNotifyModel is an interface to be customized, add more methods here,
// and implement the added methods in customNhGameServerNotifyModel.
NhGameServerNotifyModel interface {
nhGameServerNotifyModel
withSession(session sqlx.Session) NhGameServerNotifyModel
FindNotifyList(ctx context.Context, status int8) ([]*NhGameServerNotify, error)
UpdateNotifyStatus(ctx context.Context, id uint, status int8) error
}
customNhGameServerNotifyModel struct {
*defaultNhGameServerNotifyModel
}
)
const (
NTF_STATUS_UNKNOWN = 0 // 未知
NTF_STATUS_WAITING_PROCESS = 1 // 待处理
NTF_STATUS_PROCESSING = 2 // 处理中
NTF_STATUS_FAILED = 3 // 处理失败
NTF_STATUS_SUCCESS = 4 // 处理成功
)
func (m *customNhGameServerNotifyModel) UpdateNotifyStatus(ctx context.Context, id uint, status int8) error {
var update string
switch status {
case NTF_STATUS_PROCESSING:
update = fmt.Sprintf("update %s set `status` = 2, `retry_times` = `retry_times` + 1 where `id` = ? and (`status` = 1 or `status` = 3)", m.table)
case NTF_STATUS_FAILED:
update = fmt.Sprintf("update %s set `status` = 3 where `id` = ? and `status` = 1", m.table)
case NTF_STATUS_SUCCESS:
update = fmt.Sprintf("update %s set `status` = 4 where `id` = ? and `status` = 1", m.table)
default:
return fmt.Errorf("unsupported status %d", status)
}
result, err := m.conn.ExecCtx(ctx, update, id)
if err != nil {
return err
}
rows, err := result.RowsAffected()
if err != nil {
return err
}
if rows == 0 {
return ErrNoRowUpdate
}
return nil
}
func (m *customNhGameServerNotifyModel) FindNotifyList(ctx context.Context, status int8) ([]*NhGameServerNotify, error) {
query := fmt.Sprintf("select %s from %s where `status` = ? and `retry_times` < 6 limit 10", nhGameServerNotifyRows, m.table)
var ntfs []*NhGameServerNotify
err := m.conn.QueryRowsCtx(ctx, &ntfs, query, status)
if err != nil && !errors.Is(err, sqlx.ErrNotFound) {
return nil, err
}
return ntfs, nil
}
// NewNhGameServerNotifyModel returns a model for the database table.
func NewNhGameServerNotifyModel(conn sqlx.SqlConn) NhGameServerNotifyModel {
return &customNhGameServerNotifyModel{
defaultNhGameServerNotifyModel: newNhGameServerNotifyModel(conn),
}
}
func (m *customNhGameServerNotifyModel) withSession(session sqlx.Session) NhGameServerNotifyModel {
return NewNhGameServerNotifyModel(sqlx.NewSqlConnFromSession(session))
}

View File

@@ -0,0 +1,92 @@
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.7.6
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"time"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
var (
nhGameServerNotifyFieldNames = builder.RawFieldNames(&NhGameServerNotify{})
nhGameServerNotifyRows = strings.Join(nhGameServerNotifyFieldNames, ",")
nhGameServerNotifyRowsExpectAutoSet = strings.Join(stringx.Remove(nhGameServerNotifyFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
nhGameServerNotifyRowsWithPlaceHolder = strings.Join(stringx.Remove(nhGameServerNotifyFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
nhGameServerNotifyModel interface {
Insert(ctx context.Context, data *NhGameServerNotify) (sql.Result, error)
FindOne(ctx context.Context, id uint) (*NhGameServerNotify, error)
Update(ctx context.Context, data *NhGameServerNotify) error
Delete(ctx context.Context, id uint) error
}
defaultNhGameServerNotifyModel struct {
conn sqlx.SqlConn
table string
}
NhGameServerNotify struct {
Id uint `db:"id"`
RoleId uint64 `db:"role_id"` // 角色id
Action string `db:"action"` // 事件类型
Data sql.NullString `db:"data"` // 事件数据
Status int8 `db:"status"` // 状态1=待处理2=处理中, 3=处理失败, 4=处理成功
RetryTimes int `db:"retry_times"` // 重试次数
CreatedAt time.Time `db:"created_at"` // 创建时间
UpdatedAt time.Time `db:"updated_at"` // 修改时间
}
)
func newNhGameServerNotifyModel(conn sqlx.SqlConn) *defaultNhGameServerNotifyModel {
return &defaultNhGameServerNotifyModel{
conn: conn,
table: "`nh_game_server_notify`",
}
}
func (m *defaultNhGameServerNotifyModel) Delete(ctx context.Context, id uint) error {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
_, err := m.conn.ExecCtx(ctx, query, id)
return err
}
func (m *defaultNhGameServerNotifyModel) FindOne(ctx context.Context, id uint) (*NhGameServerNotify, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", nhGameServerNotifyRows, m.table)
var resp NhGameServerNotify
err := m.conn.QueryRowCtx(ctx, &resp, query, id)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultNhGameServerNotifyModel) Insert(ctx context.Context, data *NhGameServerNotify) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?)", m.table, nhGameServerNotifyRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.RoleId, data.Action, data.Data, data.Status, data.RetryTimes)
return ret, err
}
func (m *defaultNhGameServerNotifyModel) Update(ctx context.Context, data *NhGameServerNotify) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, nhGameServerNotifyRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.RoleId, data.Action, data.Data, data.Status, data.RetryTimes, data.Id)
return err
}
func (m *defaultNhGameServerNotifyModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,29 @@
package model
import "github.com/zeromicro/go-zero/core/stores/sqlx"
var _ NhRequestServerLogModel = (*customNhRequestServerLogModel)(nil)
type (
// NhRequestServerLogModel is an interface to be customized, add more methods here,
// and implement the added methods in customNhRequestServerLogModel.
NhRequestServerLogModel interface {
nhRequestServerLogModel
withSession(session sqlx.Session) NhRequestServerLogModel
}
customNhRequestServerLogModel struct {
*defaultNhRequestServerLogModel
}
)
// NewNhRequestServerLogModel returns a model for the database table.
func NewNhRequestServerLogModel(conn sqlx.SqlConn) NhRequestServerLogModel {
return &customNhRequestServerLogModel{
defaultNhRequestServerLogModel: newNhRequestServerLogModel(conn),
}
}
func (m *customNhRequestServerLogModel) withSession(session sqlx.Session) NhRequestServerLogModel {
return NewNhRequestServerLogModel(sqlx.NewSqlConnFromSession(session))
}

View File

@@ -0,0 +1,90 @@
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.7.6
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
var (
nhRequestServerLogFieldNames = builder.RawFieldNames(&NhRequestServerLog{})
nhRequestServerLogRows = strings.Join(nhRequestServerLogFieldNames, ",")
nhRequestServerLogRowsExpectAutoSet = strings.Join(stringx.Remove(nhRequestServerLogFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
nhRequestServerLogRowsWithPlaceHolder = strings.Join(stringx.Remove(nhRequestServerLogFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
nhRequestServerLogModel interface {
Insert(ctx context.Context, data *NhRequestServerLog) (sql.Result, error)
FindOne(ctx context.Context, id int) (*NhRequestServerLog, error)
Update(ctx context.Context, data *NhRequestServerLog) error
Delete(ctx context.Context, id int) error
}
defaultNhRequestServerLogModel struct {
conn sqlx.SqlConn
table string
}
NhRequestServerLog struct {
Id int `db:"id"`
Action string `db:"action"` // 接口
Url string `db:"url"` // 推送地址
ServerInfo string `db:"server_info"`
ReqData string `db:"req_data"` // 请求数据
ResData string `db:"res_data"` // 响应数据
CreateTime sql.NullTime `db:"create_time"` // 创建时间
}
)
func newNhRequestServerLogModel(conn sqlx.SqlConn) *defaultNhRequestServerLogModel {
return &defaultNhRequestServerLogModel{
conn: conn,
table: "`nh_request_server_log`",
}
}
func (m *defaultNhRequestServerLogModel) Delete(ctx context.Context, id int) error {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
_, err := m.conn.ExecCtx(ctx, query, id)
return err
}
func (m *defaultNhRequestServerLogModel) FindOne(ctx context.Context, id int) (*NhRequestServerLog, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", nhRequestServerLogRows, m.table)
var resp NhRequestServerLog
err := m.conn.QueryRowCtx(ctx, &resp, query, id)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultNhRequestServerLogModel) Insert(ctx context.Context, data *NhRequestServerLog) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?)", m.table, nhRequestServerLogRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.Action, data.Url, data.ServerInfo, data.ReqData, data.ResData)
return ret, err
}
func (m *defaultNhRequestServerLogModel) Update(ctx context.Context, data *NhRequestServerLog) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, nhRequestServerLogRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.Action, data.Url, data.ServerInfo, data.ReqData, data.ResData, data.Id)
return err
}
func (m *defaultNhRequestServerLogModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,45 @@
package model
import (
"context"
"errors"
"fmt"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ NhStakeHomePointConfigModel = (*customNhStakeHomePointConfigModel)(nil)
type (
// NhStakeHomePointConfigModel is an interface to be customized, add more methods here,
// and implement the added methods in customNhStakeHomePointConfigModel.
NhStakeHomePointConfigModel interface {
nhStakeHomePointConfigModel
withSession(session sqlx.Session) NhStakeHomePointConfigModel
All(ctx context.Context) ([]*NhStakeHomePointConfig, error)
}
customNhStakeHomePointConfigModel struct {
*defaultNhStakeHomePointConfigModel
}
)
func (m *customNhStakeHomePointConfigModel) All(ctx context.Context) ([]*NhStakeHomePointConfig, error) {
query := fmt.Sprintf("select %s from %s", nhStakeHomePointConfigRows, m.table)
var resp []*NhStakeHomePointConfig
err := m.conn.QueryRowsCtx(ctx, &resp, query)
if err != nil && !errors.Is(err, sqlx.ErrNotFound) {
return nil, err
}
return resp, nil
}
// NewNhStakeHomePointConfigModel returns a model for the database table.
func NewNhStakeHomePointConfigModel(conn sqlx.SqlConn) NhStakeHomePointConfigModel {
return &customNhStakeHomePointConfigModel{
defaultNhStakeHomePointConfigModel: newNhStakeHomePointConfigModel(conn),
}
}
func (m *customNhStakeHomePointConfigModel) withSession(session sqlx.Session) NhStakeHomePointConfigModel {
return NewNhStakeHomePointConfigModel(sqlx.NewSqlConnFromSession(session))
}

View File

@@ -0,0 +1,95 @@
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.7.6
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"time"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"github.com/shopspring/decimal"
)
var (
nhStakeHomePointConfigFieldNames = builder.RawFieldNames(&NhStakeHomePointConfig{})
nhStakeHomePointConfigRows = strings.Join(nhStakeHomePointConfigFieldNames, ",")
nhStakeHomePointConfigRowsExpectAutoSet = strings.Join(stringx.Remove(nhStakeHomePointConfigFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
nhStakeHomePointConfigRowsWithPlaceHolder = strings.Join(stringx.Remove(nhStakeHomePointConfigFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
nhStakeHomePointConfigModel interface {
Insert(ctx context.Context, data *NhStakeHomePointConfig) (sql.Result, error)
FindOne(ctx context.Context, id uint) (*NhStakeHomePointConfig, error)
Update(ctx context.Context, data *NhStakeHomePointConfig) error
Delete(ctx context.Context, id uint) error
}
defaultNhStakeHomePointConfigModel struct {
conn sqlx.SqlConn
table string
}
NhStakeHomePointConfig struct {
Id uint `db:"id"`
Title string `db:"title"` // 名称
Level uint `db:"level"` // 精灵等级,必须为连续的数字
Points uint `db:"points"` // 积分数量
Days decimal.Decimal `db:"days"` // 天数,为了测试方便,增加小数
RenewDays decimal.Decimal `db:"renew_days"` // 续存倒数天数,为了测试方便,增加小数
Status int8 `db:"status"` // 状态0=正常1=停用
CreatedAt time.Time `db:"created_at"` // 创建时间
UpdatedAt time.Time `db:"updated_at"` // 修改时间
}
)
func newNhStakeHomePointConfigModel(conn sqlx.SqlConn) *defaultNhStakeHomePointConfigModel {
return &defaultNhStakeHomePointConfigModel{
conn: conn,
table: "`nh_stake_home_point_config`",
}
}
func (m *defaultNhStakeHomePointConfigModel) Delete(ctx context.Context, id uint) error {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
_, err := m.conn.ExecCtx(ctx, query, id)
return err
}
func (m *defaultNhStakeHomePointConfigModel) FindOne(ctx context.Context, id uint) (*NhStakeHomePointConfig, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", nhStakeHomePointConfigRows, m.table)
var resp NhStakeHomePointConfig
err := m.conn.QueryRowCtx(ctx, &resp, query, id)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultNhStakeHomePointConfigModel) Insert(ctx context.Context, data *NhStakeHomePointConfig) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?)", m.table, nhStakeHomePointConfigRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.Title, data.Level, data.Points, data.Days, data.RenewDays, data.Status)
return ret, err
}
func (m *defaultNhStakeHomePointConfigModel) Update(ctx context.Context, data *NhStakeHomePointConfig) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, nhStakeHomePointConfigRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.Title, data.Level, data.Points, data.Days, data.RenewDays, data.Status, data.Id)
return err
}
func (m *defaultNhStakeHomePointConfigModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,103 @@
package model
import (
"context"
"errors"
"fmt"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"time"
)
var _ NhStakePointsModel = (*customNhStakePointsModel)(nil)
type (
// NhStakePointsModel is an interface to be customized, add more methods here,
// and implement the added methods in customNhStakePointsModel.
NhStakePointsModel interface {
nhStakePointsModel
WithSession(session sqlx.Session) NhStakePointsModel
FindCurrentLevel(ctx context.Context, roleId int64) (*NhStakePoints, error)
FindRenewLevel(ctx context.Context, roleId int64) (*NhStakePoints, error)
FindOverdueList(ctx context.Context) ([]*NhStakePoints, error)
SetOverdue(ctx context.Context, id uint) error
}
customNhStakePointsModel struct {
*defaultNhStakePointsModel
}
)
const (
PointsStakeStatusUnknown = 0 // 未知状态
PointsStakeStatusStaking = 1 // 质押中
PointsStakeStatusUpgraded = 2 // 已升级
PointsStakeStatusRenew = 3 // 已续约
PointsStakeStatusOverdue = 4 // 已过期
)
func (m *customNhStakePointsModel) SetOverdue(ctx context.Context, id uint) error {
update := fmt.Sprintf("update %s set `status` = %d where `id` = ? and `status` = %d", m.table, PointsStakeStatusOverdue, PointsStakeStatusStaking)
result, err := m.conn.ExecCtx(ctx, update, id)
if err != nil {
return err
}
rows, err := result.RowsAffected()
if err != nil {
return err
}
if rows == 0 {
return ErrNoRowUpdate
}
return nil
}
func (m *customNhStakePointsModel) FindOverdueList(ctx context.Context) ([]*NhStakePoints, error) {
query := fmt.Sprintf("select %s from %s where end_time <= ? and `status` = %d limit 100", nhStakePointsRows, m.table, PointsStakeStatusStaking)
var resp []*NhStakePoints
err := m.conn.QueryRowsCtx(ctx, &resp, query, time.Now())
if err != nil && !errors.Is(err, sqlx.ErrNotFound) {
return nil, err
}
return resp, nil
}
func (m *customNhStakePointsModel) FindRenewLevel(ctx context.Context, roleId int64) (*NhStakePoints, error) {
query := fmt.Sprintf("select %s from %s where `role_id` = ? and start_time > ? and `status` = %d limit 1", nhStakePointsRows, m.table, PointsStakeStatusStaking)
var resp NhStakePoints
now := time.Now()
err := m.conn.QueryRowCtx(ctx, &resp, query, roleId, now)
switch {
case err == nil:
return &resp, nil
case errors.Is(err, sqlx.ErrNotFound):
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *customNhStakePointsModel) FindCurrentLevel(ctx context.Context, roleId int64) (*NhStakePoints, error) {
query := fmt.Sprintf("select %s from %s where `role_id` = ? and start_time <= ? and end_time >= ? and (`status` = %d or `status` = %d) limit 1", nhStakePointsRows, m.table, PointsStakeStatusStaking, PointsStakeStatusRenew)
var resp NhStakePoints
now := time.Now()
err := m.conn.QueryRowCtx(ctx, &resp, query, roleId, now, now)
switch {
case err == nil:
return &resp, nil
case errors.Is(err, sqlx.ErrNotFound):
return nil, ErrNotFound
default:
return nil, err
}
}
// NewNhStakePointsModel returns a model for the database table.
func NewNhStakePointsModel(conn sqlx.SqlConn) NhStakePointsModel {
return &customNhStakePointsModel{
defaultNhStakePointsModel: newNhStakePointsModel(conn),
}
}
func (m *customNhStakePointsModel) WithSession(session sqlx.Session) NhStakePointsModel {
return NewNhStakePointsModel(sqlx.NewSqlConnFromSession(session))
}

View File

@@ -0,0 +1,93 @@
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.7.6
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"time"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
var (
nhStakePointsFieldNames = builder.RawFieldNames(&NhStakePoints{})
nhStakePointsRows = strings.Join(nhStakePointsFieldNames, ",")
nhStakePointsRowsExpectAutoSet = strings.Join(stringx.Remove(nhStakePointsFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
nhStakePointsRowsWithPlaceHolder = strings.Join(stringx.Remove(nhStakePointsFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
nhStakePointsModel interface {
Insert(ctx context.Context, data *NhStakePoints) (sql.Result, error)
FindOne(ctx context.Context, id uint) (*NhStakePoints, error)
Update(ctx context.Context, data *NhStakePoints) error
Delete(ctx context.Context, id uint) error
}
defaultNhStakePointsModel struct {
conn sqlx.SqlConn
table string
}
NhStakePoints struct {
Id uint `db:"id"`
Uid uint `db:"uid"` // 用户id
RoleId uint64 `db:"role_id"` // 角色id
LevelId uint `db:"level_id"` // 档位id
Level uint `db:"level"` // 档位
Points uint `db:"points"` // 积分数量
StartTime time.Time `db:"start_time"` // 开始时间戳
EndTime time.Time `db:"end_time"` // 结束时间戳
Status int8 `db:"status"` // 状态1=质押中2=已升级3=已续约4=已过期
}
)
func newNhStakePointsModel(conn sqlx.SqlConn) *defaultNhStakePointsModel {
return &defaultNhStakePointsModel{
conn: conn,
table: "`nh_stake_points`",
}
}
func (m *defaultNhStakePointsModel) Delete(ctx context.Context, id uint) error {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
_, err := m.conn.ExecCtx(ctx, query, id)
return err
}
func (m *defaultNhStakePointsModel) FindOne(ctx context.Context, id uint) (*NhStakePoints, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", nhStakePointsRows, m.table)
var resp NhStakePoints
err := m.conn.QueryRowCtx(ctx, &resp, query, id)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultNhStakePointsModel) Insert(ctx context.Context, data *NhStakePoints) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?)", m.table, nhStakePointsRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.Uid, data.RoleId, data.LevelId, data.Level, data.Points, data.StartTime, data.EndTime, data.Status)
return ret, err
}
func (m *defaultNhStakePointsModel) Update(ctx context.Context, data *NhStakePoints) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, nhStakePointsRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.Uid, data.RoleId, data.LevelId, data.Level, data.Points, data.StartTime, data.EndTime, data.Status, data.Id)
return err
}
func (m *defaultNhStakePointsModel) tableName() string {
return m.table
}