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.
103 lines
2.6 KiB
103 lines
2.6 KiB
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 |
|
}
|
|
|