294 lines
14 KiB
Go
294 lines
14 KiB
Go
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 会变成 RFC3339,MySQL 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"`
|
||
}
|