12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package dao
- import (
- "context"
- "encoding/json"
- "fmt"
- "go-common/app/service/openplatform/ticket-item/model"
- "go-common/library/cache/redis"
- "go-common/library/log"
- )
- const (
- _addWishSQL = "INSERT INTO user_wish (mid, item_id, face) VALUES(?, ?, ?)"
- // 缓存 key
- _userWishCountKey = "USER:WISH:COUNT:%d"
- _userWishActiveKey = "USER:WISH:ACTIVE:%d:%d"
- _userWishListKey = "USER:WISH:LIST:%d"
- )
- // AddWish 添加想去
- func (d *Dao) AddWish(c context.Context, wish *model.UserWish) (err error) {
- err = d.db.Exec(_addWishSQL, wish.MID, wish.ItemID, wish.Face).Error
- return
- }
- // WishCacheUpdate 更新想去缓存
- func (d *Dao) WishCacheUpdate(c context.Context, wish *model.UserWish) (err error) {
- conn := d.redis.Get(c)
- defer conn.Close()
- if _, err = conn.Do("SETEX", fmt.Sprintf(_userWishActiveKey, wish.ItemID, wish.MID), _expireHalfhour, 1); err != nil {
- log.Error("d.WishCacheUpdate(%+v) SETEX error(%v)", wish, err)
- return
- }
- if _, err = conn.Do("INCR", fmt.Sprintf(_userWishCountKey, wish.ItemID)); err != nil {
- log.Error("d.WishCacheUpdate(%+v) INCR error(%v)", wish, err)
- return
- }
- wishCache, err := json.Marshal(map[string]interface{}{
- "mid": wish.MID,
- "face": wish.Face,
- })
- if err != nil {
- log.Error("d.WishCacheUpdate(%+v) json.Marshal() error(%v)", wish, err)
- return
- }
- listKey := fmt.Sprintf(_userWishListKey, wish.ItemID)
- length, err := redis.Int64(conn.Do("RPUSH", listKey, wishCache))
- if err != nil {
- log.Error("d.WishCacheUpdate(%+v) RPUSH error(%v)", wish, err)
- return
- }
- if length > 5 {
- if _, err = conn.Do("LTRIM", listKey, -5, -1); err != nil {
- log.Error("d.WishCacheUpdate(%+v) LTRIM error(%v)", wish, err)
- return
- }
- }
- return
- }
|