cow.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package backend
  2. import (
  3. "context"
  4. "kpt-pasture/model"
  5. "net/http"
  6. "strings"
  7. "gitee.com/xuyiping_admin/pkg/xerr"
  8. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  9. )
  10. func (s *StoreEntry) CowList(ctx context.Context, req *pasturePb.SearchEventRequest, pagination *pasturePb.PaginationModel) (*pasturePb.SearchCowListResponse, error) {
  11. cowList := make([]*model.Cow, 0)
  12. var count int64 = 0
  13. pref := s.DB.Model(&model.Cow{}).
  14. Where("admission_status = ?", pasturePb.AdmissionStatus_Admission)
  15. if len(req.CowId) > 0 {
  16. cowIds := strings.Split(req.CowId, ",")
  17. pref.Where("id IN ?", cowIds)
  18. }
  19. if req.EarNumber != "" {
  20. pref.Where("ear_number LIKE ?", "%"+req.EarNumber+"%")
  21. }
  22. if err := pref.Order("id desc").
  23. Count(&count).Limit(int(pagination.PageSize)).
  24. Offset(int(pagination.PageOffset)).
  25. Find(&cowList).Error; err != nil {
  26. return nil, xerr.WithStack(err)
  27. }
  28. penMap := s.PenMap(ctx)
  29. cowTypeMap := s.CowTypeMap()
  30. breedStatusMap := s.CowBreedStatusMap()
  31. cowKindMap := s.CowKindMap()
  32. return &pasturePb.SearchCowListResponse{
  33. Code: http.StatusOK,
  34. Message: "ok",
  35. Data: &pasturePb.SearchCowData{
  36. List: model.CowSlice(cowList).ToPB(penMap, cowTypeMap, breedStatusMap, cowKindMap),
  37. Total: int32(count),
  38. PageSize: pagination.PageSize,
  39. Page: pagination.Page,
  40. },
  41. }, nil
  42. }
  43. func (s *StoreEntry) CowDetail(ctx context.Context, req *pasturePb.SearchEventRequest) {
  44. }