muyu-apiserver/model/purpurchaseordermodel_gen.go
Chever John a25acdc5e4 chore: sync codebase with upstream
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).
2026-06-15 09:20:56 +08:00

188 lines
8.2 KiB
Go

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 (
purPurchaseOrderFieldNames = builder.RawFieldNames(&PurPurchaseOrder{})
purPurchaseOrderRows = strings.Join(purPurchaseOrderFieldNames, ",")
purPurchaseOrderRowsExpectAutoSet = strings.Join(stringx.Remove(purPurchaseOrderFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
purPurchaseOrderRowsWithPlaceHolder = strings.Join(stringx.Remove(purPurchaseOrderFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
cachePurPurchaseOrderIdPrefix = "cache:purPurchaseOrder:id:"
cachePurPurchaseOrderOrderIdPrefix = "cache:purPurchaseOrder:orderId:"
cachePurPurchaseOrderOrderNoPrefix = "cache:purPurchaseOrder:orderNo:"
)
type (
purPurchaseOrderModel interface {
Insert(ctx context.Context, data *PurPurchaseOrder) (sql.Result, error)
FindOne(ctx context.Context, id int64) (*PurPurchaseOrder, error)
FindOneByOrderId(ctx context.Context, orderId string) (*PurPurchaseOrder, error)
FindOneByOrderNo(ctx context.Context, orderNo string) (*PurPurchaseOrder, error)
Update(ctx context.Context, data *PurPurchaseOrder) error
Delete(ctx context.Context, id int64) error
}
defaultPurPurchaseOrderModel struct {
sqlc.CachedConn
table string
}
PurPurchaseOrder struct {
Id int64 `db:"id"`
OrderId string `db:"order_id"`
TenantId string `db:"tenant_id"`
OrderNo string `db:"order_no"`
SupplierId string `db:"supplier_id"`
OrderDate time.Time `db:"order_date"`
ContractAmount float64 `db:"contract_amount"`
ReceivedQty float64 `db:"received_qty"`
PaidAmount float64 `db:"paid_amount"`
PaymentStatus int64 `db:"payment_status"`
ReceiptStatus int64 `db:"receipt_status"`
PurchaseBy string `db:"purchase_by"`
Creator string `db:"creator"`
Operator string `db:"operator"`
Status int64 `db:"status"`
Remark sql.NullString `db:"remark"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
}
)
func newPurPurchaseOrderModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultPurPurchaseOrderModel {
return &defaultPurPurchaseOrderModel{
CachedConn: sqlc.NewConn(conn, c, opts...),
table: "`pur_purchase_order`",
}
}
func (m *defaultPurPurchaseOrderModel) Delete(ctx context.Context, id int64) error {
data, err := m.FindOne(ctx, id)
if err != nil {
return err
}
purPurchaseOrderIdKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderIdPrefix, id)
purPurchaseOrderOrderIdKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderOrderIdPrefix, data.OrderId)
purPurchaseOrderOrderNoKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderOrderNoPrefix, data.OrderNo)
_, 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)
}, purPurchaseOrderIdKey, purPurchaseOrderOrderIdKey, purPurchaseOrderOrderNoKey)
return err
}
func (m *defaultPurPurchaseOrderModel) FindOne(ctx context.Context, id int64) (*PurPurchaseOrder, error) {
purPurchaseOrderIdKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderIdPrefix, id)
var resp PurPurchaseOrder
err := m.QueryRowCtx(ctx, &resp, purPurchaseOrderIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", purPurchaseOrderRows, 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 *defaultPurPurchaseOrderModel) FindOneByOrderId(ctx context.Context, orderId string) (*PurPurchaseOrder, error) {
purPurchaseOrderOrderIdKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderOrderIdPrefix, orderId)
var resp PurPurchaseOrder
err := m.QueryRowIndexCtx(ctx, &resp, purPurchaseOrderOrderIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) {
query := fmt.Sprintf("select %s from %s where `order_id` = ? limit 1", purPurchaseOrderRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, orderId); 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 *defaultPurPurchaseOrderModel) FindOneByOrderNo(ctx context.Context, orderNo string) (*PurPurchaseOrder, error) {
purPurchaseOrderOrderNoKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderOrderNoPrefix, orderNo)
var resp PurPurchaseOrder
err := m.QueryRowIndexCtx(ctx, &resp, purPurchaseOrderOrderNoKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) {
query := fmt.Sprintf("select %s from %s where `order_no` = ? limit 1", purPurchaseOrderRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, orderNo); 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 *defaultPurPurchaseOrderModel) Insert(ctx context.Context, data *PurPurchaseOrder) (sql.Result, error) {
purPurchaseOrderIdKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderIdPrefix, data.Id)
purPurchaseOrderOrderIdKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderOrderIdPrefix, data.OrderId)
purPurchaseOrderOrderNoKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderOrderNoPrefix, data.OrderNo)
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, purPurchaseOrderRowsExpectAutoSet)
return conn.ExecCtx(ctx, query,
data.OrderId, data.TenantId, data.OrderNo, data.SupplierId, data.OrderDate,
data.ContractAmount, data.ReceivedQty, data.PaidAmount, data.PaymentStatus, data.ReceiptStatus,
data.PurchaseBy, data.Creator, data.Operator, data.Status, data.Remark)
}, purPurchaseOrderIdKey, purPurchaseOrderOrderIdKey, purPurchaseOrderOrderNoKey)
return ret, err
}
func (m *defaultPurPurchaseOrderModel) Update(ctx context.Context, newData *PurPurchaseOrder) error {
data, err := m.FindOne(ctx, newData.Id)
if err != nil {
return err
}
purPurchaseOrderIdKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderIdPrefix, data.Id)
purPurchaseOrderOrderIdKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderOrderIdPrefix, data.OrderId)
purPurchaseOrderOrderNoKey := fmt.Sprintf("%s%v", cachePurPurchaseOrderOrderNoPrefix, data.OrderNo)
_, 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, purPurchaseOrderRowsWithPlaceHolder)
return conn.ExecCtx(ctx, query,
newData.OrderId, newData.TenantId, newData.OrderNo, newData.SupplierId, newData.OrderDate,
newData.ContractAmount, newData.ReceivedQty, newData.PaidAmount, newData.PaymentStatus, newData.ReceiptStatus,
newData.PurchaseBy, newData.Creator, newData.Operator, newData.Status, newData.Remark, newData.Id)
}, purPurchaseOrderIdKey, purPurchaseOrderOrderIdKey, purPurchaseOrderOrderNoKey)
return err
}
func (m *defaultPurPurchaseOrderModel) formatPrimary(primary any) string {
return fmt.Sprintf("%s%v", cachePurPurchaseOrderIdPrefix, primary)
}
func (m *defaultPurPurchaseOrderModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", purPurchaseOrderRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary)
}
func (m *defaultPurPurchaseOrderModel) tableName() string {
return m.table
}