165 lines
6.1 KiB
Go
165 lines
6.1 KiB
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/perfect-panel/server/internal/config"
|
|
"github.com/redis/go-redis/v9"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type customSystemLogicModel interface {
|
|
GetSmsConfig(ctx context.Context) ([]*System, error)
|
|
GetSiteConfig(ctx context.Context) ([]*System, error)
|
|
GetSubscribeConfig(ctx context.Context) ([]*System, error)
|
|
GetRegisterConfig(ctx context.Context) ([]*System, error)
|
|
GetVerifyConfig(ctx context.Context) ([]*System, error)
|
|
GetNodeConfig(ctx context.Context) ([]*System, error)
|
|
GetInviteConfig(ctx context.Context) ([]*System, error)
|
|
GetTosConfig(ctx context.Context) ([]*System, error)
|
|
GetCurrencyConfig(ctx context.Context) ([]*System, error)
|
|
GetVerifyCodeConfig(ctx context.Context) ([]*System, error)
|
|
GetLogConfig(ctx context.Context) ([]*System, error)
|
|
UpdateNodeMultiplierConfig(ctx context.Context, config string) error
|
|
FindNodeMultiplierConfig(ctx context.Context) (*System, error)
|
|
}
|
|
|
|
// NewModel returns a model for the database table.
|
|
func NewModel(conn *gorm.DB, c *redis.Client) Model {
|
|
return &customSystemModel{
|
|
defaultSystemModel: newSystemModel(conn, c),
|
|
}
|
|
}
|
|
|
|
// GetSmsConfig returns the sms config.
|
|
func (m *customSystemModel) GetSmsConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.SmsConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "sms").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetSiteConfig returns the site config.
|
|
func (m *customSystemModel) GetSiteConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.SiteConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "site").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetEmailConfig returns the email config.
|
|
func (m *customSystemModel) GetEmailConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.EmailSmtpConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "email").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetSubscribeConfig returns the subscribe config.
|
|
func (m *customSystemModel) GetSubscribeConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.SubscribeConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "subscribe").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetRegisterConfig returns the register config.
|
|
func (m *customSystemModel) GetRegisterConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.RegisterConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "register").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetVerifyConfig returns the verify config.
|
|
func (m *customSystemModel) GetVerifyConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.VerifyConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "verify").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetNodeConfig returns the server config.
|
|
func (m *customSystemModel) GetNodeConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.NodeConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "server").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetInviteConfig returns the invite config.
|
|
func (m *customSystemModel) GetInviteConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.InviteConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "invite").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetTelegramConfig returns the telegram config.
|
|
func (m *customSystemModel) GetTelegramConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.TelegramConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "telegram").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetTosConfig returns the tos config.
|
|
func (m *customSystemModel) GetTosConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.TosConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "tos").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetCurrencyConfig returns the currency config.
|
|
func (m *customSystemModel) GetCurrencyConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.CurrencyConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "currency").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
func (m *customSystemModel) UpdateNodeMultiplierConfig(ctx context.Context, config string) error {
|
|
return m.ExecNoCacheCtx(ctx, func(conn *gorm.DB) error {
|
|
return conn.Model(&System{}).Where("`category` = ? AND `key` = ?", "server", "NodeMultiplierConfig").Update("value", config).Error
|
|
})
|
|
}
|
|
|
|
func (m *customSystemModel) FindNodeMultiplierConfig(ctx context.Context) (*System, error) {
|
|
var data System
|
|
err := m.QueryNoCacheCtx(ctx, &data, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ? AND `key` = ?", "server", "NodeMultiplierConfig").Find(v).Error
|
|
})
|
|
return &data, err
|
|
}
|
|
|
|
// GetVerifyCodeConfig returns the verify code config.
|
|
|
|
func (m *customSystemModel) GetVerifyCodeConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryCtx(ctx, &configs, config.VerifyCodeConfigKey, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "verify_code").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|
|
|
|
// GetLogConfig returns the log config.
|
|
func (m *customSystemModel) GetLogConfig(ctx context.Context) ([]*System, error) {
|
|
var configs []*System
|
|
err := m.QueryNoCacheCtx(ctx, &configs, func(conn *gorm.DB, v interface{}) error {
|
|
return conn.Where("`category` = ?", "log").Find(v).Error
|
|
})
|
|
return configs, err
|
|
}
|