Files
novatask/internal/model/nh_task_asset_model.go
lianghuanjie b098e50eb0 email reward
2025-01-03 20:44:03 +08:00

64 lines
2.6 KiB
Go
Executable File

package model
import (
"context"
"fmt"
"github.com/shopspring/decimal"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"time"
)
var _ NhTaskAssetModel = (*customNhTaskAssetModel)(nil)
type (
// NhTaskAssetModel is an interface to be customized, add more methods here,
// and implement the added methods in customNhTaskAssetModel.
NhTaskAssetModel interface {
nhTaskAssetModel
WithSession(session sqlx.Session) NhTaskAssetModel
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 {
*defaultNhTaskAssetModel
}
)
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)
return err
}
// NewNhTaskAssetModel returns a model for the database table.
func NewNhTaskAssetModel(conn sqlx.SqlConn) NhTaskAssetModel {
return &customNhTaskAssetModel{
defaultNhTaskAssetModel: newNhTaskAssetModel(conn),
}
}
func (m *customNhTaskAssetModel) WithSession(session sqlx.Session) NhTaskAssetModel {
return NewNhTaskAssetModel(sqlx.NewSqlConnFromSession(session))
}
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
}