package pusher import ( "context" "joybuywork/internal/consts/ckey" "joybuywork/internal/service/provider/cachecurd" "joybuywork/internal/utils/verify" "time" ) const ( groupSec = 300 ) type pushGroup struct { one, two, three *cachecurd.HMap oneBt, twoBt, threeBt [2]int64 } func (s *pushGroup) insideOne(doneAt int64) bool { return verify.Inside[int64](doneAt, s.oneBt[0], s.oneBt[1]) } func (s *pushGroup) insideTwo(doneAt int64) bool { return verify.Inside[int64](doneAt, s.twoBt[0], s.twoBt[1]) } func (s *pushGroup) insideThree(doneAt int64) bool { return verify.Inside[int64](doneAt, s.threeBt[0], s.threeBt[1]) } func newPushGroup(ctx context.Context, t time.Time, cpnId int64, mark string) *pushGroup { var base = t.Minute() / 5 one, two, three := base+1, base+2, base+3 if two > 12 { two -= 12 } if three > 12 { three -= 12 } pg := &pushGroup{} pg.one, _ = cachecurd.NewHMap(ctx, ckey.FissionPushUserGroup(cpnId, mark, one), cachecurd.SetHMapExp(16*time.Minute)) pg.two, _ = cachecurd.NewHMap(ctx, ckey.FissionPushUserGroup(cpnId, mark, two), cachecurd.SetHMapExp(16*time.Minute)) pg.three, _ = cachecurd.NewHMap(ctx, ckey.FissionPushUserGroup(cpnId, mark, three), cachecurd.SetHMapExp(16*time.Minute)) pg.oneBt = [2]int64{t.Unix() - 3*groupSec, t.Unix() - 2*groupSec} pg.twoBt = [2]int64{t.Unix() - 2*groupSec, t.Unix() - groupSec} pg.threeBt = [2]int64{t.Unix() - groupSec, t.Unix()} return pg }