pasture_manage.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package backend
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "kpt-pasture/model"
  7. "net/http"
  8. "gitee.com/xuyiping_admin/pkg/xerr"
  9. "gorm.io/gorm"
  10. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  11. )
  12. func (s *StoreEntry) SearchBarnList(ctx context.Context, req *pasturePb.SearchBarnRequest, pagination *pasturePb.PaginationModel) (*pasturePb.SearchBarnResponse, error) {
  13. barnList := make([]*model.Bran, 0)
  14. var count int64 = 0
  15. pref := s.DB.Model(new(model.Bran)).Where("is_delete = ?", pasturePb.IsShow_Ok)
  16. if req.Name != "" {
  17. pref.Where("name like ?", fmt.Sprintf("%s%s%s", "%", req.Name, "%"))
  18. }
  19. if err := pref.Order("id desc").Count(&count).Limit(int(pagination.PageSize)).Offset(int(pagination.PageOffset)).
  20. Find(&barnList).Debug().Error; err != nil {
  21. return nil, xerr.WithStack(err)
  22. }
  23. configBarnTypeList := make([]*model.ConfigBarnType, 0)
  24. if err := s.DB.Model(new(model.ConfigBarnType)).Find(&configBarnTypeList).Error; err != nil {
  25. return nil, xerr.WithStack(err)
  26. }
  27. return &pasturePb.SearchBarnResponse{
  28. Code: http.StatusOK,
  29. Message: "ok",
  30. Data: &pasturePb.SearchBarnData{
  31. List: model.BarnSlice(barnList).ToPB(configBarnTypeList),
  32. Total: int32(count),
  33. PageSize: pagination.PageSize,
  34. Page: pagination.Page,
  35. },
  36. }, nil
  37. }
  38. func (s *StoreEntry) CreateOrUpdateBarn(ctx context.Context, req *pasturePb.SearchBarnList) error {
  39. if req.Id > 0 {
  40. barn := &model.Bran{Id: req.Id}
  41. if err := s.DB.Model(&model.Bran{}).First(barn).Error; err != nil {
  42. if !errors.Is(err, gorm.ErrRecordNotFound) {
  43. return xerr.WithStack(err)
  44. }
  45. }
  46. }
  47. if err := s.DB.Model(&model.Bran{}).Where(map[string]interface{}{
  48. "id": req.Id,
  49. }).Assign(map[string]interface{}{
  50. "name": req.Name,
  51. "remarks": req.Remarks,
  52. "barn_type": req.BarnTypeId,
  53. "lengths": req.Lengths,
  54. "widths": req.Widths,
  55. "doctrinal_capacity": req.DoctrinalCapacity,
  56. "bed_number": req.BedNumber,
  57. "neck_number": req.NeckNumber,
  58. "is_delete": pasturePb.IsShow_Ok,
  59. "is_show": pasturePb.IsShow_Ok,
  60. }).FirstOrCreate(&model.Bran{}).Error; err != nil {
  61. return xerr.WithStack(err)
  62. }
  63. return nil
  64. }