calculation_unit.go 816 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package service
  2. import (
  3. "sportfitness/base/assembly/heartRate/model"
  4. "sportfitness/base/assembly/heartRate/repository/postgre"
  5. "sportfitness/base/assembly/heartRate/repository/redis"
  6. "github.com/sirupsen/logrus"
  7. )
  8. type CalculationUnit struct {
  9. }
  10. func (CalculationUnit) calculate(src model.BandData) (result model.HrCourseDetail) {
  11. // TODO 实现计算
  12. return
  13. }
  14. func (c CalculationUnit) loop() {
  15. data, err := redis.GetHubBandData()
  16. if err != nil {
  17. logrus.Errorf("接收心率数据失败:%s", err)
  18. return
  19. }
  20. if len(data) == 0 {
  21. return
  22. }
  23. postgre.PGHr{}.SaveHrBatch(data)
  24. var results []model.HrCourseDetail
  25. for _, one := range data {
  26. results = append(results, c.calculate(one))
  27. }
  28. redis.HrStoreR4(results)
  29. }
  30. func (c CalculationUnit) Run() {
  31. go func() {
  32. for {
  33. c.loop()
  34. }
  35. }()
  36. }