Create & Init Project...
This commit is contained in:
199
app/admin/main/workflow/service/wlog.go
Normal file
199
app/admin/main/workflow/service/wlog.go
Normal file
@ -0,0 +1,199 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"go-common/app/admin/main/workflow/model"
|
||||
"go-common/app/admin/main/workflow/model/search"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
"go-common/library/queue/databus/report"
|
||||
)
|
||||
|
||||
const (
|
||||
_wkfReplyLog = 11
|
||||
_wkfAuditLog = 12
|
||||
)
|
||||
|
||||
// LastLog .
|
||||
func (s *Service) LastLog(c context.Context, targets []int64, modules []int) (logs map[int64]string, err error) {
|
||||
var (
|
||||
resp *search.AuditLogSearchCommonResult
|
||||
uids []int64
|
||||
uNames map[int64]string
|
||||
)
|
||||
logs = make(map[int64]string)
|
||||
if len(targets) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
cond := &search.AuditReportSearchCond{
|
||||
Fields: []string{"int_1", "ctime", "str_0", "uid"},
|
||||
Business: _wkfAuditLog,
|
||||
Type: modules,
|
||||
Order: "ctime",
|
||||
Sort: "desc",
|
||||
Int1: targets,
|
||||
Distinct: "int_1",
|
||||
IndexTimeType: "year",
|
||||
IndexTimeFrom: time.Now().AddDate(-1, 0, 0),
|
||||
IndexTimeEnd: time.Now(),
|
||||
}
|
||||
if resp, err = s.dao.SearchAuditReportLog(c, cond); err != nil {
|
||||
log.Error("s.dao.SearchAuditReportLog(%+v) error(%v)", cond, err)
|
||||
return
|
||||
}
|
||||
if resp == nil {
|
||||
log.Error("len resp.result == 0")
|
||||
err = ecode.Degrade
|
||||
return
|
||||
}
|
||||
// wrap uname
|
||||
for _, l := range resp.Result {
|
||||
uids = append(uids, l.UID)
|
||||
}
|
||||
if uNames, err = s.dao.BatchUNameByUID(c, uids); err != nil {
|
||||
log.Error("s.dao.SearchUNameByUid(%v) error(%v)", uids, err)
|
||||
err = nil
|
||||
}
|
||||
for _, l := range resp.Result {
|
||||
logs[l.Int1] = fmt.Sprintf("%s\n操作时间:%s\n操作人:", l.Str0, l.CTime)
|
||||
if uname, ok := uNames[l.UID]; ok {
|
||||
logs[l.Int1] = fmt.Sprint(logs[l.Int1], uname)
|
||||
} else {
|
||||
logs[l.Int1] = fmt.Sprint(logs[l.Int1], l.UID)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// LastLogStat .
|
||||
func (s *Service) LastLogStat(c context.Context, targets []int64, modules []int, fields []string) (logs map[int64]*search.ReportLog, err error) {
|
||||
var resp *search.AuditLogSearchCommonResult
|
||||
logs = make(map[int64]*search.ReportLog)
|
||||
if len(targets) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
cond := &search.AuditReportSearchCond{
|
||||
Fields: fields,
|
||||
Business: _wkfAuditLog,
|
||||
Type: modules,
|
||||
Order: "ctime",
|
||||
Sort: "desc",
|
||||
Int1: targets,
|
||||
Distinct: "int_1",
|
||||
IndexTimeType: "year",
|
||||
IndexTimeFrom: time.Now().AddDate(-1, 0, 0),
|
||||
IndexTimeEnd: time.Now(),
|
||||
}
|
||||
if resp, err = s.dao.SearchAuditReportLog(c, cond); err != nil {
|
||||
log.Error("s.dao.SearchAuditReportLog(%+v) error(%v)", cond, err)
|
||||
return
|
||||
}
|
||||
if resp == nil {
|
||||
log.Error("len resp.result == 0")
|
||||
err = ecode.NothingFound
|
||||
return
|
||||
}
|
||||
|
||||
for _, l := range resp.Result {
|
||||
logs[l.Int1] = l
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// AllAuditLog search all audit log of target & modules
|
||||
func (s *Service) AllAuditLog(c context.Context, target int64, modules []int) (logs []*model.WLog, err error) {
|
||||
var (
|
||||
resp *search.AuditLogSearchCommonResult
|
||||
uids []int64
|
||||
uNames map[int64]string
|
||||
)
|
||||
|
||||
if target == 0 {
|
||||
return
|
||||
}
|
||||
cond := &search.AuditReportSearchCond{
|
||||
Fields: []string{"int_1", "ctime", "str_0", "uid", "uname"},
|
||||
Business: _wkfAuditLog,
|
||||
Type: modules,
|
||||
Order: "ctime",
|
||||
Sort: "desc",
|
||||
Int1: []int64{target},
|
||||
IndexTimeType: "year",
|
||||
IndexTimeFrom: time.Now().AddDate(-1, 0, 0),
|
||||
IndexTimeEnd: time.Now(),
|
||||
}
|
||||
if resp, err = s.dao.SearchAuditReportLog(c, cond); err != nil {
|
||||
log.Error("s.dao.SearchAuditReportLog(%+v) error(%v)", cond, err)
|
||||
return
|
||||
}
|
||||
if resp == nil {
|
||||
log.Error("len resp.result == 0")
|
||||
err = ecode.Degrade
|
||||
return
|
||||
}
|
||||
// wrap uname
|
||||
for _, l := range resp.Result {
|
||||
uids = append(uids, l.UID)
|
||||
}
|
||||
if uNames, err = s.dao.BatchUNameByUID(c, uids); err != nil {
|
||||
log.Error("s.dao.SearchUNameByUid(%v) error(%v)", uids, err)
|
||||
err = nil
|
||||
}
|
||||
|
||||
for _, r := range resp.Result {
|
||||
wl := &model.WLog{
|
||||
AdminID: r.UID,
|
||||
Admin: r.UName,
|
||||
Target: r.Int1,
|
||||
Remark: r.Str0,
|
||||
}
|
||||
t, _ := time.ParseInLocation("2006-01-02 15:04:05", r.CTime, time.Local)
|
||||
wl.CTime.Scan(t)
|
||||
wl.Admin = uNames[wl.AdminID]
|
||||
logs = append(logs, wl)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Service) writeAuditLog(l *model.WLog) {
|
||||
var err error
|
||||
info := &report.ManagerInfo{
|
||||
Uname: l.Admin,
|
||||
UID: l.AdminID,
|
||||
Business: _wkfAuditLog,
|
||||
Type: int(l.Module),
|
||||
Oid: l.Oid,
|
||||
Action: "audit_log",
|
||||
Ctime: time.Now(),
|
||||
Index: []interface{}{l.Business, l.Target, l.TimeConsume, l.Mid, l.Remark, l.Note, l.OpType, l.PreRid},
|
||||
Content: map[string]interface{}{"wlog": l, "param": l.Param, "mids": l.Mids},
|
||||
}
|
||||
log.Info("start report audit log target:%v oid:%v uid:%v business:%v mid:%v", l.Target, l.Oid, l.AdminID, l.Business, l.Mid)
|
||||
if err = report.Manager(info); err != nil {
|
||||
log.Error("failed to produce report.Manager(%+v), err(%v)", info, err)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Service) writeReplyLog(l *model.WLog) {
|
||||
var err error
|
||||
info := &report.ManagerInfo{
|
||||
Uname: l.Admin,
|
||||
UID: l.AdminID,
|
||||
Business: _wkfReplyLog,
|
||||
Type: int(l.Module),
|
||||
Oid: l.Oid,
|
||||
Action: "reply_log",
|
||||
Ctime: time.Now(),
|
||||
Index: []interface{}{l.Business, l.Target, l.Mid, l.Remark, l.Note},
|
||||
Content: map[string]interface{}{"wlog": l},
|
||||
}
|
||||
log.Info("start report reply log target:%v oid:%v uid:%v business:%v mid:%v", l.Target, l.Oid, l.AdminID, l.Business, l.Mid)
|
||||
if err = report.Manager(info); err != nil {
|
||||
log.Error("failed to produce report.Manager(%+v), err(%v)", info, err)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user