syntax = "v1"

info (
	title:   "后台产品管理服务"
	desc:    "后台产品管理相关接口"
	author:  "Liangzai"
	email:   "2440983361@qq.com"
	version: "v1"
)

// 产品管理接口
@server(
	prefix: /api/v1/admin/product
	group: admin_product
)
service main {
	// 创建产品
	@handler AdminCreateProduct
	post /create (AdminCreateProductReq) returns (AdminCreateProductResp)

	// 更新产品
	@handler AdminUpdateProduct
	put /update/:id (AdminUpdateProductReq) returns (AdminUpdateProductResp)

	// 删除产品
	@handler AdminDeleteProduct
	delete /delete/:id (AdminDeleteProductReq) returns (AdminDeleteProductResp)

	// 获取产品列表
	@handler AdminGetProductList
	get /list (AdminGetProductListReq) returns (AdminGetProductListResp)

	// 获取产品详情
	@handler AdminGetProductDetail
	get /detail/:id (AdminGetProductDetailReq) returns (AdminGetProductDetailResp)

	// 获取产品功能列表
	@handler AdminGetProductFeatureList
	get /feature/list/:product_id (AdminGetProductFeatureListReq) returns ([]AdminGetProductFeatureListResp)

	// 更新产品功能关联（批量）
	@handler AdminUpdateProductFeatures
	put /feature/update/:product_id (AdminUpdateProductFeaturesReq) returns (AdminUpdateProductFeaturesResp)
}

type (
	// 创建产品请求
	AdminCreateProductReq {
		ProductName string  `json:"product_name"`   // 服务名
		ProductEn   string  `json:"product_en"`     // 英文名
		Description string  `json:"description"`    // 描述
		Notes       string  `json:"notes,optional"` // 备注
		CostPrice   float64 `json:"cost_price"`     // 成本
		SellPrice   float64 `json:"sell_price"`     // 售价
	}

	// 创建产品响应
	AdminCreateProductResp {
		Id int64 `json:"id"` // 产品ID
	}

	// 更新产品请求
	AdminUpdateProductReq {
		Id          int64    `path:"id"`                    // 产品ID
		ProductName *string  `json:"product_name,optional"` // 服务名
		ProductEn   *string  `json:"product_en,optional"`   // 英文名
		Description *string  `json:"description,optional"`  // 描述
		Notes       *string  `json:"notes,optional"`        // 备注
		CostPrice   *float64 `json:"cost_price,optional"`   // 成本
		SellPrice   *float64 `json:"sell_price,optional"`   // 售价
	}

	// 更新产品响应
	AdminUpdateProductResp {
		Success bool `json:"success"` // 是否成功
	}

	// 删除产品请求
	AdminDeleteProductReq {
		Id int64 `path:"id"` // 产品ID
	}

	// 删除产品响应
	AdminDeleteProductResp {
		Success bool `json:"success"` // 是否成功
	}

	// 获取产品列表请求
	AdminGetProductListReq {
		Page        int64   `form:"page"`                  // 页码
		PageSize    int64   `form:"pageSize"`              // 每页数量
		ProductName *string `form:"product_name,optional"` // 服务名
		ProductEn   *string `form:"product_en,optional"`   // 英文名
	}

	// 产品列表项
	ProductListItem {
		Id          int64   `json:"id"`           // 产品ID
		ProductName string  `json:"product_name"` // 服务名
		ProductEn   string  `json:"product_en"`   // 英文名
		Description string  `json:"description"`  // 描述
		Notes       string  `json:"notes"`        // 备注
		CostPrice   float64 `json:"cost_price"`   // 成本
		SellPrice   float64 `json:"sell_price"`   // 售价
		CreateTime  string  `json:"create_time"`  // 创建时间
		UpdateTime  string  `json:"update_time"`  // 更新时间
	}

	// 获取产品列表响应
	AdminGetProductListResp {
		Total int64             `json:"total"` // 总数
		Items []ProductListItem `json:"items"` // 列表数据
	}

	// 获取产品详情请求
	AdminGetProductDetailReq {
		Id int64 `path:"id"` // 产品ID
	}

	// 获取产品详情响应
	AdminGetProductDetailResp {
		Id          int64   `json:"id"`           // 产品ID
		ProductName string  `json:"product_name"` // 服务名
		ProductEn   string  `json:"product_en"`   // 英文名
		Description string  `json:"description"`  // 描述
		Notes       string  `json:"notes"`        // 备注
		CostPrice   float64 `json:"cost_price"`   // 成本
		SellPrice   float64 `json:"sell_price"`   // 售价
		CreateTime  string  `json:"create_time"`  // 创建时间
		UpdateTime  string  `json:"update_time"`  // 更新时间
	}

	// 获取产品功能列表请求
	AdminGetProductFeatureListReq {
		ProductId int64 `path:"product_id"` // 产品ID
	}

	// 获取产品功能列表响应Item
	AdminGetProductFeatureListResp {
		Id          int64  `json:"id"`           // 关联ID
		ProductId   int64  `json:"product_id"`   // 产品ID
		FeatureId   int64  `json:"feature_id"`   // 功能ID
		ApiId       string `json:"api_id"`       // API标识
		Name        string `json:"name"`         // 功能描述
		Sort        int64  `json:"sort"`         // 排序
		Enable      int64  `json:"enable"`       // 是否启用
		IsImportant int64  `json:"is_important"` // 是否重要
		CreateTime  string `json:"create_time"`  // 创建时间
		UpdateTime  string `json:"update_time"`  // 更新时间
	}

	// // 获取产品功能列表响应
	// AdminGetProductFeatureListResp {
	// 	Items []ProductFeatureListItem `json:"items"` // 列表数据
	// }

	// 产品功能关联项
	ProductFeatureItem {
		FeatureId   int64 `json:"feature_id"`   // 功能ID
		Sort        int64 `json:"sort"`         // 排序
		Enable      int64 `json:"enable"`       // 是否启用
		IsImportant int64 `json:"is_important"` // 是否重要
	}

	// 更新产品功能关联请求（批量）
	AdminUpdateProductFeaturesReq {
		ProductId int64                `path:"product_id"` // 产品ID
		Features  []ProductFeatureItem `json:"features"`   // 功能列表
	}

	// 更新产品功能关联响应
	AdminUpdateProductFeaturesResp {
		Success bool `json:"success"` // 是否成功
	}
)