Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = [
"captcha_mc_test.go",
"dao_test.go",
],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/captcha/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"captcha_mc.go",
"dao.go",
],
importpath = "go-common/app/interface/main/captcha/dao",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/captcha/conf:go_default_library",
"//library/cache/memcache:go_default_library",
"//library/log:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,65 @@
package dao
import (
"context"
"go-common/library/cache/memcache"
"go-common/library/log"
)
var (
_defaultCode = "@@@@"
)
// AddTokenCache add token redis cache.
func (d *Dao) AddTokenCache(c context.Context, key string, ttl int32) (err error) {
conn := d.memcache.Get(c)
defer conn.Close()
item := &memcache.Item{Key: key, Value: []byte(_defaultCode), Expiration: ttl, Flags: memcache.FlagRAW}
if err = conn.Set(item); err != nil {
log.Error("conn.Set(%s,%v) error(%v)", key, _defaultCode, err)
}
return
}
// UpdateTokenCache update token cache.
func (d *Dao) UpdateTokenCache(c context.Context, token, code string, ttl int32) (err error) {
conn := d.memcache.Get(c)
defer conn.Close()
item := &memcache.Item{Key: token, Value: []byte(code), Expiration: ttl, Flags: memcache.FlagRAW}
if err = conn.Set(item); err != nil {
log.Error("conn.Set(%s,%v) error(%v)", token, code, err)
}
return
}
// CaptchaCache get captcha cache.
func (d *Dao) CaptchaCache(c context.Context, token string) (code string, isInit bool, err error) {
conn := d.memcache.Get(c)
defer conn.Close()
item, err := conn.Get(token)
if err != nil {
if err == memcache.ErrNotFound {
err = nil
} else {
log.Error("conn.Get(GET %s) error(%v)", token, err)
}
return
}
if err = conn.Scan(item, &code); err != nil {
log.Error("conn.Scan(%s) error(%v)", item.Value, err)
return
}
isInit = code == _defaultCode
return
}
// DelCaptchaCache delete captcha cache.
func (d *Dao) DelCaptchaCache(c context.Context, token string) (err error) {
conn := d.memcache.Get(c)
defer conn.Close()
if err = conn.Delete(token); err != nil {
log.Error("conn.Delete(%s) error(%v)", token, err)
}
return
}

View File

@@ -0,0 +1,43 @@
package dao
import (
"context"
"testing"
. "github.com/smartystreets/goconvey/convey"
)
var (
token = "5049a45ffc7c49489c14a7677c4548e2"
ttl = 150
)
func TestAddTokenCache(t *testing.T) {
var (
c = context.TODO()
)
Convey("err should return nil, and ttl not -1", t, func() {
err := d.AddTokenCache(c, token, int32(ttl))
So(err, ShouldBeNil)
})
}
func TestDelCaptchaCache(t *testing.T) {
var (
c = context.TODO()
)
Convey("err should return nil", t, func() {
err := d.DelCaptchaCache(c, token)
So(err, ShouldBeNil)
})
}
func TestCaptchaCache(t *testing.T) {
var (
c = context.TODO()
)
Convey("err should return nil", t, func() {
_, _, err := d.CaptchaCache(c, token)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,48 @@
package dao
import (
"context"
"time"
"go-common/app/interface/main/captcha/conf"
"go-common/library/cache/memcache"
)
// Dao captcha service Dao.
type Dao struct {
conf *conf.Config
memcache *memcache.Pool
mcExpire int32
}
// New new a captcha dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
conf: c,
memcache: memcache.NewPool(c.Memcache.Config),
mcExpire: int32(time.Duration(c.Memcache.Expire) / time.Second),
}
return d
}
// Ping captcha service health check, connection is ok.
func (d *Dao) Ping(c context.Context) (err error) {
// return d.pingRedis(c)
return d.pingMemcache(c)
}
// pingMemcache check Memcache health.
func (d *Dao) pingMemcache(c context.Context) (err error) {
conn := d.memcache.Get(c)
item := memcache.Item{Key: "ping", Value: []byte{1}, Expiration: d.mcExpire}
err = conn.Set(&item)
conn.Close()
return
}
// Close close captcha all connection.
func (d *Dao) Close() {
if d.memcache != nil {
d.memcache.Close()
}
}

View File

@@ -0,0 +1,21 @@
package dao
import (
"flag"
"path/filepath"
"testing"
"go-common/app/interface/main/captcha/conf"
)
var (
d *Dao
)
func TestMain(m *testing.M) {
flag.Parse()
dir, _ := filepath.Abs("../cmd/captcha-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
}