Create & Init Project...
This commit is contained in:
110
app/job/main/figure/dao/hbase.go
Normal file
110
app/job/main/figure/dao/hbase.go
Normal file
@ -0,0 +1,110 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"go-common/app/job/main/figure/conf"
|
||||
"go-common/app/job/main/figure/model"
|
||||
"go-common/library/log"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func (d *Dao) rowKey(mid int64) (res string) {
|
||||
res = fmt.Sprintf("%d", mid)
|
||||
return
|
||||
}
|
||||
|
||||
func (d *Dao) rowVerKey(mid int64, now time.Time) (res string) {
|
||||
res = fmt.Sprintf("%d_%d", mid, d.Version(now))
|
||||
return
|
||||
}
|
||||
|
||||
// PutSpyScore add spy score info.
|
||||
func (d *Dao) PutSpyScore(c context.Context, mid int64, score int8) (err error) {
|
||||
var (
|
||||
key = d.rowKey(mid)
|
||||
scoreB = make([]byte, 8)
|
||||
ctx, cancel = context.WithTimeout(c, time.Duration(conf.Conf.HBase.WriteTimeout))
|
||||
)
|
||||
defer cancel()
|
||||
log.Info("Put spy score key [%s] score [%d]", key, score)
|
||||
binary.BigEndian.PutUint64(scoreB, uint64(score))
|
||||
values := map[string]map[string][]byte{model.USFamilyUser: map[string][]byte{model.USColumnSpyScore: scoreB}}
|
||||
if _, err = d.hbase.PutStr(ctx, model.UserInfoTable, key, values); err != nil {
|
||||
log.Error("hbase.Put error(%v)", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// PutReplyAct add spy score info.
|
||||
func (d *Dao) PutReplyAct(c context.Context, mid int64, column string, incr int64) (err error) {
|
||||
var (
|
||||
key = d.rowVerKey(mid, time.Now())
|
||||
ctx, cancel = context.WithTimeout(c, time.Duration(conf.Conf.HBase.WriteTimeout))
|
||||
)
|
||||
defer cancel()
|
||||
log.Info("Put reply act key [%s] c [%s] incr [%d]", key, column, incr)
|
||||
bytesBuffer := bytes.NewBuffer([]byte{})
|
||||
binary.Write(bytesBuffer, binary.BigEndian, incr)
|
||||
values := map[string]map[string][]byte{model.ACFamilyUser: map[string][]byte{column: bytesBuffer.Bytes()}}
|
||||
if _, err = d.hbase.Increment(ctx, model.ActionCounterTable, key, values); err != nil {
|
||||
err = errors.Wrapf(err, "msg(%d,%s,%d), hbase.Increment(key: %s values: %v)", mid, column, incr, key, values)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// PutCoinUnusual coin unusual.
|
||||
func (d *Dao) PutCoinUnusual(c context.Context, mid int64, column string) (err error) {
|
||||
var (
|
||||
key = d.rowVerKey(mid, time.Now())
|
||||
incrBytes = make([]byte, 8)
|
||||
ctx, cancel = context.WithTimeout(c, time.Duration(conf.Conf.HBase.WriteTimeout))
|
||||
)
|
||||
defer cancel()
|
||||
log.Info("Put coin unusual key [%s] c [%s]", key, column)
|
||||
binary.BigEndian.PutUint64(incrBytes, uint64(1))
|
||||
values := map[string]map[string][]byte{model.ACFamilyUser: map[string][]byte{column: incrBytes}}
|
||||
if _, err = d.hbase.Increment(ctx, model.ActionCounterTable, key, values); err != nil {
|
||||
err = errors.Wrapf(err, "msg(%d,%s), hbase.Increment(key: %s values: %v)", mid, column, key, values)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// PutCoinCount coin count.
|
||||
func (d *Dao) PutCoinCount(c context.Context, mid int64) (err error) {
|
||||
var (
|
||||
key = d.rowVerKey(mid, time.Now())
|
||||
incrBytes = make([]byte, 8)
|
||||
ctx, cancel = context.WithTimeout(c, time.Duration(conf.Conf.HBase.WriteTimeout))
|
||||
)
|
||||
defer cancel()
|
||||
log.Info("Put coin count key [%s]", key)
|
||||
binary.BigEndian.PutUint64(incrBytes, uint64(1))
|
||||
values := map[string]map[string][]byte{model.ACFamilyUser: map[string][]byte{model.ACColumnCoins: incrBytes}}
|
||||
if _, err = d.hbase.Increment(ctx, model.ActionCounterTable, key, values); err != nil {
|
||||
err = errors.Wrapf(err, "msg(%d), hbase.Increment(key: %s values: %v)", mid, key, values)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// PayOrderInfo user pay order info.
|
||||
func (d *Dao) PayOrderInfo(c context.Context, column string, mid, money int64) (err error) {
|
||||
var (
|
||||
key = d.rowVerKey(mid, time.Now())
|
||||
incrBytes = make([]byte, 8)
|
||||
ctx, cancel = context.WithTimeout(c, time.Duration(conf.Conf.HBase.WriteTimeout))
|
||||
)
|
||||
defer cancel()
|
||||
log.Info("Pay Order key [%s]", key)
|
||||
binary.BigEndian.PutUint64(incrBytes, uint64(money))
|
||||
values := map[string]map[string][]byte{model.ACFamilyUser: map[string][]byte{column: incrBytes}}
|
||||
if _, err = d.hbase.Increment(ctx, model.ActionCounterTable, key, values); err != nil {
|
||||
err = errors.Wrapf(err, "msg(%d,%s,%d), hbase.Increment(key: %s values: %v)", mid, column, key, values)
|
||||
}
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user