fix
This commit is contained in:
parent
f0afda0f26
commit
a5f5a83fe8
|
@ -8,8 +8,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Repositories struct {
|
type Repositories struct {
|
||||||
ImageHandle repositories.ImageHandle
|
ImageHandle repositories.ImageHandle
|
||||||
NewResource repositories.Resource
|
NewResource repositories.Resource
|
||||||
|
NewShoppingCart repositories.ShoppingCart
|
||||||
}
|
}
|
||||||
|
|
||||||
type NewAllRepositorieData struct {
|
type NewAllRepositorieData struct {
|
||||||
|
@ -20,7 +21,8 @@ type NewAllRepositorieData struct {
|
||||||
|
|
||||||
func NewAllRepositories(newData *NewAllRepositorieData) *Repositories {
|
func NewAllRepositories(newData *NewAllRepositorieData) *Repositories {
|
||||||
return &Repositories{
|
return &Repositories{
|
||||||
ImageHandle: repositories.NewImageHandle(newData.GormDB, newData.BLMServiceUrl, newData.AwsSession),
|
ImageHandle: repositories.NewImageHandle(newData.GormDB, newData.BLMServiceUrl, newData.AwsSession),
|
||||||
NewResource: repositories.NewResource(newData.GormDB, newData.BLMServiceUrl, newData.AwsSession),
|
NewResource: repositories.NewResource(newData.GormDB, newData.BLMServiceUrl, newData.AwsSession),
|
||||||
|
NewShoppingCart: repositories.NewShoppingCart(newData.GormDB, newData.BLMServiceUrl, newData.AwsSession),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 关联查询
|
||||||
type RelaFsShoppingCart struct {
|
type RelaFsShoppingCart struct {
|
||||||
FsShoppingCart
|
FsShoppingCart
|
||||||
ShoppingCartProduct *RelaFsProduct `json:"shopping_cart_product" gorm:"foreignkey:product_id;references:id"`
|
ShoppingCartProduct *RelaFsProduct `json:"shopping_cart_product" gorm:"foreignkey:product_id;references:id"`
|
||||||
|
@ -12,6 +13,52 @@ type RelaFsShoppingCart struct {
|
||||||
ShoppingCartProductModel3dFitting *FsProductModel3d `json:"shopping_cart_product_model3d_list_fitting" gorm:"foreignkey:fitting_id;references:id"`
|
ShoppingCartProductModel3dFitting *FsProductModel3d `json:"shopping_cart_product_model3d_list_fitting" gorm:"foreignkey:fitting_id;references:id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 快照json数据结构
|
||||||
|
// 购物车快照数据结构
|
||||||
|
type CartSnapshot struct {
|
||||||
|
Logo string `json:"logo"` //logo地址
|
||||||
|
CombineImage string `json:"combine_image"` //刀版图地址
|
||||||
|
RenderImage string `json:"render_image"` //渲染结果图
|
||||||
|
TemplateInfo TemplateInfo `json:"template_info"` //模板数据
|
||||||
|
ModelInfo ModelInfo `json:"model_info"` //模型的数据
|
||||||
|
FittingInfo FittingInfo `json:"fitting_info"` //配件信息
|
||||||
|
SizeInfo SizeInfo `json:"size_info"` //尺寸基本信息
|
||||||
|
ProductInfo ProductInfo `json:"product_info"` //产品基本信息(只记录不要使用)
|
||||||
|
UserDiyInformation UserDiyInformation `json:"user_diy_information"` //用户diy数据
|
||||||
|
LightInfo LightInfo `json:"light_info"` //灯光数据
|
||||||
|
}
|
||||||
|
type ProductInfo struct {
|
||||||
|
ProductName string `json:"product_name"`
|
||||||
|
ProductSn string `json:"product_sn"`
|
||||||
|
}
|
||||||
|
type ModelInfo struct {
|
||||||
|
ModelJson string `json:"model_json"` //模型设计json数据
|
||||||
|
}
|
||||||
|
type FittingInfo struct {
|
||||||
|
FittingJson string `json:"fitting_json"` //配件设计json数据
|
||||||
|
FittingName string `json:"fitting_name"` //配件名称
|
||||||
|
}
|
||||||
|
type TemplateInfo struct {
|
||||||
|
TemplateJson string `json:"template_json"` //模板设计json数据
|
||||||
|
TemplateTag string `json:"template_tag"` //模板标签
|
||||||
|
}
|
||||||
|
type SizeInfo struct {
|
||||||
|
Inch string `json:"inch"`
|
||||||
|
Cm string `json:"cm"`
|
||||||
|
Capacity string `json:"capacity"`
|
||||||
|
}
|
||||||
|
type UserDiyInformation struct {
|
||||||
|
Phone string `json:"phone"` //电话
|
||||||
|
Address string `json:"address"` //地址
|
||||||
|
Website string `json:"website"` //网站
|
||||||
|
Qrcode string `json:"qrcode"` //二维码
|
||||||
|
Slogan string `json:"slogan"` //slogan
|
||||||
|
}
|
||||||
|
type LightInfo struct {
|
||||||
|
LightJson string `json:"light_json"` //灯光设计json数据
|
||||||
|
LightName string `json:"light_name"` //名称
|
||||||
|
}
|
||||||
|
|
||||||
// 获取单个
|
// 获取单个
|
||||||
func (s *FsShoppingCartModel) FindOne(ctx context.Context, id int64, fields ...string) (resp *FsShoppingCart, err error) {
|
func (s *FsShoppingCartModel) FindOne(ctx context.Context, id int64, fields ...string) (resp *FsShoppingCart, err error) {
|
||||||
db := s.db.WithContext(ctx).Where("id = ?", id)
|
db := s.db.WithContext(ctx).Where("id = ?", id)
|
||||||
|
|
|
@ -10,4 +10,22 @@ type Config struct {
|
||||||
SourceMysql string
|
SourceMysql string
|
||||||
Auth types.Auth
|
Auth types.Auth
|
||||||
SourceRabbitMq string
|
SourceRabbitMq string
|
||||||
|
AWS struct {
|
||||||
|
S3 struct {
|
||||||
|
Credentials struct {
|
||||||
|
AccessKeyID string
|
||||||
|
Secret string
|
||||||
|
Token string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BLMService struct {
|
||||||
|
Url string
|
||||||
|
LogoCombine struct {
|
||||||
|
Url string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Unity struct {
|
||||||
|
Host string
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ func (l *CalculateCartPriceLogic) CalculateCartPrice(req *types.CalculateCartPri
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//计算价格
|
//计算价格
|
||||||
itemPrice, totalPrice, _, _, err := shopping_cart.CaculateCartPrice(reqPurchaseQuantity, &sizePrice, fittingPrice)
|
itemPrice, totalPrice, _, _, err := l.svcCtx.Repositories.NewShoppingCart.CaculateCartPrice(reqPurchaseQuantity, &sizePrice, fittingPrice)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"fusenapi/model/gmodel"
|
"fusenapi/model/gmodel"
|
||||||
"fusenapi/server/shopping-cart/internal/svc"
|
"fusenapi/server/shopping-cart/internal/svc"
|
||||||
"fusenapi/server/shopping-cart/internal/types"
|
"fusenapi/server/shopping-cart/internal/types"
|
||||||
|
"fusenapi/service/repositories"
|
||||||
"fusenapi/utils/auth"
|
"fusenapi/utils/auth"
|
||||||
"fusenapi/utils/basic"
|
"fusenapi/utils/basic"
|
||||||
"fusenapi/utils/format"
|
"fusenapi/utils/format"
|
||||||
|
@ -90,9 +91,9 @@ func (l *GetCartsLogic) GetCarts(req *types.GetCartsReq, userinfo *auth.UserInfo
|
||||||
}
|
}
|
||||||
//定义map收集变更信息
|
//定义map收集变更信息
|
||||||
mapCartChange := make(map[int64]string)
|
mapCartChange := make(map[int64]string)
|
||||||
mapSnapshot := make(map[int64]shopping_cart.CartSnapshot)
|
mapSnapshot := make(map[int64]gmodel.CartSnapshot)
|
||||||
//校验购物车数据是否变更
|
//校验购物车数据是否变更
|
||||||
err = shopping_cart.VerifyShoppingCartSnapshotDataChange(shopping_cart.VerifyShoppingCartSnapshotDataChangeReq{
|
err = l.svcCtx.Repositories.NewShoppingCart.VerifyShoppingCartSnapshotDataChange(repositories.VerifyShoppingCartSnapshotDataChangeReq{
|
||||||
Carts: carts,
|
Carts: carts,
|
||||||
MapSize: mapSize,
|
MapSize: mapSize,
|
||||||
MapModel: mapModel,
|
MapModel: mapModel,
|
||||||
|
@ -123,7 +124,7 @@ func (l *GetCartsLogic) GetCarts(req *types.GetCartsReq, userinfo *auth.UserInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//计算价格
|
//计算价格
|
||||||
itemPrice, totalPrice, stepNum, _, err := shopping_cart.CaculateCartPrice(*cart.PurchaseQuantity, &sizePrice, fittingPrice)
|
itemPrice, totalPrice, stepNum, _, err := l.svcCtx.Repositories.NewShoppingCart.CaculateCartPrice(*cart.PurchaseQuantity, &sizePrice, fittingPrice)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return resp.SetStatusWithMessage(basic.CodeServiceErr, err.Error())
|
return resp.SetStatusWithMessage(basic.CodeServiceErr, err.Error())
|
||||||
|
|
|
@ -4,23 +4,34 @@ import (
|
||||||
"fusenapi/initalize"
|
"fusenapi/initalize"
|
||||||
"fusenapi/model/gmodel"
|
"fusenapi/model/gmodel"
|
||||||
"fusenapi/server/shopping-cart/internal/config"
|
"fusenapi/server/shopping-cart/internal/config"
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/session"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ServiceContext struct {
|
type ServiceContext struct {
|
||||||
Config config.Config
|
Config config.Config
|
||||||
MysqlConn *gorm.DB
|
MysqlConn *gorm.DB
|
||||||
AllModels *gmodel.AllModelsGen
|
AllModels *gmodel.AllModelsGen
|
||||||
RabbitMq *initalize.RabbitMqHandle
|
RabbitMq *initalize.RabbitMqHandle
|
||||||
|
Repositories *initalize.Repositories
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewServiceContext(c config.Config) *ServiceContext {
|
func NewServiceContext(c config.Config) *ServiceContext {
|
||||||
conn := initalize.InitMysql(c.SourceMysql)
|
conn := initalize.InitMysql(c.SourceMysql)
|
||||||
|
config := aws.Config{
|
||||||
|
Credentials: credentials.NewStaticCredentials(c.AWS.S3.Credentials.AccessKeyID, c.AWS.S3.Credentials.Secret, c.AWS.S3.Credentials.Token),
|
||||||
|
}
|
||||||
return &ServiceContext{
|
return &ServiceContext{
|
||||||
Config: c,
|
Config: c,
|
||||||
MysqlConn: conn,
|
MysqlConn: conn,
|
||||||
AllModels: gmodel.NewAllModels(initalize.InitMysql(c.SourceMysql)),
|
AllModels: gmodel.NewAllModels(initalize.InitMysql(c.SourceMysql)),
|
||||||
RabbitMq: initalize.InitRabbitMq(c.SourceRabbitMq, nil),
|
RabbitMq: initalize.InitRabbitMq(c.SourceRabbitMq, nil),
|
||||||
|
Repositories: initalize.NewAllRepositories(&initalize.NewAllRepositorieData{
|
||||||
|
GormDB: conn,
|
||||||
|
BLMServiceUrl: &c.BLMService.Url,
|
||||||
|
AwsSession: session.Must(session.NewSession(&config)),
|
||||||
|
}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,42 @@
|
||||||
package shopping_cart
|
package repositories
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
"fusenapi/model/gmodel"
|
"fusenapi/model/gmodel"
|
||||||
|
"fusenapi/utils/format"
|
||||||
"fusenapi/utils/hash"
|
"fusenapi/utils/hash"
|
||||||
|
"fusenapi/utils/step_price"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/session"
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
"math"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func NewShoppingCart(gormDB *gorm.DB, bLMServiceUrl *string, awsSession *session.Session) ShoppingCart {
|
||||||
|
return &defaultShoppingCart{
|
||||||
|
MysqlConn: gormDB,
|
||||||
|
BLMServiceUrl: bLMServiceUrl,
|
||||||
|
AwsSession: awsSession,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
defaultShoppingCart struct {
|
||||||
|
MysqlConn *gorm.DB
|
||||||
|
BLMServiceUrl *string
|
||||||
|
AwsSession *session.Session
|
||||||
|
}
|
||||||
|
ShoppingCart interface {
|
||||||
|
// 校验订单
|
||||||
|
VerifyShoppingCartSnapshotDataChange(req VerifyShoppingCartSnapshotDataChangeReq) error
|
||||||
|
//计算购物车价格
|
||||||
|
CaculateCartPrice(purchaseQuantity int64, productPrice *gmodel.FsProductPrice, fittingPrice int64) (ItemPrice, totalPrice int64, stepNum, stepPrice []int, err error)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
// 校验购物车快照数据跟目前是否一致
|
// 校验购物车快照数据跟目前是否一致
|
||||||
type VerifyShoppingCartSnapshotDataChangeReq struct {
|
type VerifyShoppingCartSnapshotDataChangeReq struct {
|
||||||
Carts []gmodel.FsShoppingCart
|
Carts []gmodel.FsShoppingCart
|
||||||
|
@ -14,18 +44,18 @@ type VerifyShoppingCartSnapshotDataChangeReq struct {
|
||||||
MapModel map[int64]gmodel.FsProductModel3d //模型跟配件都在
|
MapModel map[int64]gmodel.FsProductModel3d //模型跟配件都在
|
||||||
MapTemplate map[int64]gmodel.FsProductTemplateV2
|
MapTemplate map[int64]gmodel.FsProductTemplateV2
|
||||||
MapCartChange map[int64]string
|
MapCartChange map[int64]string
|
||||||
MapSnapshot map[int64]CartSnapshot
|
MapSnapshot map[int64]gmodel.CartSnapshot
|
||||||
MapProduct map[int64]gmodel.FsProduct
|
MapProduct map[int64]gmodel.FsProduct
|
||||||
}
|
}
|
||||||
|
|
||||||
func VerifyShoppingCartSnapshotDataChange(req VerifyShoppingCartSnapshotDataChangeReq) error {
|
func (d *defaultShoppingCart) VerifyShoppingCartSnapshotDataChange(req VerifyShoppingCartSnapshotDataChangeReq) error {
|
||||||
for _, cartInfo := range req.Carts {
|
for _, cartInfo := range req.Carts {
|
||||||
descrptionBuilder := strings.Builder{}
|
descrptionBuilder := strings.Builder{}
|
||||||
//产品下架/删除
|
//产品下架/删除
|
||||||
if _, ok := req.MapProduct[*cartInfo.ProductId]; !ok {
|
if _, ok := req.MapProduct[*cartInfo.ProductId]; !ok {
|
||||||
descrptionBuilder.WriteString("<p>the product is off shelf or deleted </p>")
|
descrptionBuilder.WriteString("<p>the product is off shelf or deleted </p>")
|
||||||
}
|
}
|
||||||
var snapShotParseInfo CartSnapshot
|
var snapShotParseInfo gmodel.CartSnapshot
|
||||||
if err := json.Unmarshal([]byte(*cartInfo.Snapshot), &snapShotParseInfo); err != nil {
|
if err := json.Unmarshal([]byte(*cartInfo.Snapshot), &snapShotParseInfo); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -83,7 +113,7 @@ func VerifyShoppingCartSnapshotDataChange(req VerifyShoppingCartSnapshotDataChan
|
||||||
if !ok {
|
if !ok {
|
||||||
descrptionBuilder.WriteString("<p>the size is lose</p>")
|
descrptionBuilder.WriteString("<p>the size is lose</p>")
|
||||||
} else {
|
} else {
|
||||||
var curSizeTitle SizeInfo
|
var curSizeTitle gmodel.SizeInfo
|
||||||
if err := json.Unmarshal([]byte(*curSize.Title), &curSizeTitle); err != nil {
|
if err := json.Unmarshal([]byte(*curSize.Title), &curSizeTitle); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -100,3 +130,35 @@ func VerifyShoppingCartSnapshotDataChange(req VerifyShoppingCartSnapshotDataChan
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 计算价格
|
||||||
|
func (d *defaultShoppingCart) CaculateCartPrice(purchaseQuantity int64, productPrice *gmodel.FsProductPrice, fittingPrice int64) (ItemPrice, totalPrice int64, stepNum, stepPrice []int, err error) {
|
||||||
|
//阶梯数量切片
|
||||||
|
stepNum, err = format.StrSlicToIntSlice(strings.Split(*productPrice.StepNum, ","))
|
||||||
|
if err != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return 0, 0, nil, nil, errors.New(fmt.Sprintf("failed to parse step number:%d_%d", *productPrice.ProductId, *productPrice.SizeId))
|
||||||
|
}
|
||||||
|
lenStepNum := len(stepNum)
|
||||||
|
//阶梯价格切片
|
||||||
|
stepPrice, err = format.StrSlicToIntSlice(strings.Split(*productPrice.StepPrice, ","))
|
||||||
|
if err != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return 0, 0, nil, nil, errors.New(fmt.Sprintf("failed to parse step price:%d_%d", *productPrice.ProductId, *productPrice.SizeId))
|
||||||
|
}
|
||||||
|
lenStepPrice := len(stepPrice)
|
||||||
|
if lenStepPrice == 0 || lenStepNum == 0 {
|
||||||
|
return 0, 0, nil, nil, errors.New(fmt.Sprintf("step price or step number is not set:%d_%d", *productPrice.ProductId, *productPrice.SizeId))
|
||||||
|
}
|
||||||
|
//请求的数量
|
||||||
|
reqPurchaseQuantity := purchaseQuantity
|
||||||
|
//购买箱数
|
||||||
|
boxQuantity := int(math.Ceil(float64(reqPurchaseQuantity) / float64(*productPrice.EachBoxNum)))
|
||||||
|
//根据数量获取阶梯价格中对应的价格
|
||||||
|
itemPrice := step_price.GetCentStepPrice(boxQuantity, stepNum, stepPrice)
|
||||||
|
//如果有配件,单价也要加入配件价格
|
||||||
|
itemPrice += fittingPrice
|
||||||
|
//单个购物车总价
|
||||||
|
totalPrice = itemPrice * reqPurchaseQuantity
|
||||||
|
return itemPrice, totalPrice, stepNum, stepPrice, nil
|
||||||
|
}
|
|
@ -1,44 +0,0 @@
|
||||||
package shopping_cart
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"fusenapi/model/gmodel"
|
|
||||||
"fusenapi/utils/format"
|
|
||||||
"fusenapi/utils/step_price"
|
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
|
||||||
"math"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
// 计算价格
|
|
||||||
func CaculateCartPrice(purchaseQuantity int64, productPrice *gmodel.FsProductPrice, fittingPrice int64) (ItemPrice, totalPrice int64, stepNum, stepPrice []int, err error) {
|
|
||||||
//阶梯数量切片
|
|
||||||
stepNum, err = format.StrSlicToIntSlice(strings.Split(*productPrice.StepNum, ","))
|
|
||||||
if err != nil {
|
|
||||||
logx.Error(err)
|
|
||||||
return 0, 0, nil, nil, errors.New(fmt.Sprintf("failed to parse step number:%d_%d", *productPrice.ProductId, *productPrice.SizeId))
|
|
||||||
}
|
|
||||||
lenStepNum := len(stepNum)
|
|
||||||
//阶梯价格切片
|
|
||||||
stepPrice, err = format.StrSlicToIntSlice(strings.Split(*productPrice.StepPrice, ","))
|
|
||||||
if err != nil {
|
|
||||||
logx.Error(err)
|
|
||||||
return 0, 0, nil, nil, errors.New(fmt.Sprintf("failed to parse step price:%d_%d", *productPrice.ProductId, *productPrice.SizeId))
|
|
||||||
}
|
|
||||||
lenStepPrice := len(stepPrice)
|
|
||||||
if lenStepPrice == 0 || lenStepNum == 0 {
|
|
||||||
return 0, 0, nil, nil, errors.New(fmt.Sprintf("step price or step number is not set:%d_%d", *productPrice.ProductId, *productPrice.SizeId))
|
|
||||||
}
|
|
||||||
//请求的数量
|
|
||||||
reqPurchaseQuantity := purchaseQuantity
|
|
||||||
//购买箱数
|
|
||||||
boxQuantity := int(math.Ceil(float64(reqPurchaseQuantity) / float64(*productPrice.EachBoxNum)))
|
|
||||||
//根据数量获取阶梯价格中对应的价格
|
|
||||||
itemPrice := step_price.GetCentStepPrice(boxQuantity, stepNum, stepPrice)
|
|
||||||
//如果有配件,单价也要加入配件价格
|
|
||||||
itemPrice += fittingPrice
|
|
||||||
//单个购物车总价
|
|
||||||
totalPrice = itemPrice * reqPurchaseQuantity
|
|
||||||
return itemPrice, totalPrice, stepNum, stepPrice, nil
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
package shopping_cart
|
|
||||||
|
|
||||||
// 购物车快照数据结构
|
|
||||||
type CartSnapshot struct {
|
|
||||||
Logo string `json:"logo"` //logo地址
|
|
||||||
CombineImage string `json:"combine_image"` //刀版图地址
|
|
||||||
RenderImage string `json:"render_image"` //渲染结果图
|
|
||||||
TemplateInfo TemplateInfo `json:"template_info"` //模板数据
|
|
||||||
ModelInfo ModelInfo `json:"model_info"` //模型的数据
|
|
||||||
FittingInfo FittingInfo `json:"fitting_info"` //配件信息
|
|
||||||
SizeInfo SizeInfo `json:"size_info"` //尺寸基本信息
|
|
||||||
ProductInfo ProductInfo `json:"product_info"` //产品基本信息(只记录不要使用)
|
|
||||||
UserDiyInformation UserDiyInformation `json:"user_diy_information"` //用户diy数据
|
|
||||||
LightInfo LightInfo `json:"light_info"` //灯光数据
|
|
||||||
}
|
|
||||||
type ProductInfo struct {
|
|
||||||
ProductName string `json:"product_name"`
|
|
||||||
ProductSn string `json:"product_sn"`
|
|
||||||
}
|
|
||||||
type ModelInfo struct {
|
|
||||||
ModelJson string `json:"model_json"` //模型设计json数据
|
|
||||||
}
|
|
||||||
type FittingInfo struct {
|
|
||||||
FittingJson string `json:"fitting_json"` //配件设计json数据
|
|
||||||
FittingName string `json:"fitting_name"` //配件名称
|
|
||||||
}
|
|
||||||
type TemplateInfo struct {
|
|
||||||
TemplateJson string `json:"template_json"` //模板设计json数据
|
|
||||||
TemplateTag string `json:"template_tag"` //模板标签
|
|
||||||
}
|
|
||||||
type SizeInfo struct {
|
|
||||||
Inch string `json:"inch"`
|
|
||||||
Cm string `json:"cm"`
|
|
||||||
Capacity string `json:"capacity"`
|
|
||||||
}
|
|
||||||
type UserDiyInformation struct {
|
|
||||||
Phone string `json:"phone"` //电话
|
|
||||||
Address string `json:"address"` //地址
|
|
||||||
Website string `json:"website"` //网站
|
|
||||||
Qrcode string `json:"qrcode"` //二维码
|
|
||||||
Slogan string `json:"slogan"` //slogan
|
|
||||||
}
|
|
||||||
type LightInfo struct {
|
|
||||||
LightJson string `json:"light_json"` //灯光设计json数据
|
|
||||||
LightName string `json:"light_name"` //名称
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user