package model import ( "encoding/json" "gitee.com/xuyiping_admin/pkg/logger/zaplog" "go.uber.org/zap" pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow" ) type SameTime struct { Id int64 `json:"id"` PastureId int64 `json:"pastureId"` Name string `json:"name"` WeekType pasturePb.Week_Kind `json:"weekType"` CowType pasturePb.SameTimeCowType_Kind `json:"cowType"` IsShow pasturePb.IsShow_Kind `json:"isShow"` IsDelete pasturePb.IsShow_Kind `json:"isDelete"` PostpartumDaysStart int32 `json:"postpartumDaysStart"` PostpartumDaysEnd int32 `json:"postpartumDaysEnd"` CollateNodes string `json:"collateNodes"` Remarks string `json:"remarks"` OperationId int64 `json:"operationId"` CreatedAt int64 `json:"createdAt"` UpdatedAt int64 `json:"updatedAt"` } func (e *SameTime) TableName() string { return "same_time" } func NewSameTime(pastureId int64, currentUser *SystemUser, req *pasturePb.SearchSameTimeList) *SameTime { var collateNodes []byte if len(req.CollateNodes) > 0 { collateNodes, _ = json.Marshal(req.CollateNodes) } return &SameTime{ PastureId: pastureId, Name: req.Name, WeekType: req.WeekType, CowType: req.CowType, IsShow: pasturePb.IsShow_Ok, IsDelete: pasturePb.IsShow_Ok, PostpartumDaysStart: req.PostpartumDaysStart, PostpartumDaysEnd: req.PostpartumDaysEnd, CollateNodes: string(collateNodes), Remarks: req.Remarks, OperationId: currentUser.Id, } } type SameTimeSlice []*SameTime func (e SameTimeSlice) ToPB( weekMap map[pasturePb.Week_Kind]string, sameTimeCowTypeMap map[pasturePb.SameTimeCowType_Kind]string, systemUserList []*SystemUser, ) []*pasturePb.SearchSameTimeList { res := make([]*pasturePb.SearchSameTimeList, len(e)) for i, v := range e { operationName := "" for _, u := range systemUserList { if u.Id != v.OperationId { continue } operationName = u.Name } collectionNodes := make([]*pasturePb.CollateNode, 0) if err := json.Unmarshal([]byte(v.CollateNodes), &collectionNodes); err != nil { zaplog.Error("json.Unmarshal SameTimeSlice.ToPB error", zap.Any("err", err)) } res[i] = &pasturePb.SearchSameTimeList{ Id: int32(v.Id), Name: v.Name, WeekType: v.WeekType, WeekName: weekMap[v.WeekType], CowType: v.CowType, CowTypeName: sameTimeCowTypeMap[v.CowType], IsShow: v.IsShow, PostpartumDaysStart: v.PostpartumDaysStart, PostpartumDaysEnd: v.PostpartumDaysEnd, CollateNodes: collectionNodes, Remarks: v.Remarks, OperationId: int32(v.OperationId), OperationName: operationName, CreatedAt: int32(v.CreatedAt), UpdatedAt: int32(v.UpdatedAt), } } return res }