commit
This commit is contained in:
104
go_backend/controller/feedback_controller.go
Normal file
104
go_backend/controller/feedback_controller.go
Normal file
@@ -0,0 +1,104 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"ai_xhs/common"
|
||||
"ai_xhs/models"
|
||||
"ai_xhs/service"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// CreateFeedbackRequest 创建反馈请求
|
||||
type CreateFeedbackRequest struct {
|
||||
FeedbackType string `json:"feedback_type" binding:"required"`
|
||||
Description string `json:"description" binding:"required,max=500"`
|
||||
ContactInfo string `json:"contact_info"`
|
||||
Nickname string `json:"nickname"`
|
||||
}
|
||||
|
||||
// FeedbackController 反馈控制器
|
||||
type FeedbackController struct {
|
||||
feedbackService *service.FeedbackService
|
||||
}
|
||||
|
||||
// NewFeedbackController 创建反馈控制器
|
||||
func NewFeedbackController(feedbackService *service.FeedbackService) *FeedbackController {
|
||||
return &FeedbackController{
|
||||
feedbackService: feedbackService,
|
||||
}
|
||||
}
|
||||
|
||||
// CreateFeedback 创建反馈
|
||||
func (fc *FeedbackController) CreateFeedback(c *gin.Context) {
|
||||
var req CreateFeedbackRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
common.Error(c, common.CodeInvalidParams, "参数错误: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// 从上下文获取员工ID
|
||||
employeeID, exists := c.Get("employee_id")
|
||||
if !exists {
|
||||
common.Error(c, common.CodeUnauthorized, "未登录")
|
||||
return
|
||||
}
|
||||
|
||||
feedback := &models.Feedback{
|
||||
FeedbackType: req.FeedbackType,
|
||||
Description: req.Description,
|
||||
ContactInfo: req.ContactInfo,
|
||||
Nickname: req.Nickname,
|
||||
CreatedUserID: employeeID.(int),
|
||||
Status: "待处理",
|
||||
}
|
||||
|
||||
if err := fc.feedbackService.CreateFeedback(feedback); err != nil {
|
||||
common.Error(c, common.CodeInternalError, "提交反馈失败: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
common.SuccessWithMessage(c, "反馈提交成功", feedback)
|
||||
}
|
||||
|
||||
// GetFeedbackList 获取反馈列表
|
||||
func (fc *FeedbackController) GetFeedbackList(c *gin.Context) {
|
||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "10"))
|
||||
feedbackType := c.Query("feedback_type")
|
||||
status := c.Query("status")
|
||||
|
||||
// 从上下文获取员工ID(仅查看自己的反馈)
|
||||
employeeID, exists := c.Get("employee_id")
|
||||
if !exists {
|
||||
common.Error(c, common.CodeUnauthorized, "未登录")
|
||||
return
|
||||
}
|
||||
|
||||
feedbacks, total, err := fc.feedbackService.GetFeedbackList(employeeID.(int), page, pageSize, feedbackType, status)
|
||||
if err != nil {
|
||||
common.Error(c, common.CodeInternalError, "获取反馈列表失败: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, common.SuccessResponseWithPage(feedbacks, total, page, pageSize, "获取成功"))
|
||||
}
|
||||
|
||||
// GetFeedbackDetail 获取反馈详情
|
||||
func (fc *FeedbackController) GetFeedbackDetail(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.Atoi(idStr)
|
||||
if err != nil {
|
||||
common.Error(c, common.CodeInvalidParams, "无效的反馈ID")
|
||||
return
|
||||
}
|
||||
|
||||
feedback, err := fc.feedbackService.GetFeedbackByID(id)
|
||||
if err != nil {
|
||||
common.Error(c, common.CodeNotFound, "反馈不存在")
|
||||
return
|
||||
}
|
||||
|
||||
common.SuccessWithMessage(c, "获取成功", feedback)
|
||||
}
|
||||
Reference in New Issue
Block a user