common/structs/v2/provider.go

124 lines
3.5 KiB
Go
Raw Normal View History

2024-08-03 14:12:44 +08:00
package v2
2024-08-05 17:21:58 +08:00
import (
"time"
)
2024-08-03 14:12:44 +08:00
2024-08-30 13:59:01 +08:00
type ProviderStatus int
const (
ProviderStatus_Normal = iota
// 正在拉取供应商商品信息
ProviderStatus_Pulling
2024-08-31 16:57:46 +08:00
// 正在计算价格
2024-09-03 14:51:12 +08:00
ProviderStatus_Calculating
2024-08-30 13:59:01 +08:00
// 出错
ProviderStatus_Error
)
2024-08-03 14:12:44 +08:00
type ProviderId string
2024-08-05 17:21:58 +08:00
type Provider struct {
2024-08-27 14:19:31 +08:00
ID uint `gorm:"primary_key" json:"id"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
2024-08-05 17:21:58 +08:00
ProviderId ProviderId `gorm:"unique" json:"providerId"`
// 供应商的名称
Name string `json:"name"`
2024-08-30 13:59:01 +08:00
// 供应商状态
Status ProviderStatus `json:"status"`
// 错误信息
Msg string `json:"msg"`
// 拉取时间
PullAt time.Time `json:"pullAt"`
2024-08-05 17:21:58 +08:00
// 供应商配置
Config ProviderOption `gorm:"type:json;serializer:json" json:"config"`
//计算过程
CalculateProcess []CalculateProcess `json:"calculateProcess" gorm:"polymorphicType:Kind;polymorphicId:OwnerID;polymorphicValue:provider"`
2024-08-23 18:12:31 +08:00
// 备注
Remark string `json:"remark,omitempty"`
2024-08-05 17:21:58 +08:00
}
type ProviderOption struct {
2024-08-23 18:12:31 +08:00
Ticker string `yaml:"ticker" json:"ticker"` //每天几点抓取
ExchangeRate float64 `yaml:"exchangeRate" json:"exchangeRate"` //汇率
Freight float64 `yaml:"freight" json:"freight"` //运费
2024-08-05 17:21:58 +08:00
}
2024-08-03 17:07:10 +08:00
2024-08-03 14:12:44 +08:00
// ProviderArticle 供应商商品信息
type ProviderArticle struct {
2024-09-09 17:18:36 +08:00
ID uint `gorm:"primary_key" json:"id"`
2024-08-03 14:12:44 +08:00
CreatedAt time.Time `json:"createdAt"`
2024-09-03 17:38:45 +08:00
UpdatedAt time.Time `json:"updatedAt"`
2024-08-03 14:12:44 +08:00
// 对应的商品ID
ArticleID uint
// 货号
2024-08-03 17:07:10 +08:00
Pid string `gorm:"index" json:"pid"`
2024-08-03 14:12:44 +08:00
// 品牌
2024-08-03 17:07:10 +08:00
Brand Brand `gorm:"index" json:"brand"`
2024-08-03 14:12:44 +08:00
// 供应商商品链接链接
Link string `json:"link"`
2024-11-29 15:45:38 +08:00
// 图片
Image string `json:"image"`
2024-08-03 14:12:44 +08:00
// 供应商id
ProviderId ProviderId `gorm:"index:providerId_sku,unique" json:"providerId"`
// 供应商的sku
SkuID string `gorm:"index:providerId_sku,unique" json:"skuID"`
// 当前成本价
Cost ProviderPrice `json:"cost" gorm:"type:json;serializer:json"`
2024-11-18 17:26:04 +08:00
// 库存数量
Ats int `json:"ats"`
// 监控库存
TraceAts *bool `json:"traceAts"`
// 能否购买
Available bool `json:"available"`
2024-11-29 15:45:38 +08:00
// 是否蹲货
Watch *bool `json:"watch"`
2024-11-18 17:41:25 +08:00
// 状态
Status ProviderStatus `json:"status"`
2024-08-31 12:39:40 +08:00
// 是否排除,如果排除,就不用拉取价格
Exclude bool `json:"exclude"`
2024-08-03 14:12:44 +08:00
// 历史成本价格
HistoryPrice []ProviderPrice `json:"historyPrice"`
// 历史库存
HistoryAts []ProviderAts `json:"historyAts"`
2024-08-05 17:21:58 +08:00
// 计算过程
CalculateProcess []CalculateProcess `json:"calculateProcess" gorm:"polymorphicType:Kind;polymorphicId:OwnerID;polymorphicValue:providerArticle"`
2024-08-03 14:12:44 +08:00
}
func (p *ProviderArticle) SetWatch(watch bool) *ProviderArticle {
p.Watch = &watch
return p
}
// 设置是否追踪库存
func (p *ProviderArticle) SetTraceAts(traceAts bool) *ProviderArticle {
p.TraceAts = &traceAts
return p
}
2024-08-03 14:12:44 +08:00
// ProviderPrice 供应商成本价格
type ProviderPrice struct {
2024-09-09 17:18:36 +08:00
ID uint `gorm:"primary_key" json:"id"`
2024-08-03 14:12:44 +08:00
CreatedAt time.Time `json:"createdAt"`
ProviderArticleID uint `gorm:"index"`
2024-09-01 14:16:21 +08:00
// 供应商原始价格,美元、人名币、加元
OriginalPrice float64 `json:"originalPrice"`
2024-08-03 14:12:44 +08:00
// 计算优惠后最终价格,人名币,单位为分
2024-09-01 14:16:21 +08:00
FinalPrice float64 `json:"finalPrice"` // 计算完优惠的最终的价格
CalMark string `json:"calMark"` //计算优惠的过程
2024-08-03 14:12:44 +08:00
}
// ProviderAts 供应商库存
type ProviderAts struct {
ID uint `gorm:"primary_key" json:"id"`
CreatedAt time.Time `json:"createdAt"`
ProviderArticleID uint `gorm:"index"`
// 供应商库存
Ats int `json:"ats"`
}