package goods import ( "encoding/json" "live/app/constant" "live/app/lib" "live/app/lib/db" "live/app/lib/recook" "live/app/model/promotion" "time" ) type Goods struct { } // @Title 商品列表 关键字jiansuo func (g *Goods) GetGoodsList(keyword string, page lib.Page) *recook.GoodsList { goodsInfos, err := recook.Goods.GetListByKeyword(keyword, page.GetPage(), page.GetLimit()) if err != nil { return &recook.GoodsList{} } return goodsInfos } // @Title 品牌列表 func (g *Goods) BrandList(page lib.Page) *recook.BrandList { list, _ := recook.Goods.GetBrandList(page.GetPage(), page.GetLimit()) return list } // @Title 指定品牌商品列表 func (g *Goods) GoodsListByBrandId(brandId uint, page lib.Page) *recook.GoodsList { list, _ := recook.Goods.GetListByBrandId(brandId, page.GetPage(), page.GetLimit()) return list } // @Title 指定品牌商品列表 func (g *Goods) HotGoods(page lib.Page) (result []recook.GoodsInfo, dataLen int) { data := db.Redis.Get(constant.RedisKeyPromotionGoodsList).Val() promotionGoods := []promotion.PromotionGoods{} json.Unmarshal([]byte(data), &promotionGoods) day := time.Now().Format("2006-01-02") if len(promotionGoods) == 0 || promotionGoods[0].PromotionStartDate.Time.Format("2006-01-02") != day { promotionGoodsModel := &promotion.PromotionGoods{} lists := promotionGoodsModel.GetDayAll() data := []promotion.PromotionGoods{} index := 0 lastId := uint(0) for _, list := range lists { if lastId != list.PromotionTimeItemId { index = 1 lastId = list.PromotionTimeItemId } if index > 5 { continue } data = append(data, list) index++ } dataStr, _ := json.Marshal(data) db.Redis.Set(constant.RedisKeyPromotionGoodsList, string(dataStr), time.Hour*24) promotionGoods = data } dataLen = len(promotionGoods) start := page.GetStart() if dataLen >= start { end := page.GetLimit() + start if end > dataLen { end = dataLen } goodsIds := []uint{} for _, goods := range promotionGoods[start:end] { goodsIds = append(goodsIds, goods.GoodsId) } ids, err := recook.Goods.GetListByIds(goodsIds) if err != nil { return } result = *ids } return }