96 lines
2.2 KiB
Go
96 lines
2.2 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"go-common/app/admin/main/member/model"
|
|
"go-common/library/log"
|
|
"go-common/library/queue/databus/report"
|
|
)
|
|
|
|
const (
|
|
_logActionMonitorAdd = "monitor_user_add"
|
|
_logActionMonitorDel = "monitor_user_del"
|
|
)
|
|
|
|
// Monitors is.
|
|
func (s *Service) Monitors(ctx context.Context, arg *model.ArgMonitor) ([]*model.Monitor, int, error) {
|
|
includeDeleted := false
|
|
if arg.Mid > 0 {
|
|
includeDeleted = true
|
|
}
|
|
mns, total, err := s.dao.Monitors(ctx, arg.Mid, includeDeleted, arg.Pn, arg.Ps)
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
s.monitorsName(ctx, mns)
|
|
return mns, total, nil
|
|
}
|
|
|
|
// AddMonitor is.
|
|
func (s *Service) AddMonitor(ctx context.Context, arg *model.ArgAddMonitor) error {
|
|
remark := fmt.Sprintf("加入监控列表:%s", arg.Remark)
|
|
if err := s.dao.AddMonitor(ctx, arg.Mid, arg.Operator, remark); err != nil {
|
|
return err
|
|
}
|
|
report.Manager(&report.ManagerInfo{
|
|
Uname: arg.Operator,
|
|
UID: arg.OperatorID,
|
|
Business: model.ManagerLogID,
|
|
Type: 0,
|
|
Oid: arg.Mid,
|
|
Action: _logActionMonitorAdd,
|
|
Ctime: time.Now(),
|
|
// extra
|
|
Index: []interface{}{},
|
|
Content: map[string]interface{}{
|
|
"remark": remark,
|
|
},
|
|
})
|
|
return nil
|
|
}
|
|
|
|
// DelMonitor is.
|
|
func (s *Service) DelMonitor(ctx context.Context, arg *model.ArgDelMonitor) error {
|
|
remark := fmt.Sprintf("移出监控列表:%s", arg.Remark)
|
|
if err := s.dao.DelMonitor(ctx, arg.Mid, arg.Operator, remark); err != nil {
|
|
return err
|
|
}
|
|
report.Manager(&report.ManagerInfo{
|
|
Uname: arg.Operator,
|
|
UID: arg.OperatorID,
|
|
Business: model.ManagerLogID,
|
|
Type: 0,
|
|
Oid: arg.Mid,
|
|
Action: _logActionMonitorDel,
|
|
Ctime: time.Now(),
|
|
// extra
|
|
Index: []interface{}{},
|
|
Content: map[string]interface{}{
|
|
"remark": remark,
|
|
},
|
|
})
|
|
return nil
|
|
}
|
|
|
|
func (s *Service) monitorsName(ctx context.Context, mns []*model.Monitor) {
|
|
mids := make([]int64, 0, len(mns))
|
|
for _, mn := range mns {
|
|
mids = append(mids, mn.Mid)
|
|
}
|
|
bs, err := s.dao.Bases(ctx, mids)
|
|
if err != nil {
|
|
log.Error("Failed to fetch bases with mids: %+v: %+v", mids, err)
|
|
return
|
|
}
|
|
for _, mn := range mns {
|
|
b, ok := bs[mn.Mid]
|
|
if !ok {
|
|
continue
|
|
}
|
|
mn.Name = b.Name
|
|
}
|
|
}
|