Files
zzw 72d55d396d
CI / changes (push) Successful in 36s
CI / docker-bff (push) Successful in 3m8s
CI / docker-product (push) Successful in 3m36s
CI / docker-admin (push) Successful in 3m35s
CI / docker-user (push) Successful in 9s
CI / docker-ad (push) Successful in 29s
CI / docker-chore (push) Failing after 4s
feat: product number
2026-08-26 16:53:50 +08:00

294 lines
14 KiB
Go
Raw Permalink 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 dao
import "time"
// 产品类型
const (
ProductTypeNormal = 1 // 普通产品
ProductFirstTry = 2 // 首次试用
ProductTry = 3 // 再次试用
ProductFirstTryName = "首次试用"
ProductTryName = "多次试用"
)
// 库存变更类型(服务间 Number 接口)
const (
NumberTypeAdd uint32 = 1 // 增加
NumberTypeSub uint32 = 2 // 减少
)
// 销售模式
const (
ProductSalesModelOffline = 1 // 线下
ProductSalesModelOnline = 2 // 线上
)
// 产品状态 / 审核状态(与老库约定一致)
const (
ProductStatusNormal uint8 = 1 // 正常
ProductStatusDisabled uint8 = 2 // 禁用
ProductStatusUnpublished uint8 = 3 // 未发布
VerifyStatusPass uint8 = 1 // 通过
VerifyStatusRefuse uint8 = 2 // 驳回
VerifyStatusChecking uint8 = 3 // 审核中
VerifyStatusSecond uint8 = 4 // 二审中
)
type Product struct {
Id int `gorm:"column:id;primaryKey;autoIncrement"`
Name string `gorm:"column:name;type:varchar(256);not null"`
Subhead string `gorm:"column:subhead;type:varchar(255)"`
SalesModel uint8 `gorm:"column:sales_model;type:tinyint(1);default:1"`
Content string `gorm:"column:content;type:text;not null"`
ModelCode string `gorm:"column:model_code;type:varchar(255)"`
Price float32 `gorm:"column:price;type:decimal(10,2);not null"`
StorePrice float32 `gorm:"column:store_price;type:decimal(10,2)"`
SalePrice float32 `gorm:"column:sale_price;type:decimal(10,2)"`
SharePrice float32 `gorm:"column:share_price;type:decimal(10,2)"`
Waybill string `gorm:"column:waybill;type:varchar(255)"`
AgentPrice float32 `gorm:"column:agent_price;type:decimal(10,2)"`
SaleReward string `gorm:"column:sale_reward;type:varchar(255)"`
Images string `gorm:"column:images;type:json;not null"`
Weight float32 `gorm:"column:weight;type:double"`
Cubage string `gorm:"column:cubage;type:varchar(255)"`
IsIndex uint8 `gorm:"column:is_index;type:tinyint(4);default:2"`
IndexImage string `gorm:"column:index_image;type:varchar(255)"`
Label string `gorm:"column:label;type:varchar(255)"`
PeriodValidity int16 `gorm:"column:period_validity;type:smallint(4)"`
PublishTime time.Time `gorm:"column:publish_time;type:datetime"`
Sort uint16 `gorm:"column:sort;type:smallint(6) unsigned"`
IsBuy uint8 `gorm:"column:is_buy;type:tinyint(1);default:2"`
Type uint8 `gorm:"column:type;type:tinyint(1);default:1;not null"`
NormsNumber uint8 `gorm:"column:norms_number;type:smallint(4);default:1;not null"`
BoxNumber float64 `gorm:"column:box_number;type:smallint(6) unsigned;default:0"`
Number uint `gorm:"column:number;type:int(10) unsigned;default:0;not null"`
TryNumber uint8 `gorm:"column:try_number;type:tinyint(2);default:1"`
Status uint8 `gorm:"column:status;type:tinyint(1);default:3;not null"`
VerifyStatus uint8 `gorm:"column:verify_status;type:tinyint(1);default:3"`
VerifyId int `gorm:"column:verify_id;type:int(11)"`
VerifyName string `gorm:"column:verify_name;type:varchar(50)"`
VerifySecondId int `gorm:"column:verify_second_id;type:int(11)"`
VerifySecondName string `gorm:"column:verify_second_name;type:varchar(255)"`
Reason string `gorm:"column:reason;type:varchar(255)"`
AdminName string `gorm:"column:admin_name;type:varchar(50);not null"`
AdminId int `gorm:"column:admin_id;type:int(11);not null"`
}
type Create struct {
Id int `gorm:"column:id;primaryKey;autoIncrement"`
Name string `gorm:"column:name"`
Subhead string `gorm:"column:subhead"`
SalesModel uint8 `gorm:"column:sales_model"`
Content string `gorm:"column:content"`
ModelCode string `gorm:"column:model_code"`
Price float32 `gorm:"column:price"`
StorePrice float32 `gorm:"column:store_price"`
SalePrice float32 `gorm:"column:sale_price"`
SharePrice float32 `gorm:"column:share_price"`
Waybill string `gorm:"column:waybill"`
AgentPrice float32 `gorm:"column:agent_price"`
SaleReward string `gorm:"column:sale_reward"`
Images string `gorm:"column:images"`
Weight float32 `gorm:"column:weight"`
Cubage string `gorm:"column:cubage"`
IsIndex uint8 `gorm:"column:is_index"`
IndexImage string `gorm:"column:index_image"`
Label string `gorm:"column:label"`
PeriodValidity int16 `gorm:"column:period_validity"`
PublishTime time.Time `gorm:"column:publish_time"`
Sort uint16 `gorm:"column:sort"`
IsBuy uint8 `gorm:"column:is_buy"`
Type uint8 `gorm:"column:type"`
NormsNumber uint8 `gorm:"column:norms_number"`
BoxNumber float64 `gorm:"column:box_number"`
Number uint `gorm:"column:number"`
TryNumber uint8 `gorm:"column:try_number"`
AdminName string `gorm:"column:admin_name"`
AdminId int `gorm:"column:admin_id"`
}
type CheckExist struct {
Id int `gorm:"column:id"`
Name string `gorm:"column:name"`
ModelCode string `gorm:"column:model_code"`
Status uint8 `gorm:"column:status"`
}
type NumberInfo struct {
Id int `gorm:"column:id"`
Number uint `gorm:"column:number"`
}
type VerifyContent struct {
Id int `json:"id"`
Name string `json:"name,omitempty"`
ModelCode string `json:"model_code"`
Price float32 `json:"price"`
StorePrice float32 `json:"store_price"`
SalePrice float32 `json:"sale_price"`
SharePrice float32 `json:"share_price"`
AgentPrice float32 `json:"agent_price"`
SaleReward string `json:"sale_reward"`
SalesModel uint8 `json:"sales_model,omitempty"`
Type uint8 `json:"type"`
NormsNumber uint8 `json:"norms_number"`
BoxNumber float64 `json:"box_number"`
AdminName string `json:"admin_name"`
AdminId int `json:"admin_id"`
IsIndex uint8 `json:"is_index,omitempty"`
IndexImage string `json:"index_image,omitempty"`
}
type EditBase struct {
Id int `gorm:"column:id;primaryKey" json:"id"`
Name string `gorm:"column:name" json:"name"`
Subhead string `gorm:"column:subhead" json:"subhead"`
Content string `gorm:"column:content" json:"content"`
Images string `gorm:"column:images" json:"images"`
Weight float32 `gorm:"column:weight" json:"weight"`
Cubage string `gorm:"column:cubage" json:"cubage"`
Waybill string `gorm:"column:waybill" json:"waybill"`
Label string `gorm:"column:label" json:"label"`
IsIndex uint8 `gorm:"column:is_index" json:"is_index"`
IndexImage string `gorm:"column:index_image" json:"index_image"`
PeriodValidity int16 `gorm:"column:period_validity" json:"period_validity"`
IsBuy uint8 `gorm:"column:is_buy" json:"is_buy"`
// Edit 经 json 序列化,time.Time 会变成 RFC3339MySQL datetime 不认,故用字符串
PublishTime string `gorm:"column:publish_time" json:"publish_time"`
AdminName string `gorm:"column:admin_name" json:"admin_name"`
AdminId int `gorm:"column:admin_id" json:"admin_id"`
}
// EditSusceptible 敏感字段(查询旧值 / 写入 verify 快照)
type EditSusceptible struct {
Id int `gorm:"column:id" json:"id"`
ModelCode string `gorm:"column:model_code" json:"model_code"`
Price float32 `gorm:"column:price" json:"price"`
StorePrice float32 `gorm:"column:store_price" json:"store_price"`
SalePrice float32 `gorm:"column:sale_price" json:"sale_price"`
SharePrice float32 `gorm:"column:share_price" json:"share_price"`
AgentPrice float32 `gorm:"column:agent_price" json:"agent_price"`
SaleReward string `gorm:"column:sale_reward" json:"sale_reward"`
BoxNumber float64 `gorm:"column:box_number" json:"box_number"`
Type uint8 `gorm:"column:type" json:"type"`
NormsNumber uint8 `gorm:"column:norms_number" json:"norms_number"`
AdminName string `gorm:"column:admin_name" json:"admin_name"`
AdminId int `gorm:"column:admin_id" json:"admin_id"`
}
// VerifyFirstEditStatus 敏感编辑提交后置为一审中(Edit 走 json→map,必须带 json tag
type VerifyFirstEditStatus struct {
VerifyStatus uint8 `gorm:"column:verify_status" json:"verify_status"`
}
// Info 列表/详情查询投影
type Info struct {
Id int `gorm:"column:id"`
Name string `gorm:"column:name"`
Subhead string `gorm:"column:subhead"`
Content string `gorm:"column:content"`
ModelCode string `gorm:"column:model_code"`
Price float32 `gorm:"column:price"`
StorePrice float32 `gorm:"column:store_price"`
SalePrice float32 `gorm:"column:sale_price"`
SharePrice float32 `gorm:"column:share_price"`
AgentPrice float32 `gorm:"column:agent_price"`
SaleReward string `gorm:"column:sale_reward"`
SalesModel uint8 `gorm:"column:sales_model"`
Waybill string `gorm:"column:waybill"`
Status uint8 `gorm:"column:status"`
Weight float32 `gorm:"column:weight"`
IsIndex uint8 `gorm:"column:is_index"`
IndexImage string `gorm:"column:index_image"`
Cubage string `gorm:"column:cubage"`
Label string `gorm:"column:label"`
Images string `gorm:"column:images"`
IsBuy uint8 `gorm:"column:is_buy"`
PeriodValidity int16 `gorm:"column:period_validity"`
PublishTime time.Time `gorm:"column:publish_time"`
Type uint8 `gorm:"column:type"`
NormsNumber uint8 `gorm:"column:norms_number"`
BoxNumber float64 `gorm:"column:box_number"`
Sort uint16 `gorm:"column:sort"`
Number uint `gorm:"column:number"`
VerifyStatus uint8 `gorm:"column:verify_status"`
VerifyId int `gorm:"column:verify_id"`
VerifyName string `gorm:"column:verify_name"`
VerifySecondId int `gorm:"column:verify_second_id"`
VerifySecondName string `gorm:"column:verify_second_name"`
Reason string `gorm:"column:reason"`
AdminName string `gorm:"column:admin_name"`
Edit uint8 `gorm:"-"`
}
type Names struct {
Id int `gorm:"column:id"`
Name string `gorm:"column:name"`
}
type StatusUpdate struct {
Status uint8 `gorm:"column:status" json:"status"`
Reason string `gorm:"column:reason" json:"reason"`
AdminName string `gorm:"column:admin_name" json:"admin_name"`
AdminId int `gorm:"column:admin_id" json:"admin_id"`
}
type Sort struct {
Id int `gorm:"column:id" json:"id"`
Sort uint16 `gorm:"column:sort" json:"sort"`
AdminName string `gorm:"column:admin_name" json:"admin_name"`
AdminId int `gorm:"column:admin_id" json:"admin_id"`
}
// VerifyListRow 审核列表产品侧字段
type VerifyListRow struct {
Id int `gorm:"column:id"`
Name string `gorm:"column:name"`
ModelCode string `gorm:"column:model_code"`
Price float32 `gorm:"column:price"`
StorePrice float32 `gorm:"column:store_price"`
SalePrice float32 `gorm:"column:sale_price"`
SharePrice float32 `gorm:"column:share_price"`
AgentPrice float32 `gorm:"column:agent_price"`
SaleReward string `gorm:"column:sale_reward"`
SalesModel uint8 `gorm:"column:sales_model"`
Type uint8 `gorm:"column:type"`
NormsNumber uint8 `gorm:"column:norms_number"`
BoxNumber float64 `gorm:"column:box_number"`
}
// VerifyFirstStatus 一审后回写产品审核状态(Edit 走 json→map,必须带 json tag
type VerifyFirstStatus struct {
VerifyStatus uint8 `gorm:"column:verify_status" json:"verify_status"`
VerifyId int `gorm:"column:verify_id" json:"verify_id"`
VerifyName string `gorm:"column:verify_name" json:"verify_name"`
Reason string `gorm:"column:reason" json:"reason"`
}
// VerifySecondStatus 二审驳回回写(Edit 走 json→map,必须带 json tag
type VerifySecondStatus struct {
VerifyStatus uint8 `gorm:"column:verify_status" json:"verify_status"`
VerifySecondId int `gorm:"column:verify_second_id" json:"verify_second_id"`
VerifySecondName string `gorm:"column:verify_second_name" json:"verify_second_name"`
Reason string `gorm:"column:reason" json:"reason"`
}
// VerifySecondOkStatus 二审通过:应用快照并回写审核人(Edit 走 json→map,必须带 json tag
type VerifySecondOkStatus struct {
ModelCode string `gorm:"column:model_code" json:"model_code"`
Price float32 `gorm:"column:price" json:"price"`
StorePrice float32 `gorm:"column:store_price" json:"store_price"`
SalePrice float32 `gorm:"column:sale_price" json:"sale_price"`
SharePrice float32 `gorm:"column:share_price" json:"share_price"`
AgentPrice float32 `gorm:"column:agent_price" json:"agent_price"`
SaleReward string `gorm:"column:sale_reward" json:"sale_reward"`
Type uint8 `gorm:"column:type" json:"type"`
NormsNumber uint8 `gorm:"column:norms_number" json:"norms_number"`
BoxNumber float64 `gorm:"column:box_number" json:"box_number"`
VerifyStatus uint8 `gorm:"column:verify_status" json:"verify_status"`
VerifySecondId int `gorm:"column:verify_second_id" json:"verify_second_id"`
VerifySecondName string `gorm:"column:verify_second_name" json:"verify_second_name"`
Reason string `gorm:"column:reason" json:"reason"`
}