package backend import ( "context" "fmt" "kpt-pasture/model" "net/http" "gitee.com/xuyiping_admin/pkg/xerr" pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow" ) func (s *StoreEntry) DrugsList(ctx context.Context, req *pasturePb.SearchDrugsRequest, pagination *pasturePb.PaginationModel) (*pasturePb.SearchDrugsResponse, error) { drugsList := make([]*model.Drugs, 0) var count int64 = 0 pref := s.DB.Model(new(model.Drugs)) if req.Name != "" { pref.Where("name like ?", fmt.Sprintf("%s%s%s", "%", req.Name, "%")) } if req.Usage > 0 { pref.Where("usage_method = ?", req.Usage) } if req.CategoryId > 0 { pref.Where("category_id = ?", req.CategoryId) } if err := pref.Order("id desc").Count(&count).Limit(int(pagination.PageSize)).Offset(int(pagination.PageOffset)). Find(&drugsList).Error; err != nil { return nil, xerr.WithStack(err) } drugsCategoryMap := s.DrugCategoryMaps() unitMap := s.UnitMap() drugUsageMap := s.DrugUsageMaps() return &pasturePb.SearchDrugsResponse{ Code: http.StatusOK, Message: "ok", Data: &pasturePb.SearchDrugsData{ List: model.DrugsSlice(drugsList).ToPB(drugsCategoryMap, unitMap, drugUsageMap), Total: int32(count), PageSize: pagination.PageSize, Page: pagination.Page, }, }, nil } func (s *StoreEntry) DrugsCreateOrUpdate(ctx context.Context, req *pasturePb.SearchDrugsList) error { currentUser, _ := s.GetCurrentSystemUser(ctx) newDrugs := model.NewDrugs(req, currentUser) if req.Id <= 0 { if err := s.DB.Create(newDrugs).Error; err != nil { return xerr.WithStack(err) } } else { if err := s.DB.Where("id = ?", req.Id).Updates(newDrugs).Error; err != nil { return xerr.WithStack(err) } } return nil } func (s *StoreEntry) MedicalEquipmentList(ctx context.Context, req *pasturePb.SearchMedicalEquipmentRequest, pagination *pasturePb.PaginationModel) (*pasturePb.SearchMedicalEquipmentResponse, error) { medicalEquipmentList := make([]*model.MedicalEquipment, 0) var count int64 = 0 pref := s.DB.Model(new(model.MedicalEquipment)) if req.Name != "" { pref.Where("name like ?", fmt.Sprintf("%s%s%s", "%", req.Name, "%")) } if err := pref.Order("id desc").Count(&count).Limit(int(pagination.PageSize)).Offset(int(pagination.PageOffset)). Find(&medicalEquipmentList).Error; err != nil { return nil, xerr.WithStack(err) } unitMap := s.UnitMap() return &pasturePb.SearchMedicalEquipmentResponse{ Code: http.StatusOK, Message: "ok", Data: &pasturePb.SearchMedicalEquipmentData{ List: model.MedicalEquipmentSlice(medicalEquipmentList).ToPB(unitMap), Total: int32(count), PageSize: pagination.PageSize, Page: pagination.Page, }, }, nil } func (s *StoreEntry) MedicalEquipmentCreateOrUpdate(ctx context.Context, req *pasturePb.SearchMedicalEquipmentList) error { currentUser, _ := s.GetCurrentSystemUser(ctx) newDrugs := model.NewMedicalEquipment(req, currentUser) if req.Id <= 0 { if err := s.DB.Create(newDrugs).Error; err != nil { return xerr.WithStack(err) } } else { if err := s.DB.Where("id = ?", req.Id).Updates(newDrugs).Error; err != nil { return xerr.WithStack(err) } } return nil }