123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- 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
- }
|