package service

import (
	"encoding/json"
	"github.com/iancoleman/orderedmap"
	"go_sku_server/pkg/logger"
	"go_sku_server/pkg/mongo"
	"gopkg.in/mgo.v2"
	"gopkg.in/mgo.v2/bson"
	"strconv"
)

//获取Spu的属性
func (ls *LyService) GetSpuAttr(spuId string) (attrsResult interface{}) {
	var spuAttr SpuAttr
	var attrsList []interface{}
	mongodb := mongo.Conn("default")
	defer func() {
		mongodb.Close()
	}()
	spuIdInt, _ := strconv.Atoi(spuId)
	err := mongodb.DB("ichunt").C("spu_attrs").Find(bson.M{"spu_id": spuIdInt}).One(&spuAttr)
	if err != nil && err != mgo.ErrNotFound {
		logger.Select("sku_query").Error(err.Error())
	}
	//fmt.Println(spuAttr.AttrsExtend)
	//如果有attrs_extend,就去取attrs_extend
	if len(spuAttr.AttrsExtend) != 0 {
		return spuAttr.AttrsExtend
	} else if spuAttr.Attrs != "" {
		o := orderedmap.New()
		err := json.Unmarshal([]byte(spuAttr.Attrs), &o)
		if err != nil {
			logger.Select("sku_query").Error(err.Error())
		}
		for _, value := range o.Keys() {
			data := make(map[string]interface{})
			data["attr_name"] = value
			data["attr_value"], _ = o.Get(value)
			attrsList = append(attrsList, data)
			attrsResult = attrsList
		}
		return attrsResult
	}
	return false
}