123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- package backend
- import (
- "bytes"
- "context"
- "encoding/json"
- "fmt"
- "io/ioutil"
- "kpt-pasture/model"
- "net/http"
- "time"
- feedingPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
- "gitee.com/xuyiping_admin/pkg/logger/zaplog"
- "gitee.com/xuyiping_admin/pkg/xerr"
- "go.uber.org/zap"
- )
- type FeedingHttp struct {
- authClient *http.Client
- }
- func NewFeedingService() *FeedingHttp {
- return &FeedingHttp{
- authClient: &http.Client{
- Timeout: time.Duration(60) * time.Second,
- },
- }
- }
- func (c *FeedingHttp) doRequest(req *http.Request, response interface{}) ([]byte, error) {
- resp, err := http.DefaultClient.Do(req)
- if err != nil {
- zaplog.Error("ClientService", zap.Any("authClient.Do", err))
- return nil, xerr.WithStack(err)
- }
- b, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- zaplog.Error("ClientService", zap.Any("ioutil.ReadAll", err))
- return nil, xerr.WithStack(err)
- }
- if resp.StatusCode != http.StatusOK {
- if len(b) > 0 {
- return nil, xerr.Customf("err:%v,body:%s", err, string(b))
- } else {
- return nil, xerr.Customf("err:%v", err)
- }
- }
- fmt.Println(string(b))
- if err = json.Unmarshal(b, response); err != nil {
- return nil, xerr.WithStack(err)
- }
- return b, nil
- }
- func (c *FeedingHttp) DoGet(url string, response interface{}) ([]byte, error) {
- req, err := http.NewRequest(http.MethodGet, url, nil)
- if err != nil {
- zaplog.Error("ClientService", zap.Any("DoGet", err))
- return nil, err
- }
- req.Header.Add("Accept", "application/json")
- req.Header.Add("Content-Type", "application/json")
- return c.doRequest(req, response)
- }
- func (c *FeedingHttp) DoPost(url string, body interface{}, response *interface{}) ([]byte, error) {
- b, err := json.Marshal(body)
- if err != nil {
- zaplog.Error("ClientService", zap.Any("DoPost-Marshal", err))
- return nil, xerr.WithStack(err)
- }
- req, err := http.NewRequest(http.MethodPost, url, bytes.NewReader(b))
- if err != nil {
- zaplog.Error("ClientService", zap.Any("NewRequest", err))
- return nil, xerr.WithStack(err)
- }
- req.Header.Add("Accept", "application/json")
- req.Header.Add("Content-Type", "application/json")
- return c.doRequest(req, response)
- }
- func (s *StoreEntry) GetFeedingHomepage(ctx context.Context, req *feedingPb.FeedingHomepageRequest) (*feedingPb.FeedingHomepageResponse, error) {
- var pasture model.AppPastureList
- if err := s.DB.Debug().Table(new(model.AppPastureList).TableName()).Where("farm_id = ?", req.FarmId).First(&pasture).Error; err != nil {
- return nil, xerr.WithStack(err)
- }
- if pasture.PastureId == 0 {
- return nil, xerr.Customf("牧场不存在")
- }
- url := fmt.Sprintf("%s/feeding/tmrdata", pasture.PastureUrl)
- fmt.Println(url)
- client := NewFeedingService()
- response := &model.FeedingHomepageResponse{Data: []*model.FeedingHomepageData{}}
- _, err := client.DoGet(url, response)
- if err != nil {
- return nil, xerr.WithStack(err)
- }
- fmt.Println(response)
- res := &feedingPb.FeedingHomepageResponse{
- Code: response.Code,
- Msg: response.Msg,
- Data: &feedingPb.FeedingHomepageData{},
- }
- for _, v := range response.Data {
- res.Data = &feedingPb.FeedingHomepageData{
- Cost: v.Cost,
- DoneTimes: v.DoneTimes,
- DoneWeight: v.DoneWeight,
- MonRateHL: v.MonRateHL,
- MonRateSL: v.MonRateSL,
- MonRateSLR: v.MonRateSLR,
- Montime: v.Montime,
- PlanTimes: v.PlanTimes,
- PlanWeight: v.PlanWeight,
- Temtime: v.Temtime,
- TotalCost: v.TotalCost,
- YesRateHL: v.YesRateHL,
- YesRateSL: v.YesRateSL,
- YesRateSLR: v.YesRateSLR,
- }
- }
- return res, nil
- }
- func (s *StoreEntry) GetFeedingManagement(ctx context.Context, req *feedingPb.FeedingManagementRequest) (*feedingPb.FeedingManagementResponse, error) {
- var pasture model.AppPastureList
- if err := s.DB.Debug().Table(new(model.AppPastureList).TableName()).Where("farm_id = ?", req.FarmId).First(&pasture).Error; err != nil {
- return nil, xerr.WithStack(err)
- }
- if pasture.PastureId == 0 {
- return nil, xerr.Customf("牧场不存在")
- }
- url := fmt.Sprintf("%s/feeding/management?typea=%s&startdate=%s&enddate=%s", pasture.PastureUrl, req.Typea, req.Startdate, req.Enddate)
- fmt.Println(url)
- client := NewFeedingService()
- response := &model.FeedingManagementResponse{Data: []*model.FeedingManagementData{}}
- _, err := client.DoGet(url, response)
- if err != nil {
- return nil, xerr.WithStack(err)
- }
- fmt.Println(response)
- res := &feedingPb.FeedingManagementResponse{
- Code: response.Code,
- Msg: response.Msg,
- Data: []*feedingPb.FeedingManagementData{},
- }
- for _, v := range response.Data {
- res.Data = append(res.Data, &feedingPb.FeedingManagementData{
- Actualweightminus: v.ActualWeightMinus,
- Ccount: v.CCount,
- Cost: v.Cost,
- Dryweight: v.DryWeight,
- Totalcost: v.TotalCost,
- Typea: v.TypeA,
- })
- }
- return res, nil
- }
|