| 
									
										
										
										
											2024-10-15 17:19:23 +08:00
										 |  |  |  | // 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 { | 
					
						
							| 
									
										
										
										
											2024-10-16 20:46:46 +08:00
										 |  |  |  | 		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-对公转账 | 
					
						
							|  |  |  |  | 		Remark        sql.NullString `db:"remark"`         // 备注 | 
					
						
							|  |  |  |  | 		CreatedAt     time.Time      `db:"created_at"`     // 创建时间 | 
					
						
							|  |  |  |  | 		UpdatedAt     time.Time      `db:"updated_at"`     // 更新时间 | 
					
						
							| 
									
										
										
										
											2024-10-15 17:19:23 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | ) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 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) { | 
					
						
							| 
									
										
										
										
											2024-10-16 20:46:46 +08:00
										 |  |  |  | 		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, data.Remark) | 
					
						
							| 
									
										
										
										
											2024-10-15 17:19:23 +08:00
										 |  |  |  | 	}, 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) | 
					
						
							| 
									
										
										
										
											2024-10-16 20:46:46 +08:00
										 |  |  |  | 		return conn.ExecCtx(ctx, query, newData.UserId, newData.TransactionId, newData.OutTradeNo, newData.Amount, newData.PaymentMethod, newData.Remark, newData.Id) | 
					
						
							| 
									
										
										
										
											2024-10-15 17:19:23 +08:00
										 |  |  |  | 	}, 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 | 
					
						
							|  |  |  |  | } |