2024-07-25 09:22:18 +08:00

121 lines
5.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
ProductStatus int `json:"product_status"` // 商品状态1:正常 2:下架)
IsDelete int `json:"is_delete"` // 是否删除0:否 1:是)
PrescriptionNum int `json:"prescription_num"` // 处方可开具的数量
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),
ProductStatus: m.ProductStatus,
IsDelete: m.IsDelete,
PrescriptionNum: m.PrescriptionNum,
ProductName: m.ProductName,
CommonName: m.CommonName,
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),
ProductStatus: v.ProductStatus,
IsDelete: v.IsDelete,
PrescriptionNum: v.PrescriptionNum,
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
}