tianyuan-api-server/apps/user/internal/model/rechargemodel_gen.go
2024-10-15 17:19:23 +08:00

178 lines
7.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.7.2
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"time"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
var (
rechargeFieldNames = builder.RawFieldNames(&Recharge{})
rechargeRows = strings.Join(rechargeFieldNames, ",")
rechargeRowsExpectAutoSet = strings.Join(stringx.Remove(rechargeFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
rechargeRowsWithPlaceHolder = strings.Join(stringx.Remove(rechargeFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
cacheRechargeIdPrefix = "cache:recharge:id:"
cacheRechargeOutTradeNoPrefix = "cache:recharge:outTradeNo:"
cacheRechargeTransactionIdPrefix = "cache:recharge:transactionId:"
)
type (
rechargeModel interface {
Insert(ctx context.Context, data *Recharge) (sql.Result, error)
FindOne(ctx context.Context, id int64) (*Recharge, error)
FindOneByOutTradeNo(ctx context.Context, outTradeNo string) (*Recharge, error)
FindOneByTransactionId(ctx context.Context, transactionId string) (*Recharge, error)
Update(ctx context.Context, data *Recharge) error
Delete(ctx context.Context, id int64) error
}
defaultRechargeModel struct {
sqlc.CachedConn
table string
}
Recharge struct {
Id int64 `db:"id"` // 主键
UserId int64 `db:"user_id"` // 用户ID
TransactionId string `db:"transaction_id"` // 交易ID唯一
OutTradeNo string `db:"out_trade_no"` // 外部订单号,唯一
Amount float64 `db:"amount"` // 充值金额
PaymentMethod int64 `db:"payment_method"` // 充值方式 1-支付宝在线支付, 2-对公转账
CreatedAt time.Time `db:"created_at"` // 创建时间
UpdatedAt time.Time `db:"updated_at"` // 更新时间
}
)
func newRechargeModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultRechargeModel {
return &defaultRechargeModel{
CachedConn: sqlc.NewConn(conn, c, opts...),
table: "`recharge`",
}
}
func (m *defaultRechargeModel) Delete(ctx context.Context, id int64) error {
data, err := m.FindOne(ctx, id)
if err != nil {
return err
}
rechargeIdKey := fmt.Sprintf("%s%v", cacheRechargeIdPrefix, id)
rechargeOutTradeNoKey := fmt.Sprintf("%s%v", cacheRechargeOutTradeNoPrefix, data.OutTradeNo)
rechargeTransactionIdKey := fmt.Sprintf("%s%v", cacheRechargeTransactionIdPrefix, data.TransactionId)
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
return conn.ExecCtx(ctx, query, id)
}, rechargeIdKey, rechargeOutTradeNoKey, rechargeTransactionIdKey)
return err
}
func (m *defaultRechargeModel) FindOne(ctx context.Context, id int64) (*Recharge, error) {
rechargeIdKey := fmt.Sprintf("%s%v", cacheRechargeIdPrefix, id)
var resp Recharge
err := m.QueryRowCtx(ctx, &resp, rechargeIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", rechargeRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id)
})
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultRechargeModel) FindOneByOutTradeNo(ctx context.Context, outTradeNo string) (*Recharge, error) {
rechargeOutTradeNoKey := fmt.Sprintf("%s%v", cacheRechargeOutTradeNoPrefix, outTradeNo)
var resp Recharge
err := m.QueryRowIndexCtx(ctx, &resp, rechargeOutTradeNoKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) {
query := fmt.Sprintf("select %s from %s where `out_trade_no` = ? limit 1", rechargeRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, outTradeNo); err != nil {
return nil, err
}
return resp.Id, nil
}, m.queryPrimary)
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultRechargeModel) FindOneByTransactionId(ctx context.Context, transactionId string) (*Recharge, error) {
rechargeTransactionIdKey := fmt.Sprintf("%s%v", cacheRechargeTransactionIdPrefix, transactionId)
var resp Recharge
err := m.QueryRowIndexCtx(ctx, &resp, rechargeTransactionIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) {
query := fmt.Sprintf("select %s from %s where `transaction_id` = ? limit 1", rechargeRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, transactionId); err != nil {
return nil, err
}
return resp.Id, nil
}, m.queryPrimary)
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultRechargeModel) Insert(ctx context.Context, data *Recharge) (sql.Result, error) {
rechargeIdKey := fmt.Sprintf("%s%v", cacheRechargeIdPrefix, data.Id)
rechargeOutTradeNoKey := fmt.Sprintf("%s%v", cacheRechargeOutTradeNoPrefix, data.OutTradeNo)
rechargeTransactionIdKey := fmt.Sprintf("%s%v", cacheRechargeTransactionIdPrefix, data.TransactionId)
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?)", m.table, rechargeRowsExpectAutoSet)
return conn.ExecCtx(ctx, query, data.UserId, data.TransactionId, data.OutTradeNo, data.Amount, data.PaymentMethod)
}, rechargeIdKey, rechargeOutTradeNoKey, rechargeTransactionIdKey)
return ret, err
}
func (m *defaultRechargeModel) Update(ctx context.Context, newData *Recharge) error {
data, err := m.FindOne(ctx, newData.Id)
if err != nil {
return err
}
rechargeIdKey := fmt.Sprintf("%s%v", cacheRechargeIdPrefix, data.Id)
rechargeOutTradeNoKey := fmt.Sprintf("%s%v", cacheRechargeOutTradeNoPrefix, data.OutTradeNo)
rechargeTransactionIdKey := fmt.Sprintf("%s%v", cacheRechargeTransactionIdPrefix, data.TransactionId)
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, rechargeRowsWithPlaceHolder)
return conn.ExecCtx(ctx, query, newData.UserId, newData.TransactionId, newData.OutTradeNo, newData.Amount, newData.PaymentMethod, newData.Id)
}, rechargeIdKey, rechargeOutTradeNoKey, rechargeTransactionIdKey)
return err
}
func (m *defaultRechargeModel) formatPrimary(primary any) string {
return fmt.Sprintf("%s%v", cacheRechargeIdPrefix, primary)
}
func (m *defaultRechargeModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", rechargeRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary)
}
func (m *defaultRechargeModel) tableName() string {
return m.table
}