diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index c408bf0..2f54130 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -149,11 +149,12 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct Where(gorm.Expr("transfer_doctor_id IN (?)", transferDoctorSubQuery)) // 使用 OR 条件:原医生匹配 OR 抄方医生匹配 - // 使用闭包函数确保 OR 条件正确分组 - query = query.Where(func(db *gorm.DB) *gorm.DB { - return db.Where(gorm.Expr("doctor_id IN (?)", originalDoctorSubQuery)). - Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) - }) + // 通过嵌套 Where 子查询把 OR 条件包在一组括号里,避免影响其它条件 + orCond := global.Db. + Where(gorm.Expr("doctor_id IN (?)", originalDoctorSubQuery)). + Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) + + query = query.Where(orCond) } // 处方 @@ -377,12 +378,13 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct Where(gorm.Expr("transfer_doctor_id IN (?)", transferDoctorSubQuery)) // 使用 OR 条件:患者匹配 OR 原医生匹配 OR 抄方医生匹配 - // 使用闭包函数确保 OR 条件正确分组 - query = query.Where(func(db *gorm.DB) *gorm.DB { - return db.Where("patient_id IN (?)", patientSubQuery). - Or("doctor_id IN (?)", originalDoctorSubQuery). - Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) - }) + // 通过嵌套 Where 子查询把 OR 条件包在一组括号里,避免影响其它条件 + orCond := global.Db. + Where("patient_id IN (?)", patientSubQuery). + Or("doctor_id IN (?)", originalDoctorSubQuery). + Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) + + query = query.Where(orCond) } // 排序