captcha_mc.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package dao
  2. import (
  3. "context"
  4. "go-common/library/cache/memcache"
  5. "go-common/library/log"
  6. )
  7. var (
  8. _defaultCode = "@@@@"
  9. )
  10. // AddTokenCache add token redis cache.
  11. func (d *Dao) AddTokenCache(c context.Context, key string, ttl int32) (err error) {
  12. conn := d.memcache.Get(c)
  13. defer conn.Close()
  14. item := &memcache.Item{Key: key, Value: []byte(_defaultCode), Expiration: ttl, Flags: memcache.FlagRAW}
  15. if err = conn.Set(item); err != nil {
  16. log.Error("conn.Set(%s,%v) error(%v)", key, _defaultCode, err)
  17. }
  18. return
  19. }
  20. // UpdateTokenCache update token cache.
  21. func (d *Dao) UpdateTokenCache(c context.Context, token, code string, ttl int32) (err error) {
  22. conn := d.memcache.Get(c)
  23. defer conn.Close()
  24. item := &memcache.Item{Key: token, Value: []byte(code), Expiration: ttl, Flags: memcache.FlagRAW}
  25. if err = conn.Set(item); err != nil {
  26. log.Error("conn.Set(%s,%v) error(%v)", token, code, err)
  27. }
  28. return
  29. }
  30. // CaptchaCache get captcha cache.
  31. func (d *Dao) CaptchaCache(c context.Context, token string) (code string, isInit bool, err error) {
  32. conn := d.memcache.Get(c)
  33. defer conn.Close()
  34. item, err := conn.Get(token)
  35. if err != nil {
  36. if err == memcache.ErrNotFound {
  37. err = nil
  38. } else {
  39. log.Error("conn.Get(GET %s) error(%v)", token, err)
  40. }
  41. return
  42. }
  43. if err = conn.Scan(item, &code); err != nil {
  44. log.Error("conn.Scan(%s) error(%v)", item.Value, err)
  45. return
  46. }
  47. isInit = code == _defaultCode
  48. return
  49. }
  50. // DelCaptchaCache delete captcha cache.
  51. func (d *Dao) DelCaptchaCache(c context.Context, token string) (err error) {
  52. conn := d.memcache.Get(c)
  53. defer conn.Close()
  54. if err = conn.Delete(token); err != nil {
  55. log.Error("conn.Delete(%s) error(%v)", token, err)
  56. }
  57. return
  58. }