Files
novatask/internal/model/nh_system_config_model.go
2025-03-20 17:15:54 +08:00

123 lines
3.5 KiB
Go
Executable File

package model
import (
"context"
"encoding/json"
"errors"
"github.com/spf13/cast"
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"nova_task/internal/consts"
"time"
)
var _ NhSystemConfigModel = (*customNhSystemConfigModel)(nil)
type (
// NhSystemConfigModel is an interface to be customized, add more methods here,
// and implement the added methods in customNhSystemConfigModel.
NhSystemConfigModel interface {
nhSystemConfigModel
GetNftStakeTaskOpenDate(ctx context.Context) (start, end time.Time, err error)
GetNftStakeTaskConf(ctx context.Context) (conf NftStakeTaskConf, err error)
GetApiKey(ctx context.Context, name string) (apiKey string, err error)
GetAdminSecret(ctx context.Context) (secret string, err error)
GetInviterId(ctx context.Context, name string) uint
GetTriballyApiKey(ctx context.Context) (apiKey string, err error)
}
customNhSystemConfigModel struct {
*defaultNhSystemConfigModel
}
)
func (m *customNhSystemConfigModel) GetTriballyApiKey(ctx context.Context) (apiKey string, err error) {
cf, err := m.FindOneByName(ctx, consts.TriballyApiKey)
if err != nil {
if !errors.Is(err, sqlx.ErrNotFound) {
return "", err
}
return "", nil
}
return cf.Value, nil
}
func (m *customNhSystemConfigModel) GetInviterId(ctx context.Context, name string) uint {
cf, err := m.FindOneByName(ctx, name)
if err != nil {
if !errors.Is(err, sqlx.ErrNotFound) {
logx.Errorw("GetInviterId error", logx.Field("err", err))
}
return 0
}
return cast.ToUint(cf.Value)
}
func (m *customNhSystemConfigModel) GetAdminSecret(ctx context.Context) (secret string, err error) {
cf, err := m.FindOneByName(ctx, consts.AdminSecret)
if err != nil {
if !errors.Is(err, sqlx.ErrNotFound) {
return "", err
}
return "", nil
}
return cf.Value, nil
}
func (m *customNhSystemConfigModel) GetApiKey(ctx context.Context, name string) (string, error) {
cf, err := m.FindOneByName(ctx, name)
if err != nil {
if !errors.Is(err, sqlx.ErrNotFound) {
return "", err
}
return "", nil
}
return cf.Value, nil
}
// NewNhSystemConfigModel returns a model for the database table.
func NewNhSystemConfigModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) NhSystemConfigModel {
return &customNhSystemConfigModel{
defaultNhSystemConfigModel: newNhSystemConfigModel(conn, c, opts...),
}
}
func (m *customNhSystemConfigModel) GetNftStakeTaskOpenDate(ctx context.Context) (start, end time.Time, err error) {
cf, err := m.FindOneByName(ctx, consts.NftStakeTaskDate)
if err != nil {
return
}
dateConf := struct {
Start string `json:"start"`
End string `json:"end"`
}{}
err = json.Unmarshal([]byte(cf.Value), &dateConf)
if err != nil {
return
}
start, err = time.ParseInLocation(time.DateOnly, dateConf.Start, time.Local)
if err != nil {
return
}
end, err = time.ParseInLocation(time.DateTime, dateConf.End+" 23:59:59", time.Local)
return
}
type NftStakeTaskConf struct {
OccupyPercent int `json:"occupy_percent"`
LittleTarot int `json:"little_tarot"`
GreatTarot int `json:"great_tarot"`
MinCoefficient float64 `json:"min_coefficient"`
MaxCoefficient float64 `json:"max_coefficient"`
}
func (m *customNhSystemConfigModel) GetNftStakeTaskConf(ctx context.Context) (conf NftStakeTaskConf, err error) {
cf, err := m.FindOneByName(ctx, consts.NftStakeTaskConf)
if err != nil {
return
}
err = json.Unmarshal([]byte(cf.Value), &conf)
return
}