123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package dao
- import (
- "context"
- "fmt"
- gmc "go-common/library/cache/memcache"
- "go-common/library/log"
- "github.com/pkg/errors"
- )
- const (
- _prefixCouponAllowances = "cas:%d:%d"
- _prefixCoupons = "cs:%d:%d"
- _prefixGrantUnique = "gu:%s"
- )
- func couponAllowancesKey(mid int64, state int8) string {
- return fmt.Sprintf(_prefixCouponAllowances, mid, state)
- }
- func couponsKey(mid int64, ct int8) string {
- return fmt.Sprintf(_prefixCoupons, ct, mid)
- }
- func grantUnique(token string) string {
- return fmt.Sprintf(_prefixGrantUnique, token)
- }
- // DelCouponAllowancesKey delete allowances cache.
- func (d *Dao) DelCouponAllowancesKey(c context.Context, mid int64, state int8) (err error) {
- return d.delCache(c, couponAllowancesKey(mid, state))
- }
- // DelCache del cache.
- func (d *Dao) delCache(c context.Context, key string) (err error) {
- conn := d.mc.Get(c)
- defer conn.Close()
- if err = conn.Delete(key); err != nil {
- if err == gmc.ErrNotFound {
- err = nil
- } else {
- err = errors.Wrapf(err, "mc.Delete(%s)", key)
- }
- }
- return
- }
- //DelCouponTypeCache del coupon.
- func (d *Dao) DelCouponTypeCache(c context.Context, mid int64, ct int8) (err error) {
- return d.delCache(c, couponsKey(mid, ct))
- }
- //DelGrantUniqueLock del lock.
- func (d *Dao) DelGrantUniqueLock(c context.Context, token string) (err error) {
- return d.delCache(c, grantUnique(token))
- }
- // AddGrantUniqueLock add grant coupon use lock.
- func (d *Dao) AddGrantUniqueLock(c context.Context, token string, seconds int32) (succeed bool) {
- var (
- key = grantUnique(token)
- conn = d.mc.Get(c)
- err error
- )
- defer conn.Close()
- item := &gmc.Item{
- Key: key,
- Value: []byte("0"),
- Expiration: seconds,
- }
- if err = conn.Add(item); err != nil {
- if err != gmc.ErrNotStored {
- log.Error("mc.Add(%s) error(%v)", key, err)
- }
- return
- }
- succeed = true
- return
- }
|