From 9d5fdb5cf9ed42f4e84ba9c4e5d7e5088c5726e7 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Thu, 8 May 2025 14:23:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E6=9C=AC=E8=BD=AC?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E7=9A=84=E4=BB=BB=E5=8A=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/tool.go | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ main.go | 3 +++ proto/tool.go | 7 ++++++ 3 files changed, 73 insertions(+) diff --git a/handler/tool.go b/handler/tool.go index 2797bd1..e4771ca 100644 --- a/handler/tool.go +++ b/handler/tool.go @@ -73,6 +73,9 @@ func SetUpToolGroup(router *gin.Engine) { toolGroup.POST("/spark_ppt_create_status", GetSparkCreatePPTStatus) //国外服务器处理请求 toolGroup.POST("/online_server_request", HandleOnlineServerRequest) + //文本转为文档接口 + toolGroup.POST("/text_to_docx", HandleMessageTextToDocx) + toolGroup.GET("/get_text_docx_set", GetTextDocxSet) } func SetDeviceStatusV2(c *gin.Context) { @@ -894,3 +897,63 @@ func HandleOnlineServerRequest(c *gin.Context) { } c.JSON(http.StatusOK, resp) } + +func HandleMessageTextToDocx(c *gin.Context) { + var req proto.MessageTextToDocxReq + var resp proto.GenerateResp + userID, _ := c.Get("user_id") + if err := c.ShouldBind(&req); err == nil { + req.UserID = int(userID.(float64)) + reqStr, err2 := json.Marshal(req) + if err2 != nil { + resp.Code = proto.ParameterError + resp.Message = "参数错误,解析错误" + } else { + //设置到redis set + success := worker.SetRedisSetAdd("message_text_to_docx", string(reqStr)) + if success { + resp.Code = proto.SuccessCode + resp.Message = "success" + resp.Data = "success" + } else { + resp.Code = proto.OperationFailed + resp.Message = "操作失败" + } + } + } else { + resp.Code = proto.ParameterError + resp.Message = "参数错误" + } + c.JSON(http.StatusOK, resp) +} + +func GetTextDocxSet(c *gin.Context) { + var resp proto.GenerateResp + userID, _ := c.Get("user_id") + //查看用户是否是管理员 + user := service.GetUserByIDWithCache(int(userID.(float64))) + if user.Role != "admin" { + resp.Code = proto.PermissionDenied + resp.Message = "没有权限" + } else { + //获取redis set + strList := worker.GetRedisSetMembers("message_text_to_docx") + //解析json + var data []proto.MessageTextToDocxReq + for _, str := range strList { + var req proto.MessageTextToDocxReq + err := json.Unmarshal([]byte(str), &req) + if err != nil { + log.Println("json unmarshal error:", err) + } else { + data = append(data, req) + } + } + worker.DelRedis("message_text_to_docx") + resp.Code = proto.SuccessCode + resp.Message = "success" + resp.Data = data + } + + c.JSON(http.StatusOK, resp) +} diff --git a/main.go b/main.go index 538398d..db92a05 100644 --- a/main.go +++ b/main.go @@ -184,6 +184,9 @@ func JWTAuthMiddleware() gin.HandlerFunc { // 将用户信息添加到上下文中 c.Set("id", token.Claims.(jwt.MapClaims)["id"]) c.Set("username", token.Claims.(jwt.MapClaims)["username"]) + id := token.Claims.(jwt.MapClaims)["id"] + userID := int(id.(float64)) + c.Set("user_id", userID) if UserFuncIntercept(int(token.Claims.(jwt.MapClaims)["id"].(float64)), c.Request.URL.Path) { c.AbortWithStatus(200) diff --git a/proto/tool.go b/proto/tool.go index 295b52a..ad9a943 100644 --- a/proto/tool.go +++ b/proto/tool.go @@ -318,3 +318,10 @@ type QQUserInfoResponse struct { Level string `json:"level"` IsYellowYearVip string `json:"is_yellow_year_vip"` } + +type MessageTextToDocxReq struct { + Text string `json:"text"` // 文本内容 + FileName string `json:"file_name"` // 文件名称,必须 + FileType string `json:"file_type"` // 文件类型,docx,txt,md,pdf + UserID int `json:"user_id"` // 用户ID +}