nft质押道具发放

This commit is contained in:
lianghuanjie
2025-01-02 15:45:53 +08:00
parent ea86ab71e8
commit bc0aeec1da
9 changed files with 215 additions and 13 deletions

View File

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

View File

@@ -0,0 +1,111 @@
// 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 (
nhNftStakePropertyFieldNames = builder.RawFieldNames(&NhNftStakeProperty{})
nhNftStakePropertyRows = strings.Join(nhNftStakePropertyFieldNames, ",")
nhNftStakePropertyRowsExpectAutoSet = strings.Join(stringx.Remove(nhNftStakePropertyFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
nhNftStakePropertyRowsWithPlaceHolder = strings.Join(stringx.Remove(nhNftStakePropertyFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
nhNftStakePropertyModel interface {
Insert(ctx context.Context, data *NhNftStakeProperty) (sql.Result, error)
FindOne(ctx context.Context, id uint) (*NhNftStakeProperty, error)
FindOneByTokenIdSn(ctx context.Context, tokenId uint, sn int8) (*NhNftStakeProperty, error)
Update(ctx context.Context, data *NhNftStakeProperty) error
Delete(ctx context.Context, id uint) error
}
defaultNhNftStakePropertyModel struct {
conn sqlx.SqlConn
table string
}
NhNftStakeProperty struct {
Id uint `db:"id"`
Uid uint `db:"uid"` // 用户ID
RoleId int64 `db:"role_id"` // 角色id
TokenId uint `db:"token_id"` // NFT tokenId
PropertyId string `db:"property_id"` // 道具ID
Sn int8 `db:"sn"` // 序号
CallbackStatus int8 `db:"callback_status"` // 下发通知状态:0未通知,1已通知,2通知异常
CallbackNum int `db:"callback_num"` // 交易成功发送通知次数
CallbackAt sql.NullTime `db:"callback_at"` // 发送通知最新时间
CallbackRemark string `db:"callback_remark"` // 通知回调备注
CreatedAt time.Time `db:"created_at"` // 创建时间
UpdatedAt time.Time `db:"updated_at"` // 修改时间
}
)
func newNhNftStakePropertyModel(conn sqlx.SqlConn) *defaultNhNftStakePropertyModel {
return &defaultNhNftStakePropertyModel{
conn: conn,
table: "`nh_nft_stake_property`",
}
}
func (m *defaultNhNftStakePropertyModel) 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 *defaultNhNftStakePropertyModel) FindOne(ctx context.Context, id uint) (*NhNftStakeProperty, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", nhNftStakePropertyRows, m.table)
var resp NhNftStakeProperty
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 *defaultNhNftStakePropertyModel) FindOneByTokenIdSn(ctx context.Context, tokenId uint, sn int8) (*NhNftStakeProperty, error) {
var resp NhNftStakeProperty
query := fmt.Sprintf("select %s from %s where `token_id` = ? and `sn` = ? limit 1", nhNftStakePropertyRows, m.table)
err := m.conn.QueryRowCtx(ctx, &resp, query, tokenId, sn)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultNhNftStakePropertyModel) Insert(ctx context.Context, data *NhNftStakeProperty) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, nhNftStakePropertyRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.Uid, data.RoleId, data.TokenId, data.PropertyId, data.Sn, data.CallbackStatus, data.CallbackNum, data.CallbackAt, data.CallbackRemark)
return ret, err
}
func (m *defaultNhNftStakePropertyModel) Update(ctx context.Context, newData *NhNftStakeProperty) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, nhNftStakePropertyRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, newData.Uid, newData.RoleId, newData.TokenId, newData.PropertyId, newData.Sn, newData.CallbackStatus, newData.CallbackNum, newData.CallbackAt, newData.CallbackRemark, newData.Id)
return err
}
func (m *defaultNhNftStakePropertyModel) tableName() string {
return m.table
}

View File

@@ -3,6 +3,7 @@ package model
import (
"context"
"fmt"
"github.com/shopspring/decimal"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"time"
)
@@ -15,7 +16,8 @@ type (
NhTaskAssetModel interface {
nhTaskAssetModel
WithSession(session sqlx.Session) NhTaskAssetModel
AddUserPoint(ctx context.Context, uid int, points int) error
AddPoint(ctx context.Context, uid int, points int) error
AddCastile(ctx context.Context, uid uint, castile decimal.Decimal) error
}
customNhTaskAssetModel struct {
@@ -23,6 +25,12 @@ type (
}
)
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)
return err
}
// NewNhTaskAssetModel returns a model for the database table.
func NewNhTaskAssetModel(conn sqlx.SqlConn) NhTaskAssetModel {
return &customNhTaskAssetModel{
@@ -34,7 +42,7 @@ func (m *customNhTaskAssetModel) WithSession(session sqlx.Session) NhTaskAssetMo
return NewNhTaskAssetModel(sqlx.NewSqlConnFromSession(session))
}
func (m *customNhTaskAssetModel) AddUserPoint(ctx context.Context, uid int, points int) error {
func (m *customNhTaskAssetModel) AddPoint(ctx context.Context, uid int, points int) 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

@@ -45,6 +45,7 @@ type (
ElitePoints decimal.Decimal `db:"elite_points"` // 高级积分
Keys int `db:"keys"` // 宝箱钥匙
CreateTime int `db:"create_time"` // 创建时间
Castile decimal.Decimal `db:"castile"` // castile积分
}
)
@@ -90,14 +91,14 @@ func (m *defaultNhTaskAssetModel) FindOneByUid(ctx context.Context, uid int) (*N
}
func (m *defaultNhTaskAssetModel) Insert(ctx context.Context, data *NhTaskAsset) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?)", m.table, nhTaskAssetRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.Uid, data.Points, data.ElitePoints, data.Keys)
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?)", m.table, nhTaskAssetRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.Uid, data.Points, data.ElitePoints, data.Keys, data.Castile)
return ret, err
}
func (m *defaultNhTaskAssetModel) Update(ctx context.Context, newData *NhTaskAsset) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, nhTaskAssetRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, newData.Uid, newData.Points, newData.ElitePoints, newData.Keys, newData.Id)
_, err := m.conn.ExecCtx(ctx, query, newData.Uid, newData.Points, newData.ElitePoints, newData.Keys, newData.Castile, newData.Id)
return err
}

View File

@@ -26,8 +26,9 @@ type (
}
)
// SetReward 对未发送奖励的用户发送奖励,支持并发,且不会重发
func (m *customNhTaskNftStakeRewardModel) SetReward(ctx context.Context, uid uint, awardSeq, occupyPercent int, pledgeOutput, reward decimal.Decimal) error {
update := fmt.Sprintf("UPDATE %s SET `occupy_percent` = ?, `pledge_output` = ?, `reward` = ? WHERE `uid` = ? AND `award_seq` = ?", m.table)
update := fmt.Sprintf("UPDATE %s SET `occupy_percent` = ?, `pledge_output` = ?, `reward` = ?, `sent` = 1 WHERE `uid` = ? AND `award_seq` = ?, `sent` = 0", m.table)
result, err := m.conn.ExecCtx(ctx, update, occupyPercent, pledgeOutput, reward, uid, awardSeq)
if err != nil {
return err