go-common/app/service/live/xuser/dao/vip/dao.go
2019-04-22 18:49:16 +08:00

85 lines
1.6 KiB
Go

package vip
import (
"context"
"fmt"
"go-common/app/service/live/xuser/conf"
"go-common/app/service/live/xuser/model"
"go-common/library/cache/redis"
xsql "go-common/library/database/sql"
"strconv"
)
// Dao vip dao
type Dao struct {
c *conf.Config
db *xsql.DB
redis *redis.Pool
}
// New new vip dao
func New(c *conf.Config) (dao *Dao) {
dao = &Dao{
c: c,
db: xsql.NewMySQL(c.LiveUserMysql),
redis: redis.NewPool(c.VipRedis),
}
return
}
// Close close the resource.
func (d *Dao) Close() {
d.db.Close()
d.redis.Close()
}
// initInfo init info struct
func (d *Dao) initInfo(info *model.VipInfo) *model.VipInfo {
if info == nil {
info = &model.VipInfo{Vip: 0, VipTime: model.TimeEmpty, Svip: 0, SvipTime: model.TimeEmpty}
} else {
if info.VipTime == "" {
info.VipTime = model.TimeEmpty
}
if info.SvipTime == "" {
info.SvipTime = model.TimeEmpty
}
}
return info
}
// Ping dao ping
func (d *Dao) Ping(ctx context.Context) error {
// TODO: add mc,redis... if you use
return nil
}
// toInt try trans interface input to int
func toInt(in interface{}) (int, error) {
switch in.(type) {
case int:
return in.(int), nil
case int32:
return int(in.(int32)), nil
case int64:
return int(in.(int64)), nil
case float32:
return int(in.(float32)), nil
case float64:
return int(in.(float64)), nil
case string:
i, err := strconv.Atoi(in.(string))
if err != nil {
return 0, err
}
return i, nil
case []byte:
i, err := strconv.Atoi(string(in.([]byte)))
if err != nil {
return 0, err
}
return i, nil
}
return 0, fmt.Errorf("invalid input(%v)", in)
}