syntax = "v1"

info (
	title: // TODO: add title
	desc: // TODO: add description
	author: ""
	email: ""
)

import "basic.api"

service product {
	//获取分类产品列表
	@handler GetTagProductListHandler
	get /api/product/tag_product_list(GetTagProductListReq) returns (response);
	//获取产品模型信息
	@handler GetModelByPidHandler
	get /api/product/get_model_by_pid(GetModelByPidReq) returns (response);
	//获取产品阶梯价格列表(即将废弃)
	@handler GetPriceByPidHandler
	get /api/product/get_price_by_pid(GetPriceByPidReq) returns (response);
	//获取产品阶梯价格信息
	@handler GetProductStepPriceHandler
	get /api/product/get_product_step_price(GetProductStepPriceReq) returns (response);
	//根据产品+配件搭配计算价格
	@handler CalculateProductPriceHandler
	post /api/product/calculate_product_price(CalculateProductPriceReq) returns (response);
	//获取产品尺寸列表
	@handler GetSizeByPidHandler
	get /api/product/get_size_by_pid(GetSizeByPidReq) returns (response);
	//获取产品模板
	@handler GetTemplateByPidHandler
	get /api/product/get_template_by_pid(GetTemplateByPidReq) returns (response);
	//获取产品配件数据
	@handler GetFittingByPidHandler
	get /api/product/get_fitting_by_pid(GetFittingByPidReq) returns (response);
	//获取产品灯光数据
	@handler GetLightByPidHandler
	get /api/product/get_light_by_pid(GetLightByPidReq) returns (response);
	//获取产品渲染设置
	@handler GetRenderSettingByPidHandler
	get /api/product/get_render_setting_by_pid(GetRenderSettingByPidReq) returns (response);
	//获取详情页推荐产品列表
	@handler GetRecommandProductListHandler
	get /api/product/recommand(GetRecommandProductListReq) returns (response);
	//获取列表页推荐产品列表
	@handler HomePageRecommendProductListHandler
	get /api/product/home_page_recommend(HomePageRecommendProductListReq) returns (response);
}

//获取详情页推荐产品列表
type GetRecommandProductListReq {
	Size int32  `form:"size,optional"`
	Num  int64  `form:"num,optional"`
	Sn   string `form:"sn"`
}
type GetRecommandProductListRsp {
	Id               int64              `json:"id"`
	Sn               string             `json:"sn"`
	Title            string             `json:"title"`
	TitleCn          string             `json:"title_cn"`
	Cover            string             `json:"cover"`
	CoverMetadata    interface{}        `json:"cover_metadata"`
	CoverImg         string             `json:"cover_img"`
	CoverImgMetadata interface{}        `json:"cover_img_metadata"`
	CoverDefault     []CoverDefaultItem `json:"cover_default"`
	Intro            string             `json:"intro"`
	Recommend        bool               `json:"recommend"`
	MinPrice         int64              `json:"min_price"`
	IsCustomization  int64              `json:"is_customization"`
}
//获取分类产品列表
type GetTagProductListReq {
	Cid         int64  `form:"cid,optional"`          //分类id
	Size        uint32 `form:"size,optional"`         //尺寸
	TemplateTag string `form:"template_tag,optional"` //模板标签
	WithProduct bool   `form:"with_product,optional"` //是否携带分类下的产品
}
type GetTagProductListRsp {
	TotalCategoryProduct int       `json:"total_category_product"`
	TagList              []TagItem `json:"tag_list"`
}
type TagItem {
	TypeName       string        `json:"type_name"`
	TypeId         int64         `json:"type_id"`
	Icon           string        `json:"icon"`
	Sort           int64         `json:"sort"`
	LevelPrefix    string        `json:"level_prefix"`
	TagProductList []interface{} `json:"tag_product_list"` //分类下的产品
	ChildTagList   []*TagItem    `json:"child_tag_list"`
}
type TagProduct {
	ProductId     int64       `json:"product_id"`
	Sn            string      `json:"sn"`
	Title         string      `json:"title"`
	Cover         string      `json:"cover"`
	CoverMetadata interface{} `json:"cover_metadata"`
	SizeNum       uint32      `json:"size_num"`
	MinPrice      int64       `json:"min_price"`
	//彩膜列表
	CoverDefault        []CoverDefaultItem `json:"cover_default"`
	HaveOptionalFitting bool               `json:"have_optional_fitting"`
	Recommended         bool               `json:"recommended"`
	IsCustomization     int64              `json:"is_customization"`
}
type CoverDefaultItem {
	TemplateTag   string      `json:"template_tag"`
	Cover         string      `json:"cover"`
	CoverMetadata interface{} `json:"cover_metadata"`
}
//获取产品模型信息
type GetModelByPidReq {
	Pid string `form:"pid"` //实际上是产品sn
}
//获取产品阶梯价格
type GetPriceByPidReq {
	Pid string `form:"pid"`
}
type GetPriceByPidRsp {
	Items     []PriceItem `json:"items"`
	MinPrice  float64     `json:"min_price"`
	MaxPrice  float64     `json:"max_price"`
	StepRange []StepRange `json:"step_range"`
}
type StepRange {
	Begin int64   `json:"begin"`
	End   int64   `json:"end"`
	Price float64 `json:"price"`
}
type PriceItem {
	Num      int64 `json:"num"`
	TotalNum int64 `json:"total_num"`
	Price    int64 `json:"price"`
}
//获取产品阶梯价格信息
type GetProductStepPriceReq {
	ProductId int64 `form:"product_id"`
}
//根据产品+配件搭配计算价格
type CalculateProductPriceReq {
	ProductId        int64 `json:"product_id"`
	SizeId           int64 `json:"size_id"`
	FittingId        int64 `json:"fitting_id,optional"`
	PurchaseQuantity int64 `json:"purchase_quantity"`
}
type CalculateProductPriceRsp {
	ItemPrice  string      `json:"item_price"`
	TotalPrice string      `json:"total_price"`
	StepRange  interface{} `json:"step_range"`
}
//获取产品尺寸列表
type GetSizeByPidReq {
	Pid         string `form:"pid"`
	TemplateTag string `form:"template_tag"`
}
type GetSizeByPidRsp {
	Id              int64       `json:"id"` //尺寸id
	Title           interface{} `json:"title"`
	Capacity        string      `json:"capacity"`          //容量、尺寸、尺码描述
	Cover           string      `json:"cover"`             //缩略图
	PartsCanDeleted bool        `json:"parts_can_deleted"` //用户可否删除配件
	ModelId         int64       `json:"model_id"`          //产品主模型id
	IsPopular       bool        `json:"is_popular"`        //是否受欢迎
	MinPrice        string      `json:"min_price"`         //最小价格
	IsDefault       bool        `json:"is_default"`        //是否默认(这里的默认是跟列表页一致)
}
//获取产品模板
type GetTemplateByPidReq {
	Pid           string `form:"pid"`
	ProductSizeId int64  `form:"product_size_id,optional"`
	TemplateTag   string `form:"template_tag"`
}
//获取产品配件数据
type GetFittingByPidReq {
	Pid string `form:"pid"`
}
type GetFittingByPidRsp {
	Id          int64       `json:"id"`
	MaterialImg string      `json:"material_img"`
	Title       string      `json:"title"`
	Price       string      `json:"price"`
	IsPopular   bool        `json:"is_popular"`
	ModelInfo   interface{} `json:"model_info"`
}
//获取产品灯光数据
type GetLightByPidReq {
	Pid string `form:"pid"`
}
//获取产品渲染设置
type GetRenderSettingByPidReq {
	Pid      string `form:"pid"`
	ClientNo string `form:"client_no,optional"`
}
type GetRenderSettingByPidRsp {
	Id              int64       `json:"id"`               //产品id
	Type            int64       `json:"type"`             //产品typeid
	Title           string      `json:"title"`            //产品名称
	IsEnv           int64       `json:"isEnv"`            //产品标签之一
	IsMicro         int64       `json:"isMicro"`          //产品标签之一
	TypeName        string      `json:"typeName"`         //产品类型名称
	IsLowRendering  bool        `json:"is_low_rendering"` //低质量画质渲染开关
	IsCustomization int64       `json:"is_customization"` //产品是否可定制
	IsRemoveBg      bool        `json:"is_remove_bg"`     //logo上传是否去背景
	RenderDesign    bool        `json:"render_design"`    //是否拥有云渲染设计方案
	LastDesign      bool        `json:"last_design"`      //是否拥有千人千面设计方案
	Colors          interface{} `json:"colors"`
}
//获取列表页推荐产品(返回是这个维度数组)
type HomePageRecommendProductListReq {
	Size         uint32 `form:"size"`
	MerchantType int64  `form:"merchant_type"`
}
type HomePageRecommendProductListRsp {
	Id                  int64              `json:"id"`
	Sn                  string             `json:"sn"`
	Title               string             `json:"title"`
	Cover               string             `json:"cover"`
	CoverMetadata       interface{}        `json:"cover_metadata"`
	SizeNum             uint32             `json:"size_num"`
	MinPrice            int64              `json:"min_price"`
	CoverDefault        []CoverDefaultItem `json:"cover_default"`
	HaveOptionalFitting bool               `json:"have_optional_fitting"`
	IsCustomization     int64              `json:"is_customization"`
}