same_time.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package model
  2. import (
  3. "encoding/json"
  4. "gitee.com/xuyiping_admin/pkg/logger/zaplog"
  5. "go.uber.org/zap"
  6. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  7. )
  8. type SameTime struct {
  9. Id int64 `json:"id"`
  10. PastureId int64 `json:"pastureId"`
  11. Name string `json:"name"`
  12. WeekType pasturePb.Week_Kind `json:"weekType"`
  13. CowType pasturePb.SameTimeCowType_Kind `json:"cowType"`
  14. IsShow pasturePb.IsShow_Kind `json:"isShow"`
  15. IsDelete pasturePb.IsShow_Kind `json:"isDelete"`
  16. PostpartumDaysStart int32 `json:"postpartumDaysStart"`
  17. PostpartumDaysEnd int32 `json:"postpartumDaysEnd"`
  18. CollateNodes string `json:"collateNodes"`
  19. Remarks string `json:"remarks"`
  20. OperationId int64 `json:"operationId"`
  21. CreatedAt int64 `json:"createdAt"`
  22. UpdatedAt int64 `json:"updatedAt"`
  23. }
  24. func (e *SameTime) TableName() string {
  25. return "same_time"
  26. }
  27. func NewSameTime(pastureId int64, currentUser *SystemUser, req *pasturePb.SearchSameTimeList) *SameTime {
  28. var collateNodes []byte
  29. if len(req.CollateNodes) > 0 {
  30. collateNodes, _ = json.Marshal(req.CollateNodes)
  31. }
  32. return &SameTime{
  33. PastureId: pastureId,
  34. Name: req.Name,
  35. WeekType: req.WeekType,
  36. CowType: req.CowType,
  37. IsShow: pasturePb.IsShow_Ok,
  38. IsDelete: pasturePb.IsShow_Ok,
  39. PostpartumDaysStart: req.PostpartumDaysStart,
  40. PostpartumDaysEnd: req.PostpartumDaysEnd,
  41. CollateNodes: string(collateNodes),
  42. Remarks: req.Remarks,
  43. OperationId: currentUser.Id,
  44. }
  45. }
  46. type SameTimeSlice []*SameTime
  47. func (e SameTimeSlice) ToPB(
  48. weekMap map[pasturePb.Week_Kind]string,
  49. sameTimeCowTypeMap map[pasturePb.SameTimeCowType_Kind]string,
  50. systemUserList []*SystemUser,
  51. ) []*pasturePb.SearchSameTimeList {
  52. res := make([]*pasturePb.SearchSameTimeList, len(e))
  53. for i, v := range e {
  54. operationName := ""
  55. for _, u := range systemUserList {
  56. if u.Id != v.OperationId {
  57. continue
  58. }
  59. operationName = u.Name
  60. }
  61. collectionNodes := make([]*pasturePb.CollateNode, 0)
  62. if err := json.Unmarshal([]byte(v.CollateNodes), &collectionNodes); err != nil {
  63. zaplog.Error("json.Unmarshal SameTimeSlice.ToPB error", zap.Any("err", err))
  64. }
  65. res[i] = &pasturePb.SearchSameTimeList{
  66. Id: int32(v.Id),
  67. Name: v.Name,
  68. WeekType: v.WeekType,
  69. WeekName: weekMap[v.WeekType],
  70. CowType: v.CowType,
  71. CowTypeName: sameTimeCowTypeMap[v.CowType],
  72. IsShow: v.IsShow,
  73. PostpartumDaysStart: v.PostpartumDaysStart,
  74. PostpartumDaysEnd: v.PostpartumDaysEnd,
  75. CollateNodes: collectionNodes,
  76. Remarks: v.Remarks,
  77. OperationId: int32(v.OperationId),
  78. OperationName: operationName,
  79. CreatedAt: int32(v.CreatedAt),
  80. UpdatedAt: int32(v.UpdatedAt),
  81. }
  82. }
  83. return res
  84. }