package service import ( "github.com/gogf/gf/util/gconv" "github.com/gomodule/redigo/redis" "go_sku_server/model" "go_sku_server/pkg/gredis" "go_sku_server/pkg/mongo" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) type SkuCacheService struct { } /** mongoDB 根据 spuId supplierId moq encoded canal 获取sku信息 */ func (spuCacheService *SkuCacheService) MongoGetOnlySkuInfo(spuId string,supplierId int,moq int,encoded int,canal string)(error, model.SkuMongo){ var skuMongo model.SkuMongo mongodb := mongo.Conn("default") defer func() { mongodb.Close() }() query:=bson.M{ "spu_id":gconv.Int64(spuId), "supplier_id":supplierId, "moq":moq, "encoded":encoded, "canal":canal, } err := mongodb.DB("ichunt").C("sku").Find(query).One(&skuMongo) if err != nil { if(err == mgo.ErrNotFound){ return nil,skuMongo } return err,skuMongo } return err,skuMongo } /** mongo 插入sku */ func (spuCacheService *SkuCacheService) MongoInsertOnlySkuInfo(onlySkuInfo model.SkuMongo)(error){ mongoConn := mongo.Conn("default"); defer mongoConn.Close() Mongo:=mongoConn.DB("ichunt").C("sku") err:=Mongo.Insert(onlySkuInfo) return err } /** 将单条sku数据压入redis */ func (spuCacheService *SkuCacheService)RedisInsertSkuInfo(skuId string,skuInfo string) error { redisWriteConn := gredis.Conn("search_w") defer redisWriteConn.Close() _,err:=redisWriteConn.Do("HSet","sku",skuId,skuInfo) return err; } /** 将skuID压入redis队列(list)(消费后将压入ES) */ func (spuCacheService *SkuCacheService)RedisPushEsList(skuId string) error { redisWriteConn := gredis.Conn("search_w") defer redisWriteConn.Close() push_name:="update_list_sku"; _,err:=redisWriteConn.Do("Rpush",push_name,skuId) return err } /** 获取sku redis单条信息 */ func (spuCacheService *SkuCacheService)RedisGetSkuInfo(skuId string) (string,error) { redisReadConn := gredis.Conn("search_r") defer redisReadConn.Close() skuInfoString,err:=redis.String(redisReadConn.Do("Hget","sku",skuId)) return skuInfoString,err }