bilibili-backup/app/admin/main/reply/dao/logReport.go
2019-04-22 02:59:20 +00:00

104 lines
2.6 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package dao
import (
"context"
"strconv"
"go-common/app/admin/main/reply/model"
"go-common/library/database/elastic"
"go-common/library/ecode"
"go-common/library/log"
"strings"
"time"
)
const (
// log api
_logURL = "/x/admin/search/log"
)
// ReportLogData report log data
type ReportLogData struct {
Sort string `json:"sort"`
Order string `json:"order"`
Page model.Page `json:"page"`
Result []*ReportLogResult `json:"result"`
}
// ReportLogResult ReportLogResult
type ReportLogResult struct {
AdminName string `json:"uname"`
AdminID int64 `json:"uid"`
Business int64 `json:"business"`
Type int32 `json:"type"`
Oid int64 `json:"oid"`
OidStr string `json:"oid_str"`
Action string `json:"action"`
Ctime string `json:"ctime"`
Index0 int64 `json:"int_0"`
Index1 int64 `json:"int_1"`
Index2 int64 `json:"int_2"`
Content string `json:"extra_data"`
}
// ReportLog get notice info.
func (d *Dao) ReportLog(c context.Context, sp model.LogSearchParam) (data *ReportLogData, err error) {
var (
// log_audit评论的索引是按时间分区的最早的数据是2018年的所以这里最早时间是写死的2018年
stime = time.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC)
etime = time.Now()
)
if sp.CtimeFrom != "" {
if stime, err = time.Parse(model.DateFormat, sp.CtimeFrom); err != nil {
log.Error("time.Parse(%v) error", sp.CtimeFrom)
stime = time.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC)
}
}
if sp.CtimeTo != "" {
if etime, err = time.Parse(model.DateFormat, sp.CtimeTo); err != nil {
log.Error("time.Parse(%v) error", sp.CtimeTo)
etime = time.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC)
}
}
action := strings.Split(sp.Action, ",")
r := d.es.NewRequest("log_audit").IndexByTime("log_audit_41", elastic.IndexTypeYear, stime, etime).WhereIn("action", action).
WhereRange("ctime", stime.Format(model.DateFormat), etime.Format(model.DateFormat), elastic.RangeScopeLcRc)
if sp.Pn <= 0 {
sp.Pn = 1
}
if sp.Ps <= 0 {
sp.Ps = 20
}
if sp.Order == "" {
sp.Order = "ctime"
}
if sp.Sort == "" {
sp.Sort = "desc"
}
r = r.Order(sp.Order, sp.Sort).Pn(int(sp.Pn)).Ps(int(sp.Ps))
if sp.Oid > 0 {
r = r.WhereEq("oid", strconv.FormatInt(sp.Oid, 10))
}
if sp.Mid > 0 {
r = r.WhereEq("int_0", sp.Mid)
}
if sp.Type > 0 {
r = r.WhereEq("type", sp.Type)
}
if sp.Other > 0 {
r = r.WhereEq("int_1", sp.Other)
}
log.Warn(r.Params())
err = r.Scan(c, &data)
if err != nil {
log.Error("r.Scan(%v) error(%v)", c, err)
return
}
if data == nil {
err = ecode.ServerErr
log.Error("log_audit error")
return
}
return
}