104 lines
2.6 KiB
Go
104 lines
2.6 KiB
Go
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
|
||
}
|