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 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 GetRecommendProductListHandler
	get /api/product/recommend(GetRecommendProductListReq) returns (response);
	//获取列表页推荐产品列表
	@handler HomePageRecommendProductListHandler
	get /api/product/home_page_recommend(HomePageRecommendProductListReq) returns (response);
	//获取产品详情(重构版)
	@handler GetProductDetailHandler
	get /api/product/get_product_detail(GetProductDetailReq) returns (response);
}

//获取详情页推荐产品列表
type GetRecommendProductListReq {
	Num       int64 `form:"num,optional"`
	ProductId int64 `form:"product_id"`
}
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"`
	SizeCount           int64              `json:"size_count"`
	HaveOptionalFitting bool               `json:"have_optional_fitting"`
}
//获取分类产品列表
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 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"`
}

//获取产品详情(重构版)
type GetProductDetailReq {
	ProductId          int64  `form:"product_id"`           //产品id
	TemplateTag        string `form:"template_tag"`         //模板标签
	SelectedColorIndex int    `form:"selected_color_index"` //模板标签颜色索引
	Logo               string `form:"logo"`                 //logo地址
}
type GetProductDetailRsp {
	TemplateTagColorInfo TemplateTagColorInfo `json:"template_tag_color_info"` //标签颜色信息
	ProductInfo          ProductInfo          `json:"product_info"`            //产品基本信息
	BaseColors           interface{}          `json:"base_colors"`             //一些返回写死的颜色
	SizeList             []SizeInfo           `json:"size_list"`               //尺寸相关信息
}
type SizeInfo {
	Id              int64         `json:"id"`                //尺寸id
	IsDefault       int64         `json:"is_default"`        //是否默认显示
	Title           interface{}   `json:"title"`             //尺寸标题信息
	Capacity        string        `json:"capacity"`          //尺寸名称
	PartsCanDeleted int64         `json:"parts_can_deleted"` //配件是否可删除
	IsHot           int64         `json:"is_hot"`            //是否热门
	MinPrice        string        `json:"min_price"`         //最低价
	TemplateInfo    interface{}   `json:"template_info"`     //模板相关信息
	ModelInfo       ModelInfo     `json:"model_info"`        //模型相关信息
	FittingList     []FittingInfo `json:"fitting_list"`      //配件相关信息
}
type FittingInfo {
	Id            int64       `json:"id"`             //配件id
	IsHot         int64       `json:"is_hot"`         //是否热门
	MaterialImage string      `json:"material_image"` //配件材质图
	DesignInfo    interface{} `json:"design_info"`    //配件设计信息
	Price         string      `json:"price"`          //配件价格
	Name          string      `json:"name"`           //配件名
	IsDefault     int64       `json:"is_default"`     //是否默认的配件
}
type ModelInfo {
	Id              int64       `json:"id"`          //模型id
	ModelDesignInfo interface{} `json:"design_info"` //模型设计信息
	LightInfo       LightInfo   `json:"light_info"`  //灯光信息
}
type LightInfo {
	Id              int64       `json:"id"`                //灯光id
	LightName       string      `json:"light_name"`        //灯光组名称
	LightDesignInfo interface{} `json:"light_design_info"` //灯光设计信息
}
type ProductInfo {
	Id              int64  `json:"id"`                //产品id
	ProductType     int64  `json:"product_type"`      //产品类型id
	ProductTypeName string `json:"product_type_name"` //产品类型名称
	Title           string `json:"title"`             //产品标题
	IsEnv           int64  `json:"is_env"`            //是否环保
	IsMicro         int64  `json:"is_micro"`          //是否可微波炉
	IsCustomization int64  `json:"is_customization"`  //是否可定制产品
}
type TemplateTagColorInfo {
	Colors             [][]string  `json:"colors"`               //传入logo对应的算法颜色组
	SelectedColorIndex int         `json:"selected_color_index"` //选择的模板标签的颜色索引值
	TemplateTagGroups  interface{} `json:"template_tag_groups"`  //模板标签分组信息
}