// Package mapper 数据访问层 package mapper import ( "server/common" "server/modules/yx/dto" "server/modules/yx/entity" ) type YxSchoolMajorMapper struct { *common.BaseMapper[entity.YxSchoolMajor] } func NewYxSchoolMajorMapper() *YxSchoolMajorMapper { return &YxSchoolMajorMapper{ BaseMapper: common.NewBaseMapper[entity.YxSchoolMajor](), } } // SelectSchoolMajor 查询院校专业信息(包含学校信息) func (m *YxSchoolMajorMapper) SelectSchoolMajor(query dto.SchoolMajorQuery) ([]dto.SchoolMajorDTO, error) { var items []dto.SchoolMajorDTO queryBuilder := m.GetDB().Table("yx_school_major sm"). Select(` sm.school_code, sc.school_name, sm.major_code, sm.major_name, sm.major_type, sm.major_type_child, sm.plan_num, sm.main_subjects, sm.limitation, sm.chinese_score_limitation, sm.english_score_limitation, sm.cultural_score_limitation, sm.professional_score_limitation, sm.enrollment_code, sm.tuition, sm.detail, sm.category, sm.batch, sm.rules_enroll_probability, sm.probability_operator, sm.private_rules_enroll_probability, sm.private_probability_operator, sm.rules_enroll_probability_sx, sm.kslx, sm.state `). Joins("LEFT JOIN (SELECT school_id,school_name,school_code FROM yx_school_child group by school_code) sc ON sc.school_code = sm.school_code"). Joins("LEFT JOIN yx_school s ON s.id = sc.school_id"). Where("sm.state > 0") if query.MajorType != "" { queryBuilder = queryBuilder.Where("sm.major_type = ?", query.MajorType) } if query.Category != "" { queryBuilder = queryBuilder.Where("sm.category = ?", query.Category) } if len(query.MajorTypeChildren) > 0 { queryBuilder = queryBuilder.Where("sm.major_type_child IN ?", query.MajorTypeChildren) } if query.MainSubjects != "" { queryBuilder = queryBuilder.Where("sm.main_subjects = ?", query.MainSubjects) } err := queryBuilder.Scan(&items).Error return items, err }