package dao import ( "gorm.io/gorm" "hospital-admin-api/api/model" "hospital-admin-api/global" ) type DoctorPharmacyDao struct{} // GetDoctorPharmacyListByDoctorId 获取医生绑定的药房列表(带预加载药房详情) func (r *DoctorPharmacyDao) GetDoctorPharmacyListByDoctorId(doctorId int64) (m []*model.DoctorPharmacy, err error) { err = global.Db.Preload("Pharmacy").Where("doctor_id = ? AND status = 1", doctorId).Order("is_default desc, created_at desc").Find(&m).Error if err != nil { return nil, err } return m, nil } // GetDoctorPharmacyByDoctorAndPharmacy 获取某医生与某药房的绑定关系 func (r *DoctorPharmacyDao) GetDoctorPharmacyByDoctorAndPharmacy(doctorId, pharmacyId int64) (m *model.DoctorPharmacy, err error) { err = global.Db.Where("doctor_id = ? AND pharmacy_id = ?", doctorId, pharmacyId).First(&m).Error if err != nil { return nil, err } return m, nil } // AddDoctorPharmacy 新增绑定 func (r *DoctorPharmacyDao) AddDoctorPharmacy(tx *gorm.DB, m *model.DoctorPharmacy) (*model.DoctorPharmacy, error) { if err := tx.Create(m).Error; err != nil { return nil, err } return m, nil } // DeleteDoctorPharmacy 删除绑定记录 func (r *DoctorPharmacyDao) DeleteDoctorPharmacy(tx *gorm.DB, maps interface{}) error { err := tx.Where(maps).Delete(&model.DoctorPharmacy{}).Error if err != nil { return err } return nil } // DeleteDoctorPharmacyByDoctorAndPharmacy 解绑指定医生和指定药房 func (r *DoctorPharmacyDao) DeleteDoctorPharmacyByDoctorAndPharmacy(tx *gorm.DB, doctorId, pharmacyId int64) error { err := tx.Where("doctor_id = ? AND pharmacy_id = ?", doctorId, pharmacyId).Delete(&model.DoctorPharmacy{}).Error if err != nil { return err } return nil } // ResetDoctorDefaultPharmacy 重置医生的默认药房(设为非默认) func (r *DoctorPharmacyDao) ResetDoctorDefaultPharmacy(tx *gorm.DB, doctorId int64) error { err := tx.Model(&model.DoctorPharmacy{}).Where("doctor_id = ?", doctorId).Update("is_default", 0).Error if err != nil { return err } return nil } // SetDefaultPharmacy 设指定药房为默认 func (r *DoctorPharmacyDao) SetDefaultPharmacy(tx *gorm.DB, doctorId, pharmacyId int64) error { err := tx.Model(&model.DoctorPharmacy{}).Where("doctor_id = ? AND pharmacy_id = ?", doctorId, pharmacyId).Update("is_default", 1).Error if err != nil { return err } return nil }