golang-yitisheng-server/server/modules/yx/mapper/yx_school_major_mapper.go

72 lines
1.9 KiB
Go

// 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
}