package model import ( "context" "fmt" "strings" "github.com/zeromicro/go-zero/core/stores/sqlx" ) var _ PurPurchaseReceiptDetailModel = (*customPurPurchaseReceiptDetailModel)(nil) type ( PurPurchaseReceiptDetailModel interface { purPurchaseReceiptDetailModel FindByReceiptId(ctx context.Context, receiptId string) ([]*PurPurchaseReceiptDetail, error) DeleteByReceiptId(ctx context.Context, receiptId string) error BulkInsert(ctx context.Context, details []*PurPurchaseReceiptDetail) error } customPurPurchaseReceiptDetailModel struct { *defaultPurPurchaseReceiptDetailModel } ) func NewPurPurchaseReceiptDetailModel(conn sqlx.SqlConn) PurPurchaseReceiptDetailModel { return &customPurPurchaseReceiptDetailModel{ defaultPurPurchaseReceiptDetailModel: newPurPurchaseReceiptDetailModel(conn), } } func (m *customPurPurchaseReceiptDetailModel) FindByReceiptId(ctx context.Context, receiptId string) ([]*PurPurchaseReceiptDetail, error) { var list []*PurPurchaseReceiptDetail query := fmt.Sprintf("SELECT %s FROM %s WHERE receipt_id = ?", purPurchaseReceiptDetailRows, m.table) if err := m.conn.QueryRowsCtx(ctx, &list, query, receiptId); err != nil { return nil, err } return list, nil } func (m *customPurPurchaseReceiptDetailModel) DeleteByReceiptId(ctx context.Context, receiptId string) error { query := fmt.Sprintf("DELETE FROM %s WHERE receipt_id = ?", m.table) _, err := m.conn.ExecCtx(ctx, query, receiptId) return err } func (m *customPurPurchaseReceiptDetailModel) BulkInsert(ctx context.Context, details []*PurPurchaseReceiptDetail) error { if len(details) == 0 { return nil } placeholder := "(?, ?, ?, ?, ?, ?, ?)" placeholders := make([]string, len(details)) args := make([]interface{}, 0, len(details)*7) for i, d := range details { placeholders[i] = placeholder args = append(args, d.DetailId, d.ReceiptId, d.OrderDetailId, d.ProductId, d.ActualQty, d.UnitCost, d.Remark) } query := fmt.Sprintf("INSERT INTO %s (%s) VALUES %s", m.table, purPurchaseReceiptDetailRowsExpectAutoSet, strings.Join(placeholders, ",")) _, err := m.conn.ExecCtx(ctx, query, args...) return err }