1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package dao
- import (
- "context"
- "fmt"
- "go-common/app/service/live/wallet/model"
- mc "go-common/library/cache/memcache"
- "go-common/library/ecode"
- "go-common/library/log"
- )
- const (
- _walletMcKey = "wu:%d" // 钱包数据的mc缓存
- )
- func mcKey(uid int64) string {
- return fmt.Sprintf(_walletMcKey, uid)
- }
- func (d *Dao) CacheVersion(c context.Context) int32 {
- return 1
- }
- func (d *Dao) IsNewVersion(c context.Context, detail *model.McDetail) bool {
- return detail.Version == d.CacheVersion(c)
- }
- // WalletCache 获取钱包缓存
- func (d *Dao) WalletCache(c context.Context, uid int64) (detail *model.McDetail, err error) {
- key := mcKey(uid)
- conn := d.mc.Get(c)
- defer conn.Close()
- r, err := conn.Get(key)
- if err != nil {
- if err == mc.ErrNotFound {
- return
- }
- log.Error("[dao.mc_wallet|WalletCache] conn.Get(%s) error(%v)", key, err)
- err = ecode.ServerErr
- return
- }
- detail = &model.McDetail{}
- if err = conn.Scan(r, detail); err != nil {
- log.Error("[dao.mc_wallet|WalletCache] conn.Scan(%s) error(%v)", string(r.Value), err)
- }
- return
- }
- // SetWalletCache 设置钱包缓存
- func (d *Dao) SetWalletCache(c context.Context, detail *model.McDetail, expire int32) (err error) {
- key := mcKey(detail.Detail.Uid)
- conn := d.mc.Get(c)
- defer conn.Close()
- if err = conn.Set(&mc.Item{
- Key: key,
- Object: detail,
- Flags: mc.FlagProtobuf,
- Expiration: expire,
- }); err != nil {
- log.Error("[dao.mc_wallet|SetWalletCache] conn.Set(%s, %v) error(%v)", key, detail, err)
- }
- return
- }
- // DelWalletCache 删除等级缓存
- func (d *Dao) DelWalletCache(c context.Context, uid int64) (err error) {
- key := mcKey(uid)
- conn := d.mc.Get(c)
- defer conn.Close()
- if err = conn.Delete(key); err == mc.ErrNotFound {
- return
- }
- if err != nil {
- log.Error("[dao.mc_wallet|DelWalletCache] conn.Delete(%s) error(%v)", key, err)
- }
- return
- }
|