Files
2026-09-29 15:30:33 +07:00

154 lines
3.3 KiB
Go

package web
import (
"net/http"
"path/filepath"
"strings"
"videoweb/app/service/feedbackser"
"github.com/gin-gonic/gin"
)
// Feedback 意见反馈页:渲染 template/pages/feedback.html。
func Feedback(c *gin.Context) {
HTMLOK(c, "feedback.html", gin.H{
"title": "意见反馈 - 黄果短剧",
})
}
// FeedbackAdd BFF:代理 POST /api/app/feedback/add。
// 文档:http://172.104.181.99:25319/swagger/index.html#/意见反馈相关接口/post_api_app_feedback_add
func FeedbackAdd(c *gin.Context) {
var body feedbackser.FeedbackReq
if err := c.ShouldBindJSON(&body); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"code": 400,
"msg": "invalid body",
"tip": "参数错误",
"data": nil,
})
return
}
body.Content = strings.TrimSpace(body.Content)
body.Contact = strings.TrimSpace(body.Contact)
if body.Type < 1 || body.Type > 4 {
c.JSON(http.StatusOK, gin.H{
"code": 400,
"msg": "invalid type",
"tip": "请选择问题类型",
"data": nil,
})
return
}
if body.Content == "" {
c.JSON(http.StatusOK, gin.H{
"code": 400,
"msg": "content required",
"tip": "请填写问题描述",
"data": nil,
})
return
}
if runes := []rune(body.Content); len(runes) > 500 {
body.Content = string(runes[:500])
}
if len(body.Screenshots) > 3 {
body.Screenshots = body.Screenshots[:3]
}
env, err := feedbackser.Add(c, body)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"code": 500,
"msg": err.Error(),
"tip": "提交失败,请稍后重试",
"data": nil,
})
return
}
if env == nil {
c.JSON(http.StatusOK, gin.H{
"code": 500,
"msg": "empty response",
"tip": "提交失败,请稍后重试",
"data": nil,
})
return
}
c.JSON(http.StatusOK, gin.H{
"code": env.Code,
"msg": env.Msg,
"tip": env.Tip,
"data": env.Data,
})
}
// UploadImage BFF:代理 POST /api/app/upload/image。
// 文档:http://172.104.181.99:25319/swagger/index.html#/上传/post_api_app_upload_image
func UploadImage(c *gin.Context) {
fileHeader, err := c.FormFile("file")
if err != nil || fileHeader == nil {
c.JSON(http.StatusBadRequest, gin.H{
"code": 400,
"msg": "file required",
"tip": "请选择图片文件",
"data": nil,
})
return
}
f, err := fileHeader.Open()
if err != nil {
c.JSON(http.StatusOK, gin.H{
"code": 500,
"msg": err.Error(),
"tip": "读取图片失败",
"data": nil,
})
return
}
defer f.Close()
name := filepath.Base(fileHeader.Filename)
if name == "" || name == "." || name == "/" {
name = "image.jpg"
}
resp, err := feedbackser.UploadImage(c, name, f)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"code": 500,
"msg": err.Error(),
"tip": "上传失败,请稍后重试",
"data": nil,
})
return
}
if resp == nil {
c.JSON(http.StatusOK, gin.H{
"code": 500,
"msg": "empty response",
"tip": "上传失败,请稍后重试",
"data": nil,
})
return
}
var data gin.H
if resp.Data != nil {
url := strings.TrimSpace(resp.Data.SourceNameFs)
if url == "" {
url = strings.TrimSpace(resp.Data.ID)
}
data = gin.H{
"id": resp.Data.ID,
"sourceNameFs": resp.Data.SourceNameFs,
"url": url,
}
}
c.JSON(http.StatusOK, gin.H{
"code": resp.Code,
"msg": resp.Msg,
"tip": resp.Tip,
"data": data,
})
}