email reward

This commit is contained in:
lianghuanjie
2025-01-03 20:44:03 +08:00
parent bc0aeec1da
commit b098e50eb0
36 changed files with 1188 additions and 51 deletions

View File

@@ -0,0 +1,63 @@
package model
import (
"context"
"errors"
"fmt"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"time"
)
var _ NhEmailRewardModel = (*customNhEmailRewardModel)(nil)
type (
// NhEmailRewardModel is an interface to be customized, add more methods here,
// and implement the added methods in customNhEmailRewardModel.
NhEmailRewardModel interface {
nhEmailRewardModel
withSession(session sqlx.Session) NhEmailRewardModel
AllRequireSend(ctx context.Context) ([]NhEmailReward, error)
SetSent(ctx context.Context, id, uid uint) error
}
customNhEmailRewardModel struct {
*defaultNhEmailRewardModel
}
)
func (m *customNhEmailRewardModel) SetSent(ctx context.Context, id, uid uint) error {
upate := fmt.Sprintf("update %s set `uid` = ?, `sent_at` = ? where `id` = ? and `sent_at` = 0", m.table)
result, err := m.conn.ExecCtx(ctx, upate, uid, time.Now().Unix(), id)
if err != nil {
return err
}
rows, err := result.RowsAffected()
if err != nil {
return err
}
if rows == 0 {
return ErrNoRowUpdate
}
return nil
}
func (m *customNhEmailRewardModel) AllRequireSend(ctx context.Context) ([]NhEmailReward, error) {
query := fmt.Sprintf("select %s from %s where `sent_at` = 0", nhEmailRewardRows, m.table)
var result []NhEmailReward
err := m.conn.QueryRowsCtx(ctx, &result, query)
if err != nil && !errors.Is(err, sqlx.ErrNotFound) {
return nil, err
}
return result, nil
}
// NewNhEmailRewardModel returns a model for the database table.
func NewNhEmailRewardModel(conn sqlx.SqlConn) NhEmailRewardModel {
return &customNhEmailRewardModel{
defaultNhEmailRewardModel: newNhEmailRewardModel(conn),
}
}
func (m *customNhEmailRewardModel) withSession(session sqlx.Session) NhEmailRewardModel {
return NewNhEmailRewardModel(sqlx.NewSqlConnFromSession(session))
}

View File

@@ -0,0 +1,95 @@
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.7.3
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 (
nhEmailRewardFieldNames = builder.RawFieldNames(&NhEmailReward{})
nhEmailRewardRows = strings.Join(nhEmailRewardFieldNames, ",")
nhEmailRewardRowsExpectAutoSet = strings.Join(stringx.Remove(nhEmailRewardFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
nhEmailRewardRowsWithPlaceHolder = strings.Join(stringx.Remove(nhEmailRewardFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
nhEmailRewardModel interface {
Insert(ctx context.Context, data *NhEmailReward) (sql.Result, error)
FindOne(ctx context.Context, id uint) (*NhEmailReward, error)
Update(ctx context.Context, data *NhEmailReward) error
Delete(ctx context.Context, id uint) error
}
defaultNhEmailRewardModel struct {
conn sqlx.SqlConn
table string
}
NhEmailReward struct {
Id uint `db:"id"`
Email string `db:"email"` // 邮箱
Uid uint `db:"uid"` // 用户id
RewardType string `db:"reward_type"` // 奖励类型:[points,elite_points,castile,keys]
Value decimal.Decimal `db:"value"` // 需要发送的积分
Remark string `db:"remark"` // 备注
SentAt int `db:"sent_at"` // 发放时间戳
CreatedAt time.Time `db:"created_at"` // 创建时间
UpdatedAt time.Time `db:"updated_at"` // 修改时间
}
)
func newNhEmailRewardModel(conn sqlx.SqlConn) *defaultNhEmailRewardModel {
return &defaultNhEmailRewardModel{
conn: conn,
table: "`nh_email_reward`",
}
}
func (m *defaultNhEmailRewardModel) 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 *defaultNhEmailRewardModel) FindOne(ctx context.Context, id uint) (*NhEmailReward, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", nhEmailRewardRows, m.table)
var resp NhEmailReward
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 *defaultNhEmailRewardModel) Insert(ctx context.Context, data *NhEmailReward) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?)", m.table, nhEmailRewardRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.Email, data.Uid, data.RewardType, data.Value, data.Remark, data.SentAt)
return ret, err
}
func (m *defaultNhEmailRewardModel) Update(ctx context.Context, data *NhEmailReward) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, nhEmailRewardRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.Email, data.Uid, data.RewardType, data.Value, data.Remark, data.SentAt, data.Id)
return err
}
func (m *defaultNhEmailRewardModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,44 @@
package model
import (
"context"
"errors"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ NhNftStakeModel = (*customNhNftStakeModel)(nil)
type (
// NhNftStakeModel is an interface to be customized, add more methods here,
// and implement the added methods in customNhNftStakeModel.
NhNftStakeModel interface {
nhNftStakeModel
withSession(session sqlx.Session) NhNftStakeModel
AllStakeNft(ctx context.Context) ([]NhNftStake, error)
}
customNhNftStakeModel struct {
*defaultNhNftStakeModel
}
)
func (m *customNhNftStakeModel) AllStakeNft(ctx context.Context) ([]NhNftStake, error) {
query := "SELECT * FROM `nh_nft_stake` WHERE `status` = 'staked'"
var result []NhNftStake
err := m.conn.QueryRowsCtx(ctx, &result, query)
if err != nil && !errors.Is(err, sqlx.ErrNotFound) {
return nil, err
}
return result, nil
}
// NewNhNftStakeModel returns a model for the database table.
func NewNhNftStakeModel(conn sqlx.SqlConn) NhNftStakeModel {
return &customNhNftStakeModel{
defaultNhNftStakeModel: newNhNftStakeModel(conn),
}
}
func (m *customNhNftStakeModel) withSession(session sqlx.Session) NhNftStakeModel {
return NewNhNftStakeModel(sqlx.NewSqlConnFromSession(session))
}

View File

@@ -0,0 +1,139 @@
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.7.3
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 (
nhNftStakeFieldNames = builder.RawFieldNames(&NhNftStake{})
nhNftStakeRows = strings.Join(nhNftStakeFieldNames, ",")
nhNftStakeRowsExpectAutoSet = strings.Join(stringx.Remove(nhNftStakeFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
nhNftStakeRowsWithPlaceHolder = strings.Join(stringx.Remove(nhNftStakeFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
nhNftStakeModel interface {
Insert(ctx context.Context, data *NhNftStake) (sql.Result, error)
FindOne(ctx context.Context, id uint) (*NhNftStake, error)
FindOneByStakeHashTokenId(ctx context.Context, stakeHash string, tokenId uint) (*NhNftStake, error)
FindOneByUnstakeHashTokenId(ctx context.Context, unstakeHash string, tokenId uint) (*NhNftStake, error)
Update(ctx context.Context, data *NhNftStake) error
Delete(ctx context.Context, id uint) error
}
defaultNhNftStakeModel struct {
conn sqlx.SqlConn
table string
}
NhNftStake struct {
Id uint `db:"id"`
UserId uint `db:"user_id"` // 用户ID
RoleId uint64 `db:"role_id"` // 角色ID
Email string `db:"email"` // email
UserAddress string `db:"user_address"` // 用户地址
NftAddress string `db:"nft_address"` // nft合约地址
TokenId uint `db:"token_id"` // NFT tokenid
TarotType int8 `db:"tarot_type"` // 塔罗类型1=大塔罗2=小塔罗
LockedGoodsId uint `db:"locked_goods_id"` // 提取前锁定游戏内的道具ID
StakeHash string `db:"stake_hash"` // 质押hash
UnstakeHash string `db:"unstake_hash"` // 提取hash
Status string `db:"status"` // 质押状态:pending待质押staked已质押unstaking提取中unstaked已提取
StakeTime sql.NullTime `db:"stake_time"` // 质押时间
UnstakeTime sql.NullTime `db:"unstake_time"` // 提取时间
Remark sql.NullString `db:"remark"` // 备注
CallbackStatus int8 `db:"callback_status"` // 质押成功通知状态:0未通知,1已通知,2通知异常
CallbackNum int `db:"callback_num"` // 质押成功发送通知次数
CallbackAt sql.NullTime `db:"callback_at"` // 质押通知最新时间
CallbackRemark string `db:"callback_remark"` // 质押通知回调备注
CallbackStatus2 int8 `db:"callback_status2"` // 提取成功通知状态:0未通知,1已通知,2通知异常
CallbackNum2 int `db:"callback_num2"` // 提取成功发送通知次数
CallbackAt2 sql.NullTime `db:"callback_at2"` // 提取发送通知最新时间
CallbackRemark2 string `db:"callback_remark2"` // 提取通知回调备注
CreatedAt time.Time `db:"created_at"` // 创建时间
UpdatedAt time.Time `db:"updated_at"` // 修改时间
}
)
func newNhNftStakeModel(conn sqlx.SqlConn) *defaultNhNftStakeModel {
return &defaultNhNftStakeModel{
conn: conn,
table: "`nh_nft_stake`",
}
}
func (m *defaultNhNftStakeModel) 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 *defaultNhNftStakeModel) FindOne(ctx context.Context, id uint) (*NhNftStake, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", nhNftStakeRows, m.table)
var resp NhNftStake
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 *defaultNhNftStakeModel) FindOneByStakeHashTokenId(ctx context.Context, stakeHash string, tokenId uint) (*NhNftStake, error) {
var resp NhNftStake
query := fmt.Sprintf("select %s from %s where `stake_hash` = ? and `token_id` = ? limit 1", nhNftStakeRows, m.table)
err := m.conn.QueryRowCtx(ctx, &resp, query, stakeHash, tokenId)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultNhNftStakeModel) FindOneByUnstakeHashTokenId(ctx context.Context, unstakeHash string, tokenId uint) (*NhNftStake, error) {
var resp NhNftStake
query := fmt.Sprintf("select %s from %s where `unstake_hash` = ? and `token_id` = ? limit 1", nhNftStakeRows, m.table)
err := m.conn.QueryRowCtx(ctx, &resp, query, unstakeHash, tokenId)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultNhNftStakeModel) Insert(ctx context.Context, data *NhNftStake) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, nhNftStakeRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.UserId, data.RoleId, data.Email, data.UserAddress, data.NftAddress, data.TokenId, data.TarotType, data.LockedGoodsId, data.StakeHash, data.UnstakeHash, data.Status, data.StakeTime, data.UnstakeTime, data.Remark, data.CallbackStatus, data.CallbackNum, data.CallbackAt, data.CallbackRemark, data.CallbackStatus2, data.CallbackNum2, data.CallbackAt2, data.CallbackRemark2)
return ret, err
}
func (m *defaultNhNftStakeModel) Update(ctx context.Context, newData *NhNftStake) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, nhNftStakeRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, newData.UserId, newData.RoleId, newData.Email, newData.UserAddress, newData.NftAddress, newData.TokenId, newData.TarotType, newData.LockedGoodsId, newData.StakeHash, newData.UnstakeHash, newData.Status, newData.StakeTime, newData.UnstakeTime, newData.Remark, newData.CallbackStatus, newData.CallbackNum, newData.CallbackAt, newData.CallbackRemark, newData.CallbackStatus2, newData.CallbackNum2, newData.CallbackAt2, newData.CallbackRemark2, newData.Id)
return err
}
func (m *defaultNhNftStakeModel) tableName() string {
return m.table
}

View File

@@ -3,6 +3,7 @@ package model
import (
"context"
"encoding/json"
"errors"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"nova_task/internal/consts"
@@ -18,6 +19,8 @@ type (
nhSystemConfigModel
GetNftStakeTaskOpenDate(ctx context.Context) (start, end time.Time, err error)
GetNftStakeTaskConf(ctx context.Context) (conf NftStakeTaskConf, err error)
GetCarvApiKey(ctx context.Context) (apiKey string, err error)
GetAdminSecret(ctx context.Context) (secret string, err error)
}
customNhSystemConfigModel struct {
@@ -25,6 +28,28 @@ type (
}
)
func (m *customNhSystemConfigModel) GetAdminSecret(ctx context.Context) (secret string, err error) {
cf, err := m.FindOneByName(ctx, consts.CarvApiKey)
if err != nil {
if !errors.Is(err, sqlx.ErrNotFound) {
return "", err
}
return "", nil
}
return cf.Value, nil
}
func (m *customNhSystemConfigModel) GetCarvApiKey(ctx context.Context) (string, error) {
cf, err := m.FindOneByName(ctx, consts.CarvApiKey)
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{

View File

@@ -16,8 +16,10 @@ type (
NhTaskAssetModel interface {
nhTaskAssetModel
WithSession(session sqlx.Session) NhTaskAssetModel
AddPoint(ctx context.Context, uid int, points int) error
AddPoint(ctx context.Context, uid uint, points decimal.Decimal) error
AddCastile(ctx context.Context, uid uint, castile decimal.Decimal) error
AddElitePoints(ctx context.Context, uid uint, points decimal.Decimal) error
AddKeys(ctx context.Context, uid uint, keys int) error
}
customNhTaskAssetModel struct {
@@ -25,6 +27,18 @@ type (
}
)
func (m *customNhTaskAssetModel) AddKeys(ctx context.Context, uid uint, keys int) error {
insertOrUpdate := fmt.Sprintf("INSERT INTO %s (`uid`, `keys`, `create_time`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `keys` = `keys` + ?", m.table)
_, err := m.conn.ExecCtx(ctx, insertOrUpdate, uid, keys, time.Now().Unix(), keys)
return err
}
func (m *customNhTaskAssetModel) AddElitePoints(ctx context.Context, uid uint, elitePoints decimal.Decimal) error {
insertOrUpdate := fmt.Sprintf("INSERT INTO %s (`uid`, `elite_points`, `create_time`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `elite_points` = `elite_points` + ?", m.table)
_, err := m.conn.ExecCtx(ctx, insertOrUpdate, uid, elitePoints, time.Now().Unix(), elitePoints)
return err
}
func (m *customNhTaskAssetModel) AddCastile(ctx context.Context, uid uint, castile decimal.Decimal) error {
insertOrUpdate := fmt.Sprintf("INSERT INTO %s (`uid`, `castile`, `create_time`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `castile` = `castile` + ?", m.table)
_, err := m.conn.ExecCtx(ctx, insertOrUpdate, uid, castile, time.Now().Unix(), castile)
@@ -42,7 +56,7 @@ func (m *customNhTaskAssetModel) WithSession(session sqlx.Session) NhTaskAssetMo
return NewNhTaskAssetModel(sqlx.NewSqlConnFromSession(session))
}
func (m *customNhTaskAssetModel) AddPoint(ctx context.Context, uid int, points int) error {
func (m *customNhTaskAssetModel) AddPoint(ctx context.Context, uid uint, points decimal.Decimal) error {
insertOrUpdate := fmt.Sprintf("INSERT INTO %s (`uid`, `points`, `create_time`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `points` = `points` + ?", m.table)
_, err := m.conn.ExecCtx(ctx, insertOrUpdate, uid, points, time.Now().Unix(), points)
return err

View File

@@ -40,11 +40,8 @@ type (
Id uint `db:"id"`
Uid uint `db:"uid"` // 用户钱包
RoleId uint64 `db:"role_id"` // 角色id
Address string `db:"address"` // 钱包地址
TokenId string `db:"token_id"` // token id
AwardSeq int `db:"award_seq"` // 派奖序列号
Balance int `db:"balance"` // 余额
Stake int8 `db:"stake"` // 状态1质押中 0未质押
Operate int8 `db:"operate"` // 状态1质押 2取消质押, 3转出
CreatedAt time.Time `db:"created_at"` // 创建时间
UpdatedAt time.Time `db:"updated_at"` // 修改时间
}
@@ -78,14 +75,14 @@ func (m *defaultNhTaskNftStakeLogModel) FindOne(ctx context.Context, id uint) (*
}
func (m *defaultNhTaskNftStakeLogModel) Insert(ctx context.Context, data *NhTaskNftStakeLog) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?)", m.table, nhTaskNftStakeLogRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.Uid, data.RoleId, data.Address, data.TokenId, data.AwardSeq, data.Balance, data.Stake)
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?)", m.table, nhTaskNftStakeLogRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.Uid, data.RoleId, data.TokenId, data.Operate)
return ret, err
}
func (m *defaultNhTaskNftStakeLogModel) Update(ctx context.Context, data *NhTaskNftStakeLog) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, nhTaskNftStakeLogRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.Uid, data.RoleId, data.Address, data.TokenId, data.AwardSeq, data.Balance, data.Stake, data.Id)
_, err := m.conn.ExecCtx(ctx, query, data.Uid, data.RoleId, data.TokenId, data.Operate, data.Id)
return err
}

View File

@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
@@ -15,14 +16,15 @@ type (
NhTaskNftStakeModel interface {
nhTaskNftStakeModel
withSession(session sqlx.Session) NhTaskNftStakeModel
StakeNft(ctx context.Context, uid uint, roleId uint64, tokens []string) error
UnStakeNft(ctx context.Context, uid uint, token string) error
StakeNft(ctx context.Context, uid uint, roleId uint64, tokenId string) error
UnStakeNft(ctx context.Context, uid uint, token string, isTransferOut bool) error
FindByUid(ctx context.Context, uid uint) ([]NhTaskNftStake, error)
AllStakeNft(ctx context.Context) ([]NhTaskNftStake, error)
}
customNhTaskNftStakeModel struct {
*defaultNhTaskNftStakeModel
log NhTaskNftStakeLogModel
}
)
@@ -46,19 +48,46 @@ func (m *customNhTaskNftStakeModel) FindByUid(ctx context.Context, uid uint) ([]
return list, nil
}
func (m *customNhTaskNftStakeModel) UnStakeNft(ctx context.Context, uid uint, token string) error {
func (m *customNhTaskNftStakeModel) UnStakeNft(ctx context.Context, uid uint, token string, isTransferOut bool) error {
update := fmt.Sprintf("UPDATE %s SET `state` = 0 WHERE `uid` = ? AND `token_id` = ?", m.table)
_, err := m.conn.ExecCtx(ctx, update, uid, token)
result, err := m.conn.ExecCtx(ctx, update, uid, token)
if err != nil {
return err
}
row, err := result.RowsAffected()
if err != nil {
return err
}
if row > 0 {
var operate int8
if isTransferOut {
operate = 3
} else {
operate = 2
}
_, err = m.log.Insert(ctx, &NhTaskNftStakeLog{
Uid: uid,
TokenId: token,
Operate: operate,
})
}
return err
}
func (m *customNhTaskNftStakeModel) StakeNft(ctx context.Context, uid uint, roleId uint64, tokens []string) error {
func (m *customNhTaskNftStakeModel) StakeNft(ctx context.Context, uid uint, roleId uint64, tokenId string) error {
insertOrUpdate := fmt.Sprintf("INSERT INTO %s (`uid`, `token_id`, `role_id`, `state`) VALUES (?, ?, ?, 1) ON DUPLICATE KEY UPDATE `role_id` = ?, `state` = 1", m.table)
for _, token := range tokens {
_, err := m.conn.ExecCtx(ctx, insertOrUpdate, uid, token, roleId, roleId)
if err != nil {
return err
}
_, err := m.conn.ExecCtx(ctx, insertOrUpdate, uid, tokenId, roleId, roleId)
if err != nil {
return err
}
_, err = m.log.Insert(ctx, &NhTaskNftStakeLog{
Uid: uid,
RoleId: roleId,
TokenId: tokenId,
Operate: 1,
})
if err != nil {
logx.Errorw("insert stake log failed", logx.Field("err", err), logx.Field("uid", uid), logx.Field("tokenId", token), logx.Field("role", roleId))
}
return nil
}
@@ -67,6 +96,7 @@ func (m *customNhTaskNftStakeModel) StakeNft(ctx context.Context, uid uint, role
func NewNhTaskNftStakeModel(conn sqlx.SqlConn) NhTaskNftStakeModel {
return &customNhTaskNftStakeModel{
defaultNhTaskNftStakeModel: newNhTaskNftStakeModel(conn),
log: NewNhTaskNftStakeLogModel(conn),
}
}