Files
novatask/internal/model/nh_system_config_model.go
lianghuanjie 957537efc4 game7 api
2025-01-10 16:20:58 +08:00

111 lines
3.1 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
}
customNhSystemConfigModel struct {
*defaultNhSystemConfigModel
}
)
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
}