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.
125 lines
2.5 KiB
125 lines
2.5 KiB
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 |
|
}
|
|
|