You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
234 lines
6.0 KiB
234 lines
6.0 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"strconv" |
|
|
|
"go-common/app/admin/main/usersuit/model" |
|
gmc "go-common/library/cache/memcache" |
|
"go-common/library/log" |
|
) |
|
|
|
const ( |
|
_prefixActivatedNid = "usma:" // key of activated medal nid |
|
_prefixOwners = "umos:" // key of owners info |
|
_prefixRedPoint = "usrp:" // key of red point |
|
_prefixPopup = "uspp:" // key of new medal popup |
|
) |
|
|
|
// medalactivated medal nid key. |
|
func activatedNidKey(mid int64) string { |
|
return _prefixActivatedNid + strconv.FormatInt(mid, 10) |
|
} |
|
|
|
// ownersKey medal_owner key. |
|
func ownersKey(mid int64) string { |
|
return _prefixOwners + strconv.FormatInt(mid, 10) |
|
} |
|
|
|
//RedPointKey new medal RedPoint key. |
|
func RedPointKey(mid int64) string { |
|
return _prefixRedPoint + strconv.FormatInt(mid, 10) |
|
} |
|
|
|
// PopupKey new medal popup key. |
|
func PopupKey(mid int64) string { |
|
return _prefixPopup + strconv.FormatInt(mid, 10) |
|
} |
|
|
|
func (d *Dao) pingMC(c context.Context) (err error) { |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
if err = conn.Set(&gmc.Item{Key: "ping", Value: []byte{1}, Expiration: d.mcExpire}); err != nil { |
|
log.Error("conn.Store(set, ping, 1) error(%v)", err) |
|
} |
|
return |
|
} |
|
|
|
// MedalOwnersCache get medal_owner cache. |
|
func (d *Dao) MedalOwnersCache(c context.Context, mid int64) (res []*model.MedalOwner, err error) { |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
item, err := conn.Get(ownersKey(mid)) |
|
if err != nil { |
|
if err == gmc.ErrNotFound { |
|
res = nil |
|
err = nil |
|
return |
|
} |
|
log.Error("d.MedalOwnersCache err(%v)", err) |
|
return |
|
} |
|
res = make([]*model.MedalOwner, 0) |
|
if err = conn.Scan(item, &res); err != nil { |
|
log.Error("d.MedalOwnersCache err(%v)", err) |
|
} |
|
return |
|
} |
|
|
|
// SetMedalOwnersache set medal_owner cache. |
|
func (d *Dao) SetMedalOwnersache(c context.Context, mid int64, nos []*model.MedalOwner) (err error) { |
|
key := ownersKey(mid) |
|
item := &gmc.Item{Key: key, Object: nos, Expiration: d.mcExpire, Flags: gmc.FlagJSON} |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
if err = conn.Set(item); err != nil { |
|
log.Error("SetMedalOwnersache err(%v)", err) |
|
} |
|
return |
|
} |
|
|
|
// DelMedalOwnersCache delete medal_owner cache. |
|
func (d *Dao) DelMedalOwnersCache(c context.Context, mid int64) (err error) { |
|
key := ownersKey(mid) |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
if err = conn.Delete(key); err != nil { |
|
if err == gmc.ErrNotFound { |
|
err = nil |
|
} else { |
|
log.Error("d.DelMedalOwnersCache(%s) error(%v)", key, err) |
|
} |
|
} |
|
return |
|
} |
|
|
|
// MedalActivatedCache get user activated medal nid. |
|
func (d *Dao) MedalActivatedCache(c context.Context, mid int64) (nid int64, err error) { |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
item, err := conn.Get(activatedNidKey(mid)) |
|
if err != nil { |
|
if err == gmc.ErrNotFound { |
|
nid = 0 |
|
err = nil |
|
return |
|
} |
|
log.Error("d.MedalActivatedCache(mid:%d) err(%v)", mid, err) |
|
return |
|
} |
|
if err = conn.Scan(item, &nid); err != nil { |
|
log.Error("d.MedalActivatedCache(mid:%d) err(%v)", mid, err) |
|
} |
|
return |
|
} |
|
|
|
// SetMedalActivatedCache set activated medal cache. |
|
func (d *Dao) SetMedalActivatedCache(c context.Context, mid, nid int64) (err error) { |
|
key := activatedNidKey(mid) |
|
item := &gmc.Item{Key: key, Object: nid, Expiration: d.mcExpire, Flags: gmc.FlagJSON} |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
if err = conn.Set(item); err != nil { |
|
log.Error("SetMedalActivatedCache err(%v)", err) |
|
} |
|
return |
|
} |
|
|
|
// DelMedalActivatedCache delete activated medal cache. |
|
func (d *Dao) DelMedalActivatedCache(c context.Context, mid int64) (err error) { |
|
key := activatedNidKey(mid) |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
if err = conn.Delete(key); err != nil { |
|
if err == gmc.ErrNotFound { |
|
err = nil |
|
} else { |
|
log.Error("d.DelMedalActivatedCache(%s) error(%v)", key, err) |
|
} |
|
} |
|
return |
|
} |
|
|
|
// PopupCache get new medal info popup cache. |
|
func (d *Dao) PopupCache(c context.Context, mid int64) (nid int64, err error) { |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
item, err := conn.Get(PopupKey(mid)) |
|
if err != nil { |
|
if err == gmc.ErrNotFound { |
|
nid = 0 |
|
err = nil |
|
return |
|
} |
|
log.Error("d.PopupCache(mid:%d) err(%v)", mid, err) |
|
return |
|
} |
|
if err = conn.Scan(item, &nid); err != nil { |
|
log.Error("d.PopupCache(mid:%d) err(%v)", mid, err) |
|
} |
|
return |
|
} |
|
|
|
// SetPopupCache set popup cache. |
|
func (d *Dao) SetPopupCache(c context.Context, mid, nid int64) (err error) { |
|
key := PopupKey(mid) |
|
item := &gmc.Item{Key: key, Object: nid, Expiration: d.pointExpire, Flags: gmc.FlagJSON} |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
if err = conn.Set(item); err != nil { |
|
log.Error("SetMedalOwnersache err(%v)", err) |
|
} |
|
return |
|
} |
|
|
|
// DelPopupCache delete new medal info popup cache. |
|
func (d *Dao) DelPopupCache(c context.Context, mid int64) (err error) { |
|
key := PopupKey(mid) |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
if err = conn.Delete(key); err != nil { |
|
if err == gmc.ErrNotFound { |
|
err = nil |
|
} else { |
|
log.Error("d.DelPopupCache(%s) error(%v)", key, err) |
|
} |
|
} |
|
return |
|
} |
|
|
|
// RedPointCache get new medal info red point cache. |
|
func (d *Dao) RedPointCache(c context.Context, mid int64) (nid int64, err error) { |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
item, err := conn.Get(RedPointKey(mid)) |
|
if err != nil { |
|
if err == gmc.ErrNotFound { |
|
err = nil |
|
return |
|
} |
|
log.Error("d.RedPointCache(mid:%d) err(%v)", mid, err) |
|
return |
|
} |
|
if err = conn.Scan(item, &nid); err != nil { |
|
log.Error("d.RedPointCache(mid:%d) err(%v)", mid, err) |
|
} |
|
return |
|
} |
|
|
|
// SetRedPointCache set red point cache. |
|
func (d *Dao) SetRedPointCache(c context.Context, mid, nid int64) (err error) { |
|
key := RedPointKey(mid) |
|
item := &gmc.Item{Key: key, Object: nid, Expiration: d.pointExpire, Flags: gmc.FlagJSON} |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
if err = conn.Set(item); err != nil { |
|
log.Error("SetRedPointCache(%d %d) err(%v)", mid, nid, err) |
|
} |
|
return |
|
} |
|
|
|
// DelRedPointCache delete new medal info red point cache. |
|
func (d *Dao) DelRedPointCache(c context.Context, mid int64) (err error) { |
|
key := RedPointKey(mid) |
|
conn := d.mc.Get(c) |
|
defer conn.Close() |
|
if err = conn.Delete(key); err != nil { |
|
if err == gmc.ErrNotFound { |
|
err = nil |
|
} else { |
|
log.Error("d.DelRedPointCache(%d) error(%v)", mid, err) |
|
} |
|
} |
|
return |
|
}
|
|
|