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, }) }