You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.8 KiB
73 lines
1.8 KiB
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 |
|
}
|
|
|