package search

import (
	"mtp2_if/global/app"
	"mtp2_if/global/e"
	"mtp2_if/logger"
	"mtp2_if/models"
	"net/http"

	"github.com/gin-gonic/gin"
)

// GoodsesReq 检索商品信息请求参数
type GoodsesReq struct {
	Content    string `form:"content" binding:"required"`
	TradeModes string `form:"tradeModes"`
}

// Goodses 检索商品信息
// @Summary 检索商品信息
// @Description 说明：使用检索内容模糊匹配商品代码和商品名称
// @Produce json
// @Param content query string true "检索内容"
// @Param tradeModes query string false "交易模式，格式：1,2,3"
// @Success 200 {object} models.SearchGoods
// @Failure 500 {object} app.Response
// @Router /Search/SearchGoodses [get]
// @Tags 检索服务
func Goodses(c *gin.Context) {
	appG := app.Gin{C: c}

	// 获取请求参数
	var req GoodsesReq
	if err := appG.C.ShouldBindQuery(&req); err != nil {
		logger.GetLogger().Errorf("Goodses failed: %s", err.Error())
		appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
		return
	}

	searchGoodses, err := models.SearchGoodses(req.Content, req.TradeModes)
	if err != nil {
		// 查询失败
		logger.GetLogger().Errorf("Goodses failed: %s", err.Error())
		appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
		return
	}

	// 查询成功返回
	logger.GetLogger().Debugln("Goodses successed: %v", searchGoodses)
	appG.Response(http.StatusOK, e.SUCCESS, searchGoodses)
}
