promodel

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 26, 2023 License: GPL-2.0 Imports: 2 Imported by: 0

README

PMD

产品模型

ISO 9001 2015版: goods和service替换了product.

goods指的是有形的货物,service 指的是服务性的商品。

在系统中用Product代替货品,服务作为虚拟货品, 用Item代表商品

产品只有供货商,商品有供货商和店铺编号

改造:

item -> product
goods -> item

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEmptyAttrArray = domain.NewError(
		"err_empty_attr_array", "模型至少包含一个属性")
	ErrEmptySpecArray = domain.NewError(
		"err_empty_spec_array", "模型至少包含一个规格")
	ErrEmptyBrandArray = domain.NewError(
		"err_empty_brand_array", "模型至少包含一个品牌")
	ErrExistsBrand = domain.NewError(
		"err_exists_brand", "已存在相同名称的品牌")
	ErrModelIsUsed = domain.NewError(
		"err_product_model_is_used", "模型已被分类\"%s\"使用")
)

Functions

This section is empty.

Types

type Attr

type Attr struct {
	// 编号
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 产品模型
	ModelId int `db:"prod_model"`
	// 属性名称
	Name string `db:"name"`
	// 是否作为筛选条件
	IsFilter int `db:"is_filter"`
	// 是否多选
	MultiCheck int `db:"multi_check"`
	// 属性项值
	ItemValues string `db:"item_values"`
	// 排列序号
	SortNum int `db:"sort_num"`
	// 属性项
	Items []*AttrItem `db:"-"`
}

属性

type AttrItem

type AttrItem struct {
	// 编号
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 属性编号
	AttrId int `db:"attr_id"`
	// 产品模型
	ModelId int `db:"prod_model"`
	// 属性值
	Value string `db:"value"`
	// 排列序号
	SortNum int `db:"sort_num"`
}

属性项

type IAttrService

type IAttrService interface {
	// 获取属性
	GetAttr(attrId int) *Attr
	// 保存属性
	SaveAttr(*Attr) (int, error)
	// 保存属性项
	SaveItem(*AttrItem) (int, error)
	// 删除属性
	DeleteAttr(attrId int) error
	// 删除属性项
	DeleteItem(itemId int) error
	// 获取属性的属性项
	GetItems(attrId int) []*AttrItem
	// 获取产品模型的属性
	GetModelAttrs(proModel int) []*Attr
}

属性服务

type IBrandService

type IBrandService interface {
	// 获取品牌
	Get(brandId int) *ProductBrand
	// 保存品牌
	SaveBrand(*ProductBrand) (int, error)
	// 删除品牌
	DeleteBrand(id int) error
	// 获取所有(已审核的)品牌
	AllBrands() []*ProductBrand
	// 获取关联的品牌编号
	Brands(proModel int) []*ProductBrand
}

品牌服务

type IProductModel

type IProductModel interface {
	// 获取聚合根编号
	GetAggregateRootId() int
	// 获取值
	Value() *ProductModel
	// 是否启用
	SetValue(model *ProductModel) error
	// 获取属性
	Attrs() []*Attr
	// 获取规格
	Specs() []*Spec
	// 设置属性
	SetAttrs([]*Attr) error
	// 设置规格
	SetSpecs([]*Spec) error
	// 获取关联的品牌编号
	Brands() []*ProductBrand
	// 设置关联品牌
	SetBrands(brandId []int) error
	// 保存
	Save() (int, error)
	// 删除模型
	Destroy() error
}

产品模型

type IProductModelRepo

type IProductModelRepo interface {
	// 创建商品模型
	CreateModel(v *ProductModel) IProductModel
	// 获取商品模型
	GetModel(id int) IProductModel

	// 属性服务
	AttrService() IAttrService
	// 规格服务
	SpecService() ISpecService

	//获取品牌服务
	BrandService() IBrandService
	// 获取模型的商品品牌
	GetModelBrands(proModel int) []*ProductBrand

	// 检查模块是否关联分类
	CheckModelIsUsed(modelId int) (bool, string)

	// Select ProductModel
	SelectProModel(where string, v ...interface{}) []*ProductModel
	// Save ProductModel
	SaveProModel(v *ProductModel) (int, error)
	// Delete ProductModel
	DeleteProModel(primary interface{}) error

	// Get Attr
	GetAttr(primary interface{}) *Attr
	// Select Attr
	SelectAttr(where string, v ...interface{}) []*Attr
	// Save Attr
	SaveAttr(v *Attr) (int, error)
	// Delete Attr
	DeleteAttr(primary interface{}) error
	// Batch Delete Attr
	BatchDeleteAttr(where string, v ...interface{}) (int64, error)

	// Get AttrItem
	GetAttrItem(primary interface{}) *AttrItem
	// Select AttrItem
	SelectAttrItem(where string, v ...interface{}) []*AttrItem
	// Save AttrItem
	SaveAttrItem(v *AttrItem) (int, error)
	// Delete AttrItem
	DeleteAttrItem(primary interface{}) error
	// Batch Delete AttrItem
	BatchDeleteAttrItem(where string, v ...interface{}) (int64, error)

	// Get Spec
	GetSpec(primary interface{}) *Spec
	// Select Spec
	SelectSpec(where string, v ...interface{}) []*Spec
	// Save Spec
	SaveSpec(v *Spec) (int, error)
	// Delete Spec
	DeleteSpec(primary interface{}) error
	// Batch Delete Spec
	BatchDeleteSpec(where string, v ...interface{}) (int64, error)

	// Get SpecItem
	GetSpecItem(primary interface{}) *SpecItem
	// Select SpecItem
	SelectSpecItem(where string, v ...interface{}) []*SpecItem
	// Save SpecItem
	SaveSpecItem(v *SpecItem) (int, error)
	// Delete SpecItem
	DeleteSpecItem(primary interface{}) error
	// Batch Delete SpecItem
	BatchDeleteSpecItem(where string, v ...interface{}) (int64, error)

	// Get ProductBrand
	GetProBrand(primary interface{}) *ProductBrand
	// Save ProductBrand
	SaveProBrand(v *ProductBrand) (int, error)
	// Delete ProductBrand
	DeleteProBrand(primary interface{}) error
	// Select ProductBrand
	SelectProBrand(where string, v ...interface{}) []*ProductBrand
	// IsExistsBrand 是否存在相同名称的品牌
	IsExistsBrand(name string, id int) bool

	// Batch Delete ProductBrand
	BatchDeleteProBrand(where string, v ...interface{}) (int64, error)

	// Get ProModelBrand
	GetProModelBrand(primary interface{}) *ProModelBrand
	// Save ProModelBrand
	SaveProModelBrand(v *ProModelBrand) (int, error)
	// Delete ProModelBrand
	DeleteProModelBrand(primary interface{}) error
	// Select ProModelBrand
	SelectProModelBrand(where string, v ...interface{}) []*ProModelBrand
	// Batch Delete ProModelBrand
	BatchDeleteProModelBrand(where string, v ...interface{}) (int64, error)
}

type ISpecService

type ISpecService interface {
	// 获取规格
	GetSpec(specId int) *Spec
	// 保存规格
	SaveSpec(*Spec) (int, error)
	// 保存规格项
	SaveItem(*SpecItem) (int, error)
	// 删除规格
	DeleteSpec(specId int) error
	// 删除规格项
	DeleteItem(itemId int) error
	// 获取规格的规格项
	GetItems(specId int) SpecItemList
	// 获取产品模型的规格
	GetModelSpecs(proModel int) SpecList
}

规格服务

type ProModelBrand

type ProModelBrand struct {
	// 关联编号
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 品牌编号
	BrandId int `db:"brand_id"`
	// 模型编号
	ModelId int `db:"prod_model"`
}

产品模型与品牌关联

type ProductBrand

type ProductBrand struct {
	// 编号
	Id int32 `db:"id" pk:"yes" auto:"yes"`
	// 品牌名称
	Name string `db:"name"`
	// 品牌图片
	Image string `db:"image"`
	// 品牌网址
	SiteUrl string `db:"site_url"`
	// 介绍
	Introduce string `db:"introduce"`
	// 是否审核
	ReviewState int32 `db:"review_state"`
	// 审核意见
	ReviewRemark string `db:"review_remark"`
	// 是否启用
	Enabled int `db:"enabled"`
	// 加入时间
	CreateTime int64 `db:"create_time"`
}

产品品牌

type ProductModel

type ProductModel struct {
	// 编号
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 名称
	Name string `db:"name"`
	// 是否启用
	Enabled int `db:"enabled"`
	// 属性字符
	AttrStr string `db:"attr_str"`
	// 规格字符
	SpecStr string `db:"spec_str"`
	// 属性
	Attrs []*Attr `db:"-"`
	// 规格
	Specs []*Spec `db:"-"`
	// 关联品牌
	BrandArray []int `db:"-"`
}

type Spec

type Spec struct {
	// 编号
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 产品模型
	ModelId int `db:"prod_model"`
	// 规格名称
	Name string `db:"name"`
	// 规格项值
	ItemValues string `db:"item_values"`
	// 排列序号
	SortNum int `db:"sort_num"`
	// 规格项
	Items SpecItemList `db:"-"`
}

规格

type SpecItem

type SpecItem struct {
	// 编号
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 规格编号
	SpecId int `db:"spec_id"`
	// 产品模型(冗余)
	ModelId int `db:"prod_model"`
	// 规格项值
	Value string `db:"value"`
	// 规格项颜色
	Color string `db:"color"`
	// 排列序号
	SortNum int `db:"sort_num"`
}

规格项

type SpecItemList

type SpecItemList []*SpecItem

func (SpecItemList) Len

func (s SpecItemList) Len() int

func (SpecItemList) Less

func (s SpecItemList) Less(i, j int) bool

Less reports whether the element with index i should sort before the element with index j.

func (SpecItemList) Swap

func (s SpecItemList) Swap(i, j int)

Swap swaps the elements with indexes i and j.

type SpecList

type SpecList []*Spec

func (SpecList) Len

func (s SpecList) Len() int

func (SpecList) Less

func (s SpecList) Less(i, j int) bool

Less reports whether the element with index i should sort before the element with index j.

func (SpecList) Swap

func (s SpecList) Swap(i, j int)

Swap swaps the elements with indexes i and j.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL