126 lines
2.5 KiB
Go
126 lines
2.5 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"go-common/library/cache/memcache"
|
|
"go-common/library/log"
|
|
"go-common/library/stat/prom"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func orderKey(id string) string {
|
|
return fmt.Sprintf("up_o_%s", id)
|
|
}
|
|
|
|
func assetKey(oid int64, otype string, currency string) string {
|
|
return fmt.Sprintf("up_a_%d_%s_%s", oid, otype, currency)
|
|
}
|
|
|
|
func taskKey(task string) string {
|
|
return fmt.Sprintf("up_t_%s", task)
|
|
}
|
|
|
|
// DelCacheOrderUser delete data from mc
|
|
func (d *Dao) DelCacheOrderUser(c context.Context, orderID string) (err error) {
|
|
conn := d.mc.Get(c)
|
|
defer conn.Close()
|
|
key := orderKey(orderID)
|
|
if err = conn.Delete(key); err != nil {
|
|
if err == memcache.ErrNotFound {
|
|
err = nil
|
|
return
|
|
}
|
|
prom.BusinessErrCount.Incr("mc:DelCacheOrderUser")
|
|
log.Errorv(c, log.KV("DelCacheOrderUser", fmt.Sprintf("%+v", err)), log.KV("key", key))
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// DelCacheAsset delete data from mc
|
|
func (d *Dao) DelCacheAsset(c context.Context, oid int64, otype string, currency string) (err error) {
|
|
conn := d.mc.Get(c)
|
|
defer conn.Close()
|
|
key := assetKey(oid, otype, currency)
|
|
if err = conn.Delete(key); err != nil {
|
|
if err == memcache.ErrNotFound {
|
|
err = nil
|
|
return
|
|
}
|
|
prom.BusinessErrCount.Incr("mc:DelCacheAsset")
|
|
log.Errorv(c, log.KV("DelCacheAsset", fmt.Sprintf("%+v", err)), log.KV("key", key))
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// AddCacheTask .
|
|
func (d *Dao) AddCacheTask(c context.Context, task string, ttl int32) (ok bool, err error) {
|
|
var (
|
|
conn = d.mc.Get(c)
|
|
item = &memcache.Item{
|
|
Key: taskKey(task),
|
|
Value: []byte{0},
|
|
Expiration: ttl,
|
|
}
|
|
)
|
|
defer conn.Close()
|
|
|
|
if err = conn.Add(item); err != nil {
|
|
if err == memcache.ErrNotStored {
|
|
err = nil
|
|
ok = false
|
|
return
|
|
}
|
|
err = errors.WithStack(err)
|
|
return
|
|
}
|
|
ok = true
|
|
return
|
|
}
|
|
|
|
// DelCacheTask .
|
|
func (d *Dao) DelCacheTask(c context.Context, task string) (err error) {
|
|
var (
|
|
conn = d.mc.Get(c)
|
|
key = taskKey(task)
|
|
)
|
|
defer conn.Close()
|
|
|
|
if err = conn.Delete(key); err != nil {
|
|
if err == memcache.ErrNotFound {
|
|
err = nil
|
|
} else {
|
|
err = errors.WithStack(err)
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
// ugcpay-rank
|
|
|
|
func elecUserSetting(mid int64) string {
|
|
return fmt.Sprintf("eus_%d", mid)
|
|
}
|
|
|
|
// DelCacheUserSetting .
|
|
func (d *Dao) DelCacheUserSetting(c context.Context, mid int64) (err error) {
|
|
var (
|
|
conn = d.mcRank.Get(c)
|
|
key = elecUserSetting(mid)
|
|
)
|
|
defer conn.Close()
|
|
|
|
if err = conn.Delete(key); err != nil {
|
|
if err == memcache.ErrNotFound {
|
|
err = nil
|
|
} else {
|
|
err = errors.WithStack(err)
|
|
}
|
|
}
|
|
return
|
|
}
|