123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- package dao
- import (
- "context"
- "fmt"
- model "go-common/app/interface/main/credit/model"
- gmc "go-common/library/cache/memcache"
- )
- const (
- _prefixCaseInfo = "ca_in_%d"
- _prefixVoteCaseInfo = "vc_in_%d_%d"
- _caseVoteTop = "ca_vo_top_%d"
- )
- func caseInfoKey(cid int64) string {
- return fmt.Sprintf(_prefixCaseInfo, cid)
- }
- func voteCaseInfoKey(mid int64, cid int64) string {
- return fmt.Sprintf(_prefixVoteCaseInfo, mid, cid)
- }
- func caseVoteTopKey(mid int64) string {
- return fmt.Sprintf(_caseVoteTop, mid)
- }
- // SetCaseInfoCache set case info.
- func (d *Dao) SetCaseInfoCache(c context.Context, cid int64, bc *model.BlockedCase) (err error) {
- var (
- conn = d.mc.Get(c)
- item = &gmc.Item{Key: caseInfoKey(cid), Object: bc, Expiration: d.minCommonExpire, Flags: gmc.FlagJSON}
- )
- defer conn.Close()
- err = conn.Set(item)
- return
- }
- // CaseInfoCache get case info cache
- func (d *Dao) CaseInfoCache(c context.Context, cid int64) (bc *model.BlockedCase, err error) {
- var (
- reply *gmc.Item
- conn = d.mc.Get(c)
- )
- defer conn.Close()
- if reply, err = conn.Get(caseInfoKey(cid)); err != nil {
- if err == gmc.ErrNotFound {
- err = nil
- }
- return
- }
- bc = &model.BlockedCase{}
- err = conn.Scan(reply, &bc)
- return
- }
- // SetVoteInfoCache set vote case info.
- func (d *Dao) SetVoteInfoCache(c context.Context, mid, cid int64, vi *model.VoteInfo) (err error) {
- var (
- conn = d.mc.Get(c)
- item = &gmc.Item{Key: voteCaseInfoKey(mid, cid), Object: vi, Expiration: d.userExpire, Flags: gmc.FlagJSON}
- )
- defer conn.Close()
- err = conn.Set(item)
- return
- }
- // VoteInfoCache get vote case info cache
- func (d *Dao) VoteInfoCache(c context.Context, mid, cid int64) (vi *model.VoteInfo, err error) {
- var (
- reply *gmc.Item
- conn = d.mc.Get(c)
- )
- defer conn.Close()
- reply, err = conn.Get(voteCaseInfoKey(mid, cid))
- if err != nil {
- if err == gmc.ErrNotFound {
- err = nil
- }
- return
- }
- vi = &model.VoteInfo{}
- err = conn.Scan(reply, &vi)
- return
- }
- // CaseVoteTopCache get case votes by top 100.
- func (d *Dao) CaseVoteTopCache(c context.Context, mid int64) (bs []*model.BlockedCase, err error) {
- var (
- reply *gmc.Item
- conn = d.mc.Get(c)
- )
- defer conn.Close()
- reply, err = conn.Get(caseVoteTopKey(mid))
- if err != nil {
- if err == gmc.ErrNotFound {
- err = nil
- }
- return
- }
- bs = make([]*model.BlockedCase, 0)
- err = conn.Scan(reply, &bs)
- return
- }
- // SetCaseVoteTopCache set case votes by top 100.
- func (d *Dao) SetCaseVoteTopCache(c context.Context, mid int64, bs []*model.BlockedCase) (err error) {
- var (
- conn = d.mc.Get(c)
- item = &gmc.Item{Key: caseVoteTopKey(mid), Object: bs, Expiration: d.userExpire, Flags: gmc.FlagJSON}
- )
- defer conn.Close()
- err = conn.Set(item)
- return
- }
|