Files
lone-services/services/product/internal/dao/product.go
T
2026-08-25 18:11:28 +08:00

294 lines
14 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 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:varchar(512);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 ProductCreate 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 ProductCheckExist struct {
Id int `gorm:"column:id"`
Name string `gorm:"column:name"`
ModelCode string `gorm:"column:model_code"`
Status uint8 `gorm:"column:status"`
}
type ProductNumberInfo struct {
Id int `gorm:"column:id"`
Number uint `gorm:"column:number"`
}
type ProductVerify 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 ProductEditBase 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"`
}
// ProductEditSusceptible 敏感字段(查询旧值 / 写入 verify 快照)
type ProductEditSusceptible 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"`
}
// ProductVerifyFirstEditStatus 敏感编辑提交后置为一审中(Edit 走 json→map,必须带 json tag
type ProductVerifyFirstEditStatus struct {
VerifyStatus uint8 `gorm:"column:verify_status" json:"verify_status"`
}
// ProductInfo 列表/详情查询投影
type ProductInfo 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 ProductNames struct {
Id int `gorm:"column:id"`
Name string `gorm:"column:name"`
}
type ProductStatusUpdate 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 ProductSort 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"`
}
// ProductVerifyListRow 审核列表产品侧字段
type ProductVerifyListRow 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"`
}
// ProductVerifyFirstStatus 一审后回写产品审核状态(Edit 走 json→map,必须带 json tag
type ProductVerifyFirstStatus 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"`
}
// ProductVerifySecondStatus 二审驳回回写(Edit 走 json→map,必须带 json tag
type ProductVerifySecondStatus 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"`
}
// ProductVerifySecondOkStatus 二审通过:应用快照并回写审核人(Edit 走 json→map,必须带 json tag
type ProductVerifySecondOkStatus 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"`
}