analysis_more.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package backend
  2. import (
  3. "context"
  4. "kpt-pasture/model"
  5. "net/http"
  6. "time"
  7. "gitee.com/xuyiping_admin/pkg/xerr"
  8. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  9. )
  10. func (s *StoreEntry) PenBehavior(ctx context.Context, req *pasturePb.BarnBehaviorCurveRequest) (*pasturePb.BarnBehaviorCurveResponse, error) {
  11. userModel, err := s.GetUserModel(ctx)
  12. if err != nil {
  13. return nil, err
  14. }
  15. if req.StartAt == 0 || req.EndAt == 0 || req.EndAt < req.StartAt {
  16. return nil, xerr.Customf("时间范围错误")
  17. }
  18. startTime := time.Unix(int64(req.StartAt), 0).Format(model.LayoutDate2)
  19. endTime := time.Unix(int64(req.EndAt), 0).Format(model.LayoutDate2)
  20. penBehaviorList := make([]*model.PenBehavior, 0)
  21. if err = s.DB.Model(new(model.PenBehavior)).
  22. Where("pasture_id = ?", userModel.AppPasture.Id).
  23. Where("pen_id = ?", req.BarnId).
  24. Where("heat_date BETWEEN ? AND ?", startTime, endTime).
  25. Find(&penBehaviorList).Error; err != nil {
  26. return nil, err
  27. }
  28. return &pasturePb.BarnBehaviorCurveResponse{
  29. Code: http.StatusOK,
  30. Msg: "ok",
  31. Data: model.PenBehaviorSlice(penBehaviorList).ToPB(),
  32. }, nil
  33. }