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 }