From a988ba374345f0766809718ff38371b85f3e7d1c Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 21 Dec 2023 17:19:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=B3=BB=E7=BB=9F=E5=95=86?= =?UTF-8?q?=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/product.go | 46 ++++++-- api/dao/product.go | 78 ++++++++++++ api/dao/productPlatformAmount.go | 72 ++++++++++++ api/dto/Product.go | 111 ++++++++++++++++++ ...{PlatformProduct.go => ProductPlatform.go} | 0 api/model/product.go | 39 +++--- api/requests/product.go | 17 +++ api/router/router.go | 36 +++--- api/service/product.go | 28 ++++- 9 files changed, 376 insertions(+), 51 deletions(-) create mode 100644 api/dao/productPlatformAmount.go create mode 100644 api/dto/Product.go rename api/dto/{PlatformProduct.go => ProductPlatform.go} (100%) diff --git a/api/controller/product.go b/api/controller/product.go index 5713c4f..693f3ca 100644 --- a/api/controller/product.go +++ b/api/controller/product.go @@ -59,8 +59,8 @@ func (r *Product) GetPlatformProductPage(c *gin.Context) { responses.OkWithData(result, c) } -// GetPlatformProduct 平台商品详情 -func (r *Product) GetPlatformProduct(c *gin.Context) { +// GetProductPlatform 平台商品详情 +func (r *Product) GetProductPlatform(c *gin.Context) { id := c.Param("product_platform_id") if id == "" { responses.FailWithMessage("缺少参数", c) @@ -76,7 +76,7 @@ func (r *Product) GetPlatformProduct(c *gin.Context) { // 业务处理 productService := service.ProductService{} - getPlatformProductResponses, err := productService.GetPlatformProduct(productPlatformId) + getPlatformProductResponses, err := productService.GetProductPlatform(productPlatformId) if err != nil { responses.FailWithMessage(err.Error(), c) return @@ -85,10 +85,10 @@ func (r *Product) GetPlatformProduct(c *gin.Context) { responses.OkWithData(getPlatformProductResponses, c) } -// GetSystemProductPage 获取系统商品列表-分页 -func (r *Product) GetSystemProductPage(c *gin.Context) { +// GetProductPage 获取商品列表-分页 +func (r *Product) GetProductPage(c *gin.Context) { productRequest := requests.ProductRequest{} - req := productRequest.GetPlatformProductPage + req := productRequest.GetProductPage if err := c.ShouldBind(&req); err != nil { responses.FailWithMessage(err.Error(), c) return @@ -108,15 +108,15 @@ func (r *Product) GetSystemProductPage(c *gin.Context) { req.PageSize = 20 } - productPlatformDao := dao.ProductPlatformDao{} - productPlatform, total, err := productPlatformDao.GetPlatformProductPageSearch(req, req.Page, req.PageSize) + productDao := dao.ProductDao{} + product, total, err := productDao.GetProductPageSearch(req, req.Page, req.PageSize) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 - GetProductPlatformPageResponses := dto.GetProductPlatformListDto(productPlatform) + GetProductPageResponses := dto.GetProductListDto(product) if err != nil { responses.FailWithMessage(err.Error(), c) return @@ -126,6 +126,32 @@ func (r *Product) GetSystemProductPage(c *gin.Context) { result["page"] = req.Page result["page_size"] = req.PageSize result["total"] = total - result["data"] = GetProductPlatformPageResponses + result["data"] = GetProductPageResponses responses.OkWithData(result, c) } + +// GetProduct 商品详情 +func (r *Product) GetProduct(c *gin.Context) { + id := c.Param("product_id") + if id == "" { + responses.FailWithMessage("缺少参数", c) + return + } + + // 将 id 转换为 int64 类型 + productId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + responses.Fail(c) + return + } + + // 业务处理 + productService := service.ProductService{} + getPlatformProductResponses, err := productService.GetProduct(productId) + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + responses.OkWithData(getPlatformProductResponses, c) +} diff --git a/api/dao/product.go b/api/dao/product.go index bb089f4..205de1b 100644 --- a/api/dao/product.go +++ b/api/dao/product.go @@ -4,6 +4,7 @@ import ( "gorm.io/gorm" "gorm.io/gorm/clause" "hospital-admin-api/api/model" + "hospital-admin-api/api/requests" "hospital-admin-api/global" ) @@ -71,3 +72,80 @@ func (r *ProductDao) AddProduct(tx *gorm.DB, model *model.Product) (*model.Produ } return model, nil } + +// GetProductPageSearch 获取商品列表-分页 +func (r *ProductDao) GetProductPageSearch(req requests.GetProductPage, page, pageSize int) (m []*model.Product, total int64, err error) { + var totalRecords int64 + + // 构建查询条件 + query := global.Db.Model(&model.Product{}) + + // 库存表 + query = query.Preload("ProductPlatformAmount", func(db *gorm.DB) *gorm.DB { + return db.Select("amount_id", "product_platform_id", "product_platform_code", "stock") + }) + + // 商品名称 + if req.ProductName != "" { + query = query.Where("product_name LIKE ?", "%"+req.ProductName+"%") + } + + // 商品通用名 + if req.CommonName != "" { + query = query.Where("common_name LIKE ?", "%"+req.CommonName+"%") + } + + // 商品助记码 + if req.MnemonicCode != "" { + query = query.Where("mnemonic_code LIKE ?", "%"+req.MnemonicCode+"%") + } + + // 药品类型 + if req.ProductType != nil { + query = query.Where("product_type = ?", req.ProductType) + } + + // 平台商品id + if req.ProductPlatformId != "" { + query = query.Where("product_platform_id = ?", req.ProductPlatformId) + } + + // 处方平台编码 + if req.ProductPlatformCode != "" { + query = query.Where("product_platform_code LIKE ?", "%"+req.ProductPlatformCode+"%") + } + + // 药店编码 + if req.ProductPharmacyCode != "" { + query = query.Where("product_pharmacy_code LIKE ?", "%"+req.ProductPharmacyCode+"%") + } + + // 批准文号 + if req.LicenseNumber != "" { + query = query.Where("license_number LIKE ?", "%"+req.LicenseNumber+"%") + } + + // 生产厂家 + if req.Manufacturer != "" { + query = query.Where("manufacturer LIKE ?", "%"+req.Manufacturer+"%") + } + + // 商品备注 + if req.ProductRemarks != "" { + query = query.Where("product_remarks LIKE ?", "%"+req.ProductRemarks+"%") + } + + // 排序 + query = query.Order("created_at desc") + + // 查询总数量 + if err := query.Count(&totalRecords).Error; err != nil { + return nil, 0, err + } + + err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error + if err != nil { + return nil, 0, err + } + return m, totalRecords, nil +} diff --git a/api/dao/productPlatformAmount.go b/api/dao/productPlatformAmount.go new file mode 100644 index 0000000..0310aee --- /dev/null +++ b/api/dao/productPlatformAmount.go @@ -0,0 +1,72 @@ +package dao + +import ( + "gorm.io/gorm" + "hospital-admin-api/api/model" + "hospital-admin-api/global" +) + +type ProductPlatformAmountDao struct { +} + +// GetProductPlatformAmountById 获取商品库存数据-商品库存id +func (r *ProductPlatformAmountDao) GetProductPlatformAmountById(amountId int64) (m *model.ProductPlatformAmount, err error) { + err = global.Db.First(&m, amountId).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetProductPlatformAmountByProductPlatformId 获取商品库存数据-平台商品id +func (r *ProductPlatformAmountDao) GetProductPlatformAmountByProductPlatformId(productPlatformId int64) (m *model.ProductPlatformAmount, err error) { + err = global.Db.Where("product_platform_id = ?", productPlatformId).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// DeleteProductPlatformAmount 删除商品库存 +func (r *ProductPlatformAmountDao) DeleteProductPlatformAmount(tx *gorm.DB, maps interface{}) error { + err := tx.Where(maps).Delete(&model.ProductPlatformAmount{}).Error + if err != nil { + return err + } + return nil +} + +// EditProductPlatformAmount 修改商品库存 +func (r *ProductPlatformAmountDao) EditProductPlatformAmount(tx *gorm.DB, maps interface{}, data interface{}) error { + err := tx.Model(&model.ProductPlatformAmount{}).Where(maps).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// EditProductPlatformAmountByUserId 修改商品库存-商品库存id +func (r *ProductPlatformAmountDao) EditProductPlatformAmountByUserId(tx *gorm.DB, amountId int64, data interface{}) error { + err := tx.Model(&model.ProductPlatformAmount{}).Where("amount_id = ?", amountId).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// GetProductPlatformAmountList 获取商品库存列表 +func (r *ProductPlatformAmountDao) GetProductPlatformAmountList(maps interface{}) (m []*model.ProductPlatformAmount, err error) { + err = global.Db.Where(maps).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// AddProductPlatformAmount 新增商品K库存 +func (r *ProductPlatformAmountDao) AddProductPlatformAmount(tx *gorm.DB, model *model.ProductPlatformAmount) (*model.ProductPlatformAmount, error) { + if err := tx.Create(model).Error; err != nil { + return nil, err + } + return model, nil +} diff --git a/api/dto/Product.go b/api/dto/Product.go new file mode 100644 index 0000000..014be80 --- /dev/null +++ b/api/dto/Product.go @@ -0,0 +1,111 @@ +package dto + +import ( + "fmt" + "hospital-admin-api/api/model" + "hospital-admin-api/utils" +) + +type ProductDto struct { + ProductId string `json:"product_id"` // 主键id + ProductPlatformId string `json:"product_platform_id"` // 处方平台商品id + ProductName string `json:"product_name"` // 商品名称 + CommonName string `json:"common_name"` // 商品通用名 + ProductPrice float64 `json:"product_price"` // 商品价格 + MnemonicCode string `json:"mnemonic_code"` // 商品助记码(首字母简拼) + ProductType int `json:"product_type"` // 药品类型(0:未知 1:中成药 2:西药) + ProductPlatformCode string `json:"product_platform_code"` // 处方平台商品编码 + ProductPharmacyCode string `json:"product_pharmacy_code"` // 第三方药店商品编码 + ProductCoverImg string `json:"product_cover_img"` // 商品封面图 + ProductSpec string `json:"product_spec"` // 商品规格 + LicenseNumber string `json:"license_number"` // 批准文号 + Manufacturer string `json:"manufacturer"` // 生产厂家 + SingleUnit string `json:"single_unit"` // 单次剂量(例:1次1包) + SingleUse string `json:"single_use"` // 单次用法(例:口服) + PackagingUnit string `json:"packaging_unit"` // 基本包装单位(例:盒/瓶) + FrequencyUse string `json:"frequency_use"` // 使用频率(例:1天3次) + AvailableDays float64 `json:"available_days"` // 可用天数(3) + ProductRemarks string `json:"product_remarks"` // 商品备注 + CreatedAt model.LocalTime `json:"created_at"` // 创建时间 + UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 + Stock uint `json:"stock"` // 现有库存 +} + +// GetProductDto 商品详情 +func GetProductDto(m *model.Product) *ProductDto { + return &ProductDto{ + ProductId: fmt.Sprintf("%d", m.ProductId), + ProductPlatformId: fmt.Sprintf("%d", m.ProductPlatformId), + ProductName: m.ProductName, + CommonName: m.ProductName, + ProductPrice: m.ProductPrice, + MnemonicCode: m.MnemonicCode, + ProductType: m.ProductType, + ProductPlatformCode: m.ProductPlatformCode, + ProductPharmacyCode: m.ProductPharmacyCode, + ProductCoverImg: utils.AddOssDomain(m.ProductCoverImg), + ProductSpec: m.ProductSpec, + LicenseNumber: m.LicenseNumber, + Manufacturer: m.Manufacturer, + SingleUnit: m.SingleUnit, + SingleUse: m.SingleUse, + PackagingUnit: m.PackagingUnit, + FrequencyUse: m.FrequencyUse, + AvailableDays: m.AvailableDays, + ProductRemarks: m.ProductRemarks, + CreatedAt: m.CreatedAt, + UpdatedAt: m.UpdatedAt, + } +} + +// GetProductListDto 商品列表 +func GetProductListDto(m []*model.Product) []*ProductDto { + // 处理返回值 + responses := make([]*ProductDto, len(m)) + + if len(m) > 0 { + for i, v := range m { + response := &ProductDto{ + ProductId: fmt.Sprintf("%d", v.ProductId), + ProductPlatformId: fmt.Sprintf("%d", v.ProductPlatformId), + ProductName: v.ProductName, + CommonName: v.ProductName, + ProductPrice: v.ProductPrice, + MnemonicCode: v.MnemonicCode, + ProductType: v.ProductType, + ProductPlatformCode: v.ProductPlatformCode, + ProductPharmacyCode: v.ProductPharmacyCode, + ProductCoverImg: utils.AddOssDomain(v.ProductCoverImg), + ProductSpec: v.ProductSpec, + LicenseNumber: v.LicenseNumber, + Manufacturer: v.Manufacturer, + SingleUnit: v.SingleUnit, + SingleUse: v.SingleUse, + PackagingUnit: v.PackagingUnit, + FrequencyUse: v.FrequencyUse, + AvailableDays: v.AvailableDays, + ProductRemarks: v.ProductRemarks, + CreatedAt: v.CreatedAt, + UpdatedAt: v.UpdatedAt, + } + + // 加载商品库存 + if v.ProductPlatformAmount != nil { + response = response.LoadProductAmount(v.ProductPlatformAmount) + } + + // 将转换后的结构体添加到新切片中 + responses[i] = response + } + } + + return responses +} + +// LoadProductAmount 加载商品库存 +func (r *ProductDto) LoadProductAmount(m *model.ProductPlatformAmount) *ProductDto { + if m != nil { + r.Stock = m.Stock + } + return r +} diff --git a/api/dto/PlatformProduct.go b/api/dto/ProductPlatform.go similarity index 100% rename from api/dto/PlatformProduct.go rename to api/dto/ProductPlatform.go diff --git a/api/model/product.go b/api/model/product.go index 05e681e..6c2a96a 100644 --- a/api/model/product.go +++ b/api/model/product.go @@ -8,25 +8,26 @@ import ( // Product 商品表 type Product struct { - ProductId int64 `gorm:"column:product_id;type:bigint(19);primary_key;comment:主键id" json:"product_id"` - ProductPlatformId int64 `gorm:"column:product_platform_id;type:bigint(19);comment:处方平台商品id" json:"product_platform_id"` - ProductName string `gorm:"column:product_name;type:varchar(255);comment:商品名称" json:"product_name"` - CommonName string `gorm:"column:common_name;type:varchar(100);comment:商品通用名" json:"common_name"` - ProductPrice float64 `gorm:"column:product_price;type:decimal(10,2);comment:商品价格" json:"product_price"` - MnemonicCode string `gorm:"column:mnemonic_code;type:varchar(50);comment:商品助记码(首字母简拼)" json:"mnemonic_code"` - ProductType int `gorm:"column:product_type;type:tinyint(4);default:1;comment:药品类型(0:未知 1:中成药 2:西药)" json:"product_type"` - ProductPlatformCode string `gorm:"column:product_platform_code;type:varchar(100);comment:处方平台商品编码" json:"product_platform_code"` - ProductPharmacyCode string `gorm:"column:product_pharmacy_code;type:varchar(100);comment:第三方药店商品编码" json:"product_pharmacy_code"` - ProductCoverImg string `gorm:"column:product_cover_img;type:varchar(255);comment:商品封面图" json:"product_cover_img"` - ProductSpec string `gorm:"column:product_spec;type:varchar(255);comment:商品规格" json:"product_spec"` - LicenseNumber string `gorm:"column:license_number;type:varchar(30);comment:批准文号" json:"license_number"` - Manufacturer string `gorm:"column:manufacturer;type:varchar(255);comment:生产厂家" json:"manufacturer"` - SingleUnit string `gorm:"column:single_unit;type:varchar(50);comment:单次剂量(例:1次1包)" json:"single_unit"` - SingleUse string `gorm:"column:single_use;type:varchar(50);comment:单次用法(例:口服)" json:"single_use"` - PackagingUnit string `gorm:"column:packaging_unit;type:varchar(20);comment:基本包装单位(例:盒/瓶)" json:"packaging_unit"` - FrequencyUse string `gorm:"column:frequency_use;type:varchar(50);comment:使用频率(例:1天3次)" json:"frequency_use"` - AvailableDays float64 `gorm:"column:available_days;type:float(10,2);comment:可用天数(3)" json:"available_days"` - ProductRemarks string `gorm:"column:product_remarks;type:varchar(255);comment:商品备注" json:"product_remarks"` + ProductId int64 `gorm:"column:product_id;type:bigint(19);primary_key;comment:主键id" json:"product_id"` + ProductPlatformId int64 `gorm:"column:product_platform_id;type:bigint(19);comment:处方平台商品id" json:"product_platform_id"` + ProductName string `gorm:"column:product_name;type:varchar(255);comment:商品名称" json:"product_name"` + CommonName string `gorm:"column:common_name;type:varchar(100);comment:商品通用名" json:"common_name"` + ProductPrice float64 `gorm:"column:product_price;type:decimal(10,2);comment:商品价格" json:"product_price"` + MnemonicCode string `gorm:"column:mnemonic_code;type:varchar(50);comment:商品助记码(首字母简拼)" json:"mnemonic_code"` + ProductType int `gorm:"column:product_type;type:tinyint(4);default:1;comment:药品类型(0:未知 1:中成药 2:西药)" json:"product_type"` + ProductPlatformCode string `gorm:"column:product_platform_code;type:varchar(100);comment:处方平台商品编码" json:"product_platform_code"` + ProductPharmacyCode string `gorm:"column:product_pharmacy_code;type:varchar(100);comment:第三方药店商品编码" json:"product_pharmacy_code"` + ProductCoverImg string `gorm:"column:product_cover_img;type:varchar(255);comment:商品封面图" json:"product_cover_img"` + ProductSpec string `gorm:"column:product_spec;type:varchar(255);comment:商品规格" json:"product_spec"` + LicenseNumber string `gorm:"column:license_number;type:varchar(30);comment:批准文号" json:"license_number"` + Manufacturer string `gorm:"column:manufacturer;type:varchar(255);comment:生产厂家" json:"manufacturer"` + SingleUnit string `gorm:"column:single_unit;type:varchar(50);comment:单次剂量(例:1次1包)" json:"single_unit"` + SingleUse string `gorm:"column:single_use;type:varchar(50);comment:单次用法(例:口服)" json:"single_use"` + PackagingUnit string `gorm:"column:packaging_unit;type:varchar(20);comment:基本包装单位(例:盒/瓶)" json:"packaging_unit"` + FrequencyUse string `gorm:"column:frequency_use;type:varchar(50);comment:使用频率(例:1天3次)" json:"frequency_use"` + AvailableDays float64 `gorm:"column:available_days;type:float(10,2);comment:可用天数(3)" json:"available_days"` + ProductRemarks string `gorm:"column:product_remarks;type:varchar(255);comment:商品备注" json:"product_remarks"` + ProductPlatformAmount *ProductPlatformAmount `gorm:"foreignKey:ProductPlatformId;references:product_platform_id" json:"product_platform_amount"` // 库存 Model } diff --git a/api/requests/product.go b/api/requests/product.go index f84287b..bb28705 100644 --- a/api/requests/product.go +++ b/api/requests/product.go @@ -2,6 +2,7 @@ package requests type ProductRequest struct { GetPlatformProductPage // 获取平台商品列表-分页 + GetProductPage // 获取系统商品列表-分页 } // GetPlatformProductPage 获取平台商品列表-分页 @@ -15,3 +16,19 @@ type GetPlatformProductPage struct { LicenseNumber string `json:"license_number" form:"license_number" label:"批准文号"` // 批准文号 Manufacturer string `json:"manufacturer" form:"manufacturer" label:"生产厂家"` // 生产厂家 } + +// GetProductPage 获取系统商品列表-分页 +type GetProductPage struct { + Page int `json:"page" form:"page" label:"页码"` + PageSize int `json:"page_size" form:"page_size" label:"每页个数"` + ProductName string `json:"product_name" form:"product_name" label:"商品名称"` // 商品名称 + CommonName string `json:"common_name" form:"common_name" label:"商品通用名"` // 商品通用名 + MnemonicCode string `json:"mnemonic_code" form:"mnemonic_code" label:"商品助记码"` // 商品助记码(首字母简拼) + ProductType *int `json:"product_type" form:"product_type" label:"药品类型"` // 药品类型(0:未知 1:中成药 2:西药) + ProductPlatformId string `json:"product_platform_id" form:"product_platform_id" label:"平台商品id"` // 处方平台商品id + ProductPlatformCode string `json:"product_platform_code" form:"product_platform_code" label:"处方平台编码"` // 处方平台商品编码 + ProductPharmacyCode string `json:"product_pharmacy_code" form:"product_pharmacy_code" label:"药店编码"` // 第三方药店商品编码 + LicenseNumber string `json:"license_number" form:"license_number" label:"批准文号"` // 批准文号 + Manufacturer string `json:"manufacturer" form:"manufacturer" label:"生产厂家"` // 生产厂家 + ProductRemarks string `json:"product_remarks" form:"product_remarks" label:"商品备注"` // 商品备注 +} diff --git a/api/router/router.go b/api/router/router.go index 11ff77e..4e7ff79 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -655,6 +655,21 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 商品管理 productGroup := adminGroup.Group("/product") { + // 获取系统商品列表-分页 + productGroup.GET("", api.Product.GetProductPage) + + // 系统商品详情 + productGroup.GET("/:product_id", api.Product.GetProduct) + + // 新增系统商品 + productGroup.POST("", api.Dept.AddDept) + + // 删除系统商品 + productGroup.DELETE("", api.Dept.DeleteDept) + + // 修改系统商品 + productGroup.PUT("/:product_id", api.Dept.PutDept) + // 平台商品 platformGroup := productGroup.Group("/platform") { @@ -662,26 +677,7 @@ func privateRouter(r *gin.Engine, api controller.Api) { platformGroup.GET("", api.Product.GetPlatformProductPage) // 平台商品详情 - platformGroup.GET("/:product_platform_id", api.Product.GetPlatformProduct) - } - - // 系统商品 - systemGroup := productGroup.Group("/system") - { - // 获取系统商品列表-分页 - systemGroup.GET("", api.Product.GetSystemProductPage) - - // 系统商品详情 - systemGroup.GET("/:product_id", api.OrderProduct.GetOrderProduct) - - // 新增系统商品 - systemGroup.POST("", api.Dept.AddDept) - - // 删除系统商品 - systemGroup.DELETE("", api.Dept.DeleteDept) - - // 修改系统商品 - systemGroup.PUT("/:product_id", api.Dept.PutDept) + platformGroup.GET("/:product_platform_id", api.Product.GetProductPlatform) } } } diff --git a/api/service/product.go b/api/service/product.go index 10775d8..e3200eb 100644 --- a/api/service/product.go +++ b/api/service/product.go @@ -9,8 +9,8 @@ import ( type ProductService struct { } -// GetPlatformProduct 平台商品详情 -func (r *ProductService) GetPlatformProduct(productPlatformId int64) (g *dto.ProductPlatformDto, err error) { +// GetProductPlatform 平台商品详情 +func (r *ProductService) GetProductPlatform(productPlatformId int64) (g *dto.ProductPlatformDto, err error) { // 获取平台商品数据 productPlatformDao := dao.ProductPlatformDao{} productPlatform, err := productPlatformDao.GetProductPlatformById(productPlatformId) @@ -23,3 +23,27 @@ func (r *ProductService) GetPlatformProduct(productPlatformId int64) (g *dto.Pro return g, nil } + +// GetProduct 商品详情 +func (r *ProductService) GetProduct(productId int64) (g *dto.ProductDto, err error) { + // 获取商品数据 + productDao := dao.ProductDao{} + product, err := productDao.GetProductById(productId) + if err != nil || product == nil { + return nil, errors.New(err.Error()) + } + + // 获取商品库存数据 + productPlatformAmountDao := dao.ProductPlatformAmountDao{} + productPlatformAmount, err := productPlatformAmountDao.GetProductPlatformAmountByProductPlatformId(product.ProductPlatformId) + + // 处理返回值 + g = dto.GetProductDto(product) + + if productPlatformAmount != nil { + // 加载库存 + g.LoadProductAmount(productPlatformAmount) + } + + return g, nil +}