golang-yitisheng-server/server/modules/user/controller/user_major_controller.go

120 lines
4.3 KiB
Go

package controller
import (
"server/common"
user_service "server/modules/user/service"
yxDto "server/modules/yx/dto"
yx_service "server/modules/yx/service"
"strconv"
"github.com/gin-gonic/gin"
)
type UserMajorController struct {
userScoreService *user_service.UserScoreService
yxUserScoreService *yx_service.YxUserScoreService
yxCalculationMajorService *yx_service.YxCalculationMajorService
yxVolunteerService *yx_service.YxVolunteerService
yxVolunteerRecordService *yx_service.YxVolunteerRecordService
}
func NewUserMajorController() *UserMajorController {
return &UserMajorController{
yxUserScoreService: yx_service.NewYxUserScoreService(),
userScoreService: user_service.NewUserScoreService(),
yxCalculationMajorService: yx_service.NewYxCalculationMajorService(),
yxVolunteerService: yx_service.NewYxVolunteerService(),
yxVolunteerRecordService: yx_service.NewYxVolunteerRecordService(),
}
}
// RegisterRoutes 注册路由
func (ctrl *UserMajorController) RegisterRoutes(rg *gin.RouterGroup) {
group := rg.Group("/user/major")
{
// 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 用户专业
// @Param page query int false "页码" default(1)
// @Param size query int false "每页数量" default(10)
// @Param batch query string false "批次(本科提前批/本科A段/本科B段/本科/高职高专)" default("")
// @Param probability query string false "录取概率类型(难录取/可冲击/较稳妥/可保底)" default("")
// @Success 200 {object} common.Response
// @Router /user/major/list [get]
func (ctrl *UserMajorController) List(c *gin.Context) {
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
size, _ := strconv.Atoi(c.DefaultQuery("size", "10"))
schoolMajorQuery := yxDto.SchoolMajorQuery{
Keyword: c.DefaultQuery("keyword", ""),
Page: page,
Size: size,
SchoolCode: c.Query("schoolCode"),
Batch: c.DefaultQuery("batch", ""),
Batch2: c.DefaultQuery("batch2", ""),
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)
}