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.
77 lines
1.9 KiB
77 lines
1.9 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"time" |
|
|
|
"go-common/app/job/main/aegis/model" |
|
"go-common/library/log" |
|
) |
|
|
|
func (s *Service) reportSubmit(c context.Context, old, new *model.Task) { |
|
s.reportTaskFinish(c, new) |
|
stfield := fmt.Sprintf(model.Submit, new.State, old.UID) |
|
s.dao.IncresByField(c, new.BusinessID, new.FlowID, new.UID, stfield, 1) |
|
s.dao.IncresByField(c, new.BusinessID, new.FlowID, new.UID, model.UseTime, new.Utime) |
|
|
|
//统计资源的通过,打回什么的,只统计任务列表操作; 异步统计,免得干扰缓存的同步速度 |
|
if old.UID == new.UID && new.State == model.TaskStateSubmit { |
|
select { |
|
case s.chanReport <- &model.RIR{ |
|
BizID: new.BusinessID, |
|
FlowID: new.FlowID, |
|
UID: new.UID, |
|
RID: new.RID, |
|
}: |
|
case <-time.NewTimer(time.Millisecond * 10).C: |
|
log.Error("reportSubmit chanfull") |
|
} |
|
} |
|
} |
|
|
|
func (s *Service) reportResource(c context.Context, bizid, flowid, rid, uid int64) { |
|
st, err := s.dao.RscState(c, rid) |
|
if err != nil { |
|
log.Error("reportResource RscState(%d) error(%v)", rid, err) |
|
return |
|
} |
|
field := fmt.Sprintf(model.RscState, st) |
|
s.dao.IncresByField(c, bizid, flowid, uid, field, 1) |
|
} |
|
|
|
func (s *Service) syncReport(c context.Context) { |
|
datas, err := s.dao.FlushReport(c) |
|
if err != nil { |
|
log.Error("FlushReport error(%v)", err) |
|
return |
|
} |
|
if len(datas) == 0 { |
|
return |
|
} |
|
|
|
for key, val := range datas { |
|
tp, bizid, flowid, uid, err := model.ParseKey(key) |
|
if err != nil { |
|
log.Error("syncReport ParseKey(%s)", key) |
|
continue |
|
} |
|
|
|
rt := &model.Report{ |
|
BusinessID: int64(bizid), |
|
FlowID: int64(flowid), |
|
UID: int64(uid), |
|
TYPE: tp, |
|
Content: val, |
|
} |
|
s.dao.Report(c, rt) |
|
} |
|
} |
|
|
|
func (s *Service) reportTaskCreate(c context.Context, new *model.Task) { |
|
s.dao.IncresTaskInOut(c, new.BusinessID, new.FlowID, "in") |
|
} |
|
|
|
func (s *Service) reportTaskFinish(c context.Context, new *model.Task) { |
|
s.dao.IncresTaskInOut(c, new.BusinessID, new.FlowID, "out") |
|
}
|
|
|