same_time.go 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. Name string `json:"name"`
  11. WeekType pasturePb.Week_Kind `json:"weekType"`
  12. CowType pasturePb.CowType_Kind `json:"cowType"`
  13. IsShow pasturePb.IsShow_Kind `json:"isShow"`
  14. IsDelete pasturePb.IsShow_Kind `json:"isDelete"`
  15. PostpartumDaysStart int32 `json:"postpartumDaysStart"`
  16. PostpartumDaysEnd int32 `json:"postpartumDaysEnd"`
  17. CollateNodes string `json:"collateNodes"`
  18. Remarks string `json:"remarks"`
  19. OperationId int64 `json:"operationId"`
  20. CreatedAt int64 `json:"createdAt"`
  21. UpdatedAt int64 `json:"updatedAt"`
  22. }
  23. func (e *SameTime) TableName() string {
  24. return "same_time"
  25. }
  26. func NewSameTime(currentUser *SystemUser, req *pasturePb.SearchSameTimeList) *SameTime {
  27. var collateNodes []byte
  28. if len(req.CollateNodes) > 0 {
  29. collateNodes, _ = json.Marshal(req.CollateNodes)
  30. }
  31. return &SameTime{
  32. Name: req.Name,
  33. WeekType: req.WeekType,
  34. CowType: req.CowType,
  35. IsShow: pasturePb.IsShow_Ok,
  36. IsDelete: pasturePb.IsShow_Ok,
  37. PostpartumDaysStart: req.PostpartumDaysStart,
  38. PostpartumDaysEnd: req.PostpartumDaysEnd,
  39. CollateNodes: string(collateNodes),
  40. Remarks: req.Remarks,
  41. OperationId: currentUser.Id,
  42. }
  43. }
  44. type SameTimeSlice []*SameTime
  45. func (e SameTimeSlice) ToPB(
  46. weekMap map[pasturePb.Week_Kind]string,
  47. cowTypeMap map[pasturePb.CowType_Kind]string,
  48. systemUserList []*SystemUser,
  49. ) []*pasturePb.SearchSameTimeList {
  50. res := make([]*pasturePb.SearchSameTimeList, len(e))
  51. for i, v := range e {
  52. operationName := ""
  53. for _, u := range systemUserList {
  54. if u.Id != v.OperationId {
  55. continue
  56. }
  57. operationName = u.Name
  58. }
  59. collectionNodes := make([]*pasturePb.CollateNode, 0)
  60. if err := json.Unmarshal([]byte(v.CollateNodes), &collectionNodes); err != nil {
  61. zaplog.Error("json.Unmarshal SameTimeSlice.ToPB error", zap.Any("err", err))
  62. }
  63. res[i] = &pasturePb.SearchSameTimeList{
  64. Id: int32(v.Id),
  65. Name: v.Name,
  66. WeekType: v.WeekType,
  67. WeekName: weekMap[v.WeekType],
  68. CowType: v.CowType,
  69. CowTypeName: cowTypeMap[v.CowType],
  70. IsShow: v.IsShow,
  71. PostpartumDaysStart: v.PostpartumDaysStart,
  72. PostpartumDaysEnd: v.PostpartumDaysEnd,
  73. CollateNodes: collectionNodes,
  74. Remarks: v.Remarks,
  75. OperationId: int32(v.OperationId),
  76. OperationName: operationName,
  77. CreatedAt: int32(v.CreatedAt),
  78. UpdatedAt: int32(v.UpdatedAt),
  79. }
  80. }
  81. return res
  82. }