123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package service
- import (
- "context"
- "go-common/app/admin/main/dm/model"
- "go-common/library/ecode"
- "go-common/library/log"
- "go-common/library/sync/errgroup"
- )
- // MonitorList get monitor list
- func (s *Service) MonitorList(c context.Context, tp int32, pid, oid, mid int64, state int32, kw, sort, order string, page, size int64) (res *model.MonitorResult, err error) {
- var attr int32
- if state > 0 {
- if state == model.MonitorBefore {
- attr = int32(model.AttrSubMonitorBefore) + 1
- } else {
- attr = int32(model.AttrSubMonitorAfter) + 1
- }
- }
- data, err := s.dao.SearchMonitor(c, tp, pid, oid, mid, attr, kw, sort, order, page, size)
- if err != nil {
- log.Error("dao.SearchMonitor(pid:%d,oid:%d) error(%v)", pid, oid, err)
- return
- }
- res = &model.MonitorResult{
- Order: data.Order,
- Sort: data.Sort,
- Page: data.Page.Num,
- PageSize: data.Page.Size,
- Total: data.Page.Total,
- Result: make([]*model.Monitor, 0, len(data.Result)),
- }
- for _, v := range data.Result {
- m := &model.Monitor{
- ID: v.ID,
- Type: v.Type,
- Pid: v.Pid,
- Oid: v.Oid,
- MCount: v.MCount,
- Ctime: v.Ctime,
- Mtime: v.Mtime,
- Mid: v.Mid,
- Title: v.Title,
- Author: v.Author,
- }
- if v.Attr>>model.AttrSubMonitorBefore&1 == model.AttrYes {
- m.State = model.MonitorBefore
- } else {
- m.State = model.MonitorAfter
- }
- res.Result = append(res.Result, m)
- }
- return
- }
- // UpdateMonitor update monitor state of dm subject.
- func (s *Service) UpdateMonitor(c context.Context, tp int32, oids []int64, state int32) (affect int64, err error) {
- var wg errgroup.Group
- subs, err := s.dao.Subjects(c, tp, oids)
- if err != nil {
- return
- }
- for _, v := range subs {
- sub := v
- switch state {
- case model.MonitorClosed:
- sub.AttrSet(model.AttrNo, model.AttrSubMonitorBefore)
- sub.AttrSet(model.AttrNo, model.AttrSubMonitorAfter)
- case model.MonitorBefore:
- sub.AttrSet(model.AttrYes, model.AttrSubMonitorBefore)
- sub.AttrSet(model.AttrNo, model.AttrSubMonitorAfter)
- case model.MonitorAfter:
- sub.AttrSet(model.AttrNo, model.AttrSubMonitorBefore)
- sub.AttrSet(model.AttrYes, model.AttrSubMonitorAfter)
- default:
- err = ecode.RequestErr
- return
- }
- wg.Go(func() (err error) {
- aft, err := s.dao.UpSubjectAttr(context.TODO(), tp, sub.Oid, sub.Attr)
- if err != nil {
- return
- }
- affect = affect + aft
- return
- })
- }
- err = wg.Wait()
- return
- }
- // updateMonitorCnt update mcount of subject.
- func (s *Service) updateMonitorCnt(c context.Context, sub *model.Subject) (err error) {
- var state, mcount int64
- if sub.AttrVal(model.AttrSubMonitorBefore) == model.AttrYes {
- state = int64(model.StateMonitorBefore)
- } else if sub.AttrVal(model.AttrSubMonitorAfter) == model.AttrYes {
- state = int64(model.StateMonitorAfter)
- } else {
- return
- }
- if mcount, err = s.dao.DMCount(c, sub.Type, sub.Oid, []int64{state}); err != nil {
- return
- }
- _, err = s.dao.UpSubjectMCount(c, sub.Type, sub.Oid, mcount)
- return
- }
|