Pull latest changes from upstream/main (GitHub) including: - Purchase RPC service (proto, server, logic, models) - Gateway route updates for purchase endpoints - SQL migration and config updates Excludes deploy/bin/ pre-compiled arm64 binaries (builds use multi-stage Dockerfiles targeting amd64).
62 lines
2.1 KiB
Go
62 lines
2.1 KiB
Go
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
|
|
}
|