This commit is contained in:
李子铭 2025-03-03 18:28:19 +08:00
parent 5d875ea1b0
commit 1d61bd84f4
5 changed files with 99 additions and 0 deletions

View File

@ -0,0 +1,17 @@
package bo
import "time"
// ProductBo 领域实体Bo结构字段和模型字段保持一致
type ProductBo struct {
ID int32
Name string
ProductNo string
BatchName string
BatchNo string
AppID string
MerchantNo string
Channel bool
CreateTime time.Time
UpdateTime time.Time
}

View File

@ -0,0 +1,10 @@
package repo
import (
"context"
"voucher/internal/biz/bo"
)
type ProductRepo interface {
GetByPNO(ctx context.Context, PNO string) (*bo.ProductBo, error)
}

View File

@ -0,0 +1,30 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package model
import (
"time"
)
const TableNameProduct = "product"
// Product mapped from table <product>
type Product struct {
ID int32 `gorm:"column:id;primaryKey;autoIncrement:true" json:"id"`
Name string `gorm:"column:name;not null;comment:商品名称" json:"name"` // 商品名称
ProductNo string `gorm:"column:product_no;not null;comment:商品编号" json:"product_no"` // 商品编号
BatchName string `gorm:"column:batch_name;not null;comment:批次名称" json:"batch_name"` // 批次名称
BatchNo string `gorm:"column:batch_no;not null;comment:立减金批次号" json:"batch_no"` // 立减金批次号
AppID string `gorm:"column:app_id;not null;comment:批次所属应用" json:"app_id"` // 批次所属应用
MerchantNo string `gorm:"column:merchant_no;not null;comment:商户号,创建批次的商户号" json:"merchant_no"` // 商户号,创建批次的商户号
Channel bool `gorm:"column:channel;not null;comment:1:微信 2:支付宝" json:"channel"` // 1:微信 2:支付宝
CreateTime time.Time `gorm:"column:create_time;not null" json:"create_time"`
UpdateTime time.Time `gorm:"column:update_time" json:"update_time"`
}
// TableName Product's table name
func (*Product) TableName() string {
return TableNameProduct
}

View File

@ -4,12 +4,14 @@ import (
"context"
"voucher/internal/biz/bo"
"voucher/internal/biz/repo"
"voucher/internal/data"
"voucher/internal/data/model"
)
// OrderWechatRepoImpl .
type OrderWechatRepoImpl struct {
Base[model.OrderWechat, bo.OrderWechatBo]
db *data.Db
}
// NewOrderWechatRepoImpl .

View File

@ -0,0 +1,40 @@
package repoimpl
import (
"context"
"gorm.io/gorm"
"voucher/internal/biz/bo"
"voucher/internal/biz/repo"
"voucher/internal/data"
"voucher/internal/data/model"
)
// ProductRepoImpl .
type ProductRepoImpl struct {
Base[model.Product, bo.ProductBo]
db *data.Db
}
// NewProductRepoImpl .
func NewProductRepoImpl() repo.ProductRepo {
return &ProductRepoImpl{}
}
func (p *ProductRepoImpl) DB(ctx context.Context) *gorm.DB {
return p.db.DB(ctx).Model(model.Product{})
}
func (r *ProductRepoImpl) GetByPNO(ctx context.Context, PNO string) (*bo.ProductBo, error) {
var item model.Product
tx := r.DB(ctx).Where(model.Product{ProductNo: PNO}).Find(&item)
if tx.Error != nil {
return nil, tx.Error
}
if tx.RowsAffected == 0 {
return nil, gorm.ErrRecordNotFound
}
return r.ToBo(&item), nil
}