64 lines
2.6 KiB
Go
Executable File
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
|
|
}
|