syntax = "v1"

info (
	title: "产品3d模型服务"// TODO: add title
	desc: // TODO: add description
	author: ""
	email: ""
)

import "basic.api"

service product-model {
	//获取产品模型详情
	@handler GetModelDetailHandler
	get /api/product-model/detail(GetModelDetailReq) returns (response);
	//获取产品模型其他信息
	@handler GetModelOtherInfoHandler
	get /api/product-model/other-info(GetModelOtherInfoReq) returns (response);
	//更新产品模型
	@handler UpdateProductModelHandler
	post /api/product-model/update-model(UpdateProductModelReq) returns (response);
}

//获取产品模型详情
type GetModelDetailReq {
	ModelId int64 `form:"model_id"`
}
type GetModelDetailRsp {
	Tag              int64       `json:"tag"`
	ProductModelInfo interface{} `json:"product_model_info"`
}

//获取产品模型其他信息
type GetModelOtherInfoReq {
	ProductId int64 `form:"product_id,optional"`
}
type GetModelOtherInfoRsp {
	LightList []LightListItem `json:"light_list"`
	PartList  []PartListItem  `json:"part_list"`
}
type LightListItem {
	Id   int64       `json:"id"`
	Name string      `json:"name"`
	Info interface{} `json:"info"`
}
type PartListItem {
	Id          int64       `json:"id"`
	Name        string      `json:"name"`
	MaterialImg string      `json:"material_img"`
	ModelInfo   interface{} `json:"model_info"`
}
//更新产品模型
type UpdateProductModelReq {
	ModelData ModelData `json:"modelData"`
	LightData LightData `json:"lightData"`
}
type LightData {
	Id   int64     `json:"id"`
	Name string    `json:"name"`
	Info LightInfo `json:"info"`
}
type LightInfo {
	Name      string                   `json:"name"`
	Hdr       map[string]interface{}   `json:"hdr"`
	LightData []map[string]interface{} `json:"lightData"`
}

type ModelData {
	Id             int64                  `json:"id"`
	Name           string                 `json:"name"`
	KnifeTerritory string                 `json:"knifeTerritory"`
	Cover          string                 `json:"cover"`
	CameraData     map[string]interface{} `json:"cameraData"`
	ControlsData   map[string]interface{} `json:"controlsData"`
	Material       map[string]interface{} `json:"material"`
	ModelData      map[string]interface{} `json:"modelData"`
	LightList      []int64                `json:"lightList"`
	Parts          int64                  `json:"parts"`
	PartsList      []int64                `json:"partsList"`
	Tag            int64                  `json:"tag"`
	LightData      int64                  `json:"lightData"`
}
type UpdateProductModelRsp {
	ModelId   int64   `json:"modelId"`
	LightId   int64   `json:"lightId"`
	LightList []int64 `json:"lightList"`
}