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,40 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"dao.go",
"mysql.go",
"redis.go",
],
importpath = "go-common/app/interface/main/web-goblin/dao/share",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/web-goblin/conf:go_default_library",
"//app/interface/main/web-goblin/model/share:go_default_library",
"//library/cache/redis:go_default_library",
"//library/database/sql:go_default_library",
"//library/log:go_default_library",
"//library/stat/prom: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,46 @@
package share
import (
"context"
"go-common/app/interface/main/web-goblin/conf"
"go-common/library/cache/redis"
"go-common/library/database/sql"
"go-common/library/log"
"go-common/library/stat/prom"
)
// Dao dao struct.
type Dao struct {
// config
c *conf.Config
// db
db *sql.DB
// redis
redis *redis.Pool
}
// New new dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// config
c: c,
db: sql.NewMySQL(c.DB.Goblin),
redis: redis.NewPool(c.Redis.Config),
}
return
}
// Ping ping dao
func (d *Dao) Ping(c context.Context) (err error) {
if err = d.db.Ping(c); err != nil {
return
}
return
}
// PromError stat and log.
func PromError(name string, format string, args ...interface{}) {
prom.BusinessErrCount.Incr(name)
log.Error(format, args...)
}

View File

@@ -0,0 +1,44 @@
package share
import (
"context"
"fmt"
"time"
shamdl "go-common/app/interface/main/web-goblin/model/share"
xsql "go-common/library/database/sql"
"go-common/library/log"
)
const (
_shaSub = 100
_shasSQL = "SELECT id,mid,day_count,cycle,share_date,ctime,mtime FROM gb_share_%s WHERE mid = ? and cycle = ?"
)
func shaHit(mid int64) string {
return fmt.Sprintf("%02d", mid%_shaSub)
}
// Shares get shares.
func (d *Dao) Shares(c context.Context, mid int64) (res []*shamdl.Share, err error) {
var (
rows *xsql.Rows
)
if rows, err = d.db.Query(c, fmt.Sprintf(_shasSQL, shaHit(mid)), mid, time.Now().Format("200601")); err != nil {
log.Error("Shares d.db.Query(%d) error(%v)", mid, err)
return
}
defer rows.Close()
for rows.Next() {
r := new(shamdl.Share)
if err = rows.Scan(&r.ID, &r.Mid, &r.DayCount, &r.Cycle, &r.ShareDate, &r.Ctime, &r.Mtime); err != nil {
log.Error("Shares:row.Scan() error(%v)", err)
return
}
res = append(res, r)
}
if err = rows.Err(); err != nil {
log.Error("rows.Err() error(%v)", err)
}
return
}

View File

@@ -0,0 +1,60 @@
package share
import (
"context"
"fmt"
"go-common/library/cache/redis"
"go-common/library/log"
)
const _keySha = "sm_%d"
func keyShare(mid int64) string {
return fmt.Sprintf(_keySha, mid)
}
// SharesCache get shares from cache.
func (d *Dao) SharesCache(c context.Context, mid int64) (res map[string]int64, err error) {
var (
key = keyShare(mid)
conn = d.redis.Get(c)
)
defer conn.Close()
if res, err = redis.Int64Map(conn.Do("HGETALL", key)); err != nil {
log.Error("HGETALL %v failed error(%v)", key, err)
}
return
}
// SetSharesCache back cache from db.
func (d *Dao) SetSharesCache(c context.Context, expire int, mid int64, shares map[string]int64) (err error) {
var (
key = keyShare(mid)
conn = d.redis.Get(c)
)
defer conn.Close()
args := redis.Args{}.Add(key)
for k, v := range shares {
args = args.Add(k).Add(v)
}
if err = conn.Send("HMSET", args...); err != nil {
log.Error("conn.Send(HMSET, %s, %d) error(%v)", key, err)
return
}
if err = conn.Send("EXPIRE", key, expire); err != nil {
log.Error("conn.Send(Expire, %s, %d) error(%v)", key, expire, err)
return
}
if err = conn.Flush(); err != nil {
log.Error("conn.Flush error(%v)", err)
return
}
for i := 0; i < 2; i++ {
if _, err = conn.Receive(); err != nil {
log.Error("conn.Receive() error(%v)", err)
return
}
}
return
}