muyu-apiserver/model/purpurchasereceiptdetailmodel.go

62 lines
2.1 KiB
Go
Raw Permalink Normal View History

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
}