email reward
This commit is contained in:
63
internal/model/nh_email_reward_model.go
Executable file
63
internal/model/nh_email_reward_model.go
Executable 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))
|
||||
}
|
||||
95
internal/model/nh_email_reward_model_gen.go
Executable file
95
internal/model/nh_email_reward_model_gen.go
Executable 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
|
||||
}
|
||||
44
internal/model/nh_nft_stake_model.go
Executable file
44
internal/model/nh_nft_stake_model.go
Executable 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))
|
||||
}
|
||||
139
internal/model/nh_nft_stake_model_gen.go
Executable file
139
internal/model/nh_nft_stake_model_gen.go
Executable 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
|
||||
}
|
||||
@@ -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{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user