// =========================================== // 多班级版班级管理系统 - Go 后端 // // 开发者: Canglan // 联系方式: admin@sea-studio.top // 版权归属: Sea Network Technology Studio // 许可证: Apache License 2.0 // // 版权所有 © Sea Network Technology Studio // =========================================== package handler import ( "github.com/gin-gonic/gin" "hz-gitea.sea-studio.top/canglan/SharedClassManager/internal/middleware" "hz-gitea.sea-studio.top/canglan/SharedClassManager/internal/schema" "hz-gitea.sea-studio.top/canglan/SharedClassManager/internal/service" "hz-gitea.sea-studio.top/canglan/SharedClassManager/pkg/response" ) // ParentHandler 家长端处理器 type ParentHandler struct { parentService *service.ParentService authService *service.AuthService classService *service.ClassService } // NewParentHandler 创建家长端处理器 func NewParentHandler( parentService *service.ParentService, authService *service.AuthService, classService *service.ClassService, ) *ParentHandler { return &ParentHandler{ parentService: parentService, authService: authService, classService: classService, } } // Dashboard 子女操行分(家长仪表盘) func (h *ParentHandler) Dashboard(c *gin.Context) { userID := middleware.GetUserID(c) result, err := h.parentService.GetChildConduct(userID) if err != nil { response.InternalError(c, err.Error()) return } response.Success(c, result, "操作成功") } // History 子女历史记录 func (h *ParentHandler) History(c *gin.Context) { var query schema.ParentHistoryQuery if err := c.ShouldBindQuery(&query); err != nil { response.BadRequest(c, "参数错误") return } userID := middleware.GetUserID(c) result, err := h.parentService.GetChildHistory(userID, query.Page, query.PageSize) if err != nil { response.InternalError(c, err.Error()) return } response.Success(c, result, "操作成功") } // Attendance 子女考勤 func (h *ParentHandler) Attendance(c *gin.Context) { userID := middleware.GetUserID(c) result, err := h.parentService.GetChildAttendance(userID) if err != nil { response.InternalError(c, err.Error()) return } response.Success(c, result, "操作成功") } // Ranking 子女排名 func (h *ParentHandler) Ranking(c *gin.Context) { userID := middleware.GetUserID(c) result, err := h.parentService.GetChildRanking(userID) if err != nil { response.InternalError(c, err.Error()) return } response.Success(c, result, "操作成功") } // ChangePassword 家长修改密码(受功能开关控制) func (h *ParentHandler) ChangePassword(c *gin.Context) { classID := middleware.GetClassID(c) // 检查功能开关 if !h.classService.IsFeatureEnabled(classID, "parent_password_change_enabled") { response.Forbidden(c, "该功能暂未开放") return } var req schema.ChangePasswordRequest if err := c.ShouldBindJSON(&req); err != nil { response.BadRequest(c, "参数错误") return } userID := middleware.GetUserID(c) if err := h.authService.ChangePassword(userID, req.OldPassword, req.NewPassword, false); err != nil { response.BadRequest(c, err.Error()) return } response.SuccessWithMessage(c, "密码修改成功") }