From fff2833d2965c47686fa0cb128e87972a165ee90 Mon Sep 17 00:00:00 2001 From: zhouwentao Date: Sat, 24 Jan 2026 11:09:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AESchoolCode=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E4=B8=93=E4=B8=9A=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/user_major_controller.go | 40 +++++++++++++++++++ server/modules/yx/dto/yx_school_major_dto.go | 5 ++- .../yx/mapper/yx_calculation_major_mapper.go | 6 ++- 3 files changed, 48 insertions(+), 3 deletions(-) diff --git a/server/modules/user/controller/user_major_controller.go b/server/modules/user/controller/user_major_controller.go index d15b049..1beab90 100644 --- a/server/modules/user/controller/user_major_controller.go +++ b/server/modules/user/controller/user_major_controller.go @@ -31,9 +31,48 @@ func (ctrl *UserMajorController) RegisterRoutes(rg *gin.RouterGroup) { // group.GET("/", ctrl.GetActive) // group.GET("/:id", ctrl.GetByID) group.GET("/list", ctrl.List) + group.GET("/list_by_school", ctrl.ListBySchool) } } +// ListBySchool 获取当前院校下其他专业数据 +// @Summary 获取当前院校下其他专业数据 +// @Tags 用户专业 +// @Param page query int false "页码" default(1) +// @Param size query int false "每页数量" default(10) +// @Param school_code query string true "院校代码" +// @Param probability query string false "录取概率类型(难录取/可冲击/较稳妥/可保底)" default("") +// @Success 200 {object} common.Response +// @Router /user/major/list_by_school [get] +func (ctrl *UserMajorController) ListBySchool(c *gin.Context) { + page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) + size, _ := strconv.Atoi(c.DefaultQuery("size", "10")) + schoolMajorQuery := yxDto.SchoolMajorQuery{ + Page: page, + Size: size, + SchoolCode: c.Query("school_code"), + Probability: c.DefaultQuery("probability", ""), + LoginUserId: common.GetLoginUser(c).ID, + } + userScoreVO, err := ctrl.userScoreService.GetActiveByID(schoolMajorQuery.LoginUserId) + if err != nil { + common.Error(c, 500, err.Error()) + return + } + schoolMajorQuery.UserScoreVO = userScoreVO + items, total, probCount, err := ctrl.yxCalculationMajorService.RecommendMajorList(schoolMajorQuery) + if err != nil { + common.Error(c, 500, err.Error()) + return + } + newMap := map[string]interface{}{ + "items": items, + "total": total, + "probCount": probCount, + } + common.SuccessPage(c, newMap, total, page, size) +} + // List 获取当前用户可检索列表 // @Summary 获取当前用户可检索列表 // @Tags 用户专业 @@ -50,6 +89,7 @@ func (ctrl *UserMajorController) List(c *gin.Context) { Keyword: c.DefaultQuery("keyword", ""), Page: page, Size: size, + SchoolCode: c.Query("schoolCode"), Batch: c.DefaultQuery("batch", ""), Probability: c.DefaultQuery("probability", ""), LoginUserId: common.GetLoginUser(c).ID, diff --git a/server/modules/yx/dto/yx_school_major_dto.go b/server/modules/yx/dto/yx_school_major_dto.go index 4e894f1..797b788 100644 --- a/server/modules/yx/dto/yx_school_major_dto.go +++ b/server/modules/yx/dto/yx_school_major_dto.go @@ -33,8 +33,8 @@ type UserMajorDTO struct { State string `json:"state"` HistoryMajorEnrollMap map[string]YxHistoryMajorEnrollDTO `json:"historyMajorEnrollMap"` // 计算相关字段 (非数据库直接映射) - EnrollProbability float64 `json:"enrollProbability"` // 录取率 - StudentScore float64 `json:"studentScore"` // 学生折合分 + EnrollProbability float64 `json:"enrollProbability"` // 录取率 + StudentScore float64 `json:"studentScore" gorm:"column:studentScore"` // 学生折合分 // PrivateStudentScore float64 `json:"privateStudentScore"` // 学生折合分(私有) // StudentConvertedScore float64 `json:"studentConvertedScore"` // 学生折合分(转换后) // FirstLevelDiscipline string `json:"firstLevelDiscipline"` // 一级学科 (需确认来源) @@ -112,4 +112,5 @@ type SchoolMajorQuery struct { LoginUserId string `json:"loginUserId"` // 登录用户 ID UserScoreVO userVO.UserScoreVO `json:"userScoreVO"` // 用户成绩 VO CalculationTableName string `json:"calculationTableName"` // 对应 calculation_table_name + SchoolCode string `json:"schoolCode"` // 对应的 院校代码 } diff --git a/server/modules/yx/mapper/yx_calculation_major_mapper.go b/server/modules/yx/mapper/yx_calculation_major_mapper.go index 5a8fbcd..9129403 100644 --- a/server/modules/yx/mapper/yx_calculation_major_mapper.go +++ b/server/modules/yx/mapper/yx_calculation_major_mapper.go @@ -59,6 +59,10 @@ func (m *YxCalculationMajorMapper) FindRecommendList(query dto.SchoolMajorQuery) baseSQL += " AND cm.score_id = ?" params = append(params, query.UserScoreVO.ID) } + if query.SchoolCode != "" { + baseSQL += " AND cm.school_code = ?" + params = append(params, query.SchoolCode) + } if query.MajorType != "" { baseSQL += " AND cm.major_type = ?" params = append(params, query.MajorType) @@ -124,7 +128,7 @@ func (m *YxCalculationMajorMapper) FindRecommendList(query dto.SchoolMajorQuery) cm.main_subjects, cm.limitation, cm.other_score_limitation, - s.province as province, + s.province, s.school_nature, s.institution_type FROM %s cm