74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"time"
|
|
|
|
pb "go-common/app/service/main/coin/api"
|
|
"go-common/app/service/main/coin/model"
|
|
"go-common/library/database/elastic"
|
|
"go-common/library/log"
|
|
"go-common/library/queue/databus/report"
|
|
)
|
|
|
|
// AddLog .
|
|
func (d *Dao) AddLog(mid, ts int64, from, to float64, reason, ip, operator string, oid int64, typ int) {
|
|
report.User(&report.UserInfo{
|
|
Mid: mid,
|
|
Business: model.ReportType,
|
|
IP: ip,
|
|
Type: typ,
|
|
Ctime: time.Unix(ts, 0),
|
|
Index: []interface{}{operator},
|
|
Oid: oid,
|
|
Content: map[string]interface{}{
|
|
"from": int64(from * _multi),
|
|
"to": int64(to * _multi),
|
|
"reason": reason,
|
|
},
|
|
})
|
|
}
|
|
|
|
// CoinLog .
|
|
func (d *Dao) CoinLog(c context.Context, mid int64) (ls []*pb.ModelLog, err error) {
|
|
t := time.Now()
|
|
from := t.Add(-time.Hour * 24 * 7)
|
|
var res struct {
|
|
Page struct {
|
|
Num int `json:"num"`
|
|
Size int `json:"size"`
|
|
Total int `json:"total"`
|
|
} `json:"page"`
|
|
Result []*report.UserActionLog `json:"result"`
|
|
}
|
|
err = d.es.NewRequest("log_user_action").
|
|
IndexByTime("log_user_action_21", elastic.IndexTypeWeek, from, time.Now()).
|
|
WhereEq("mid", mid).
|
|
WhereRange("ctime", from.Format("2006-01-02 15:04:05"), "", elastic.RangeScopeLcRc).
|
|
Pn(1).Ps(1000).Order("ctime", elastic.OrderDesc).
|
|
Scan(c, &res)
|
|
if err != nil {
|
|
log.Error("coineslog mid: %v, err: %v", mid, err)
|
|
PromError("log:es")
|
|
return
|
|
}
|
|
for _, r := range res.Result {
|
|
ts, _ := time.ParseInLocation("2006-01-02 15:04:05", r.Ctime, time.Local)
|
|
var ex struct {
|
|
From int64
|
|
To int64
|
|
Reason string
|
|
}
|
|
json.Unmarshal([]byte(r.Extra), &ex)
|
|
ls = append(ls, &pb.ModelLog{
|
|
From: float64(ex.From) / _multi,
|
|
To: float64(ex.To) / _multi,
|
|
IP: r.IP,
|
|
Desc: ex.Reason,
|
|
TimeStamp: ts.Unix(),
|
|
})
|
|
}
|
|
return
|
|
}
|