package backend import ( "context" "kpt-pasture/model" "net/http" "strings" "gitee.com/xuyiping_admin/pkg/xerr" pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow" ) func (s *StoreEntry) CowList(ctx context.Context, req *pasturePb.SearchEventRequest, pagination *pasturePb.PaginationModel) (*pasturePb.SearchCowListResponse, error) { cowList := make([]*model.Cow, 0) var count int64 = 0 pref := s.DB.Model(&model.Cow{}). Where("admission_status = ?", pasturePb.AdmissionStatus_Admission) if len(req.CowId) > 0 { cowIds := strings.Split(req.CowId, ",") pref.Where("id IN ?", cowIds) } if req.EarNumber != "" { pref.Where("ear_number LIKE ?", "%"+req.EarNumber+"%") } if err := pref.Order("id desc"). Count(&count).Limit(int(pagination.PageSize)). Offset(int(pagination.PageOffset)). Find(&cowList).Error; err != nil { return nil, xerr.WithStack(err) } penMap := s.PenMap(ctx) cowTypeMap := s.CowTypeMap() breedStatusMap := s.CowBreedStatusMap() cowKindMap := s.CowKindMap() return &pasturePb.SearchCowListResponse{ Code: http.StatusOK, Message: "ok", Data: &pasturePb.SearchCowData{ List: model.CowSlice(cowList).ToPB(penMap, cowTypeMap, breedStatusMap, cowKindMap), Total: int32(count), PageSize: pagination.PageSize, Page: pagination.Page, }, }, nil } func (s *StoreEntry) CowDetail(ctx context.Context, req *pasturePb.SearchEventRequest) { }