diff --git a/model/pricing_tag.go b/model/pricing_tag.go new file mode 100644 index 0000000..611aefa --- /dev/null +++ b/model/pricing_tag.go @@ -0,0 +1,60 @@ +package model + +import ( + "github.com/QuantumNous/new-api/common" + "gorm.io/gorm" +) + +// PricingTag 定价标签表 +// 用于对渠道定价进行分类和标识 +type PricingTag struct { + Id int `json:"id" gorm:"primaryKey"` + Name string `json:"name" gorm:"size:64;not null;uniqueIndex"` + Color string `json:"color" gorm:"size:16;default:'#1890ff'"` + Description string `json:"description" gorm:"type:text"` + SortOrder int `json:"sort_order" gorm:"default:0"` + CreatedTime int64 `json:"created_time" gorm:"bigint"` + DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` +} + +func (pt *PricingTag) Insert() error { + pt.CreatedTime = common.GetTimestamp() + return DB.Create(pt).Error +} + +func (pt *PricingTag) Update() error { + return DB.Model(&PricingTag{}).Where("id = ?", pt.Id).Updates(map[string]interface{}{ + "name": pt.Name, + "color": pt.Color, + "description": pt.Description, + "sort_order": pt.SortOrder, + }).Error +} + +func (pt *PricingTag) Delete() error { + return DB.Delete(pt).Error +} + +func GetPricingTagById(id int) (*PricingTag, error) { + var pt PricingTag + err := DB.First(&pt, id).Error + if err != nil { + return nil, err + } + return &pt, nil +} + +func GetAllPricingTags() ([]*PricingTag, error) { + var list []*PricingTag + err := DB.Order("sort_order ASC, id ASC").Find(&list).Error + return list, err +} + +func GetPricingTagByName(name string) (*PricingTag, error) { + var pt PricingTag + err := DB.Where("name = ?", name).First(&pt).Error + if err != nil { + return nil, err + } + return &pt, nil +}