init: 1.0.0
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
package payment
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/redis/go-redis/v9"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type customPaymentLogicModel interface {
|
||||
FindOneByPaymentToken(ctx context.Context, token string) (*Payment, error)
|
||||
FindAll(ctx context.Context) ([]*Payment, error)
|
||||
FindListByPage(ctx context.Context, page, size int, req *Filter) (int64, []*Payment, error)
|
||||
FindAvailableMethods(ctx context.Context) ([]*Payment, error)
|
||||
}
|
||||
|
||||
// NewModel returns a model for the database table.
|
||||
func NewModel(conn *gorm.DB, c *redis.Client) Model {
|
||||
return &customPaymentModel{
|
||||
defaultPaymentModel: newPaymentModel(conn, c),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *customPaymentModel) FindOneByPaymentToken(ctx context.Context, token string) (*Payment, error) {
|
||||
var resp *Payment
|
||||
key := cachePaymentTokenPrefix + token
|
||||
err := m.QueryCtx(ctx, &resp, key, func(conn *gorm.DB, v interface{}) error {
|
||||
return conn.Model(&Payment{}).Where("token = ?", token).First(v).Error
|
||||
})
|
||||
return resp, err
|
||||
}
|
||||
|
||||
func (m *customPaymentModel) FindAll(ctx context.Context) ([]*Payment, error) {
|
||||
var resp []*Payment
|
||||
err := m.QueryNoCacheCtx(ctx, &resp, func(conn *gorm.DB, v interface{}) error {
|
||||
return conn.Model(&Payment{}).Find(v).Error
|
||||
})
|
||||
return resp, err
|
||||
}
|
||||
|
||||
func (m *customPaymentModel) FindAvailableMethods(ctx context.Context) ([]*Payment, error) {
|
||||
var resp []*Payment
|
||||
err := m.QueryNoCacheCtx(ctx, &resp, func(conn *gorm.DB, v interface{}) error {
|
||||
return conn.Model(&Payment{}).Where("enable = ?", true).Find(v).Error
|
||||
})
|
||||
return resp, err
|
||||
}
|
||||
|
||||
func (m *customPaymentModel) FindListByPage(ctx context.Context, page, size int, req *Filter) (int64, []*Payment, error) {
|
||||
var resp []*Payment
|
||||
var total int64
|
||||
err := m.QueryNoCacheCtx(ctx, &resp, func(conn *gorm.DB, v interface{}) error {
|
||||
conn = conn.Model(&Payment{})
|
||||
if req != nil {
|
||||
if req.Enable != nil {
|
||||
conn = conn.Where("`enable` = ?", *req.Enable)
|
||||
}
|
||||
if req.Mark != "" {
|
||||
conn = conn.Where("`mark` = ?", req.Mark)
|
||||
}
|
||||
if req.Search != "" {
|
||||
conn = conn.Where("`name` LIKE ?", "%"+req.Search+"%")
|
||||
}
|
||||
}
|
||||
|
||||
return conn.Count(&total).Offset((page - 1) * size).Limit(size).Find(v).Error
|
||||
})
|
||||
return total, resp, err
|
||||
}
|
||||
Reference in New Issue
Block a user