From d0152c6c81444397228c25f4706759bf8bdefbf2 Mon Sep 17 00:00:00 2001 From: lixiangwuxian Date: Sat, 26 Oct 2024 03:30:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 3 ++- go.sum | 11 ++++++++++- handler/ticket/store_ticket.go | 25 ++++++++++++++++++++----- handler/ticket/ticket.go | 2 +- router.go | 11 +++++++++++ 5 files changed, 44 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 8a510b9..b83444a 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/chromedp/chromedp v0.10.0 github.com/docker/docker v27.3.1+incompatible github.com/fogleman/gg v1.3.0 + github.com/gin-contrib/cors v1.7.2 github.com/gin-gonic/gin v1.10.0 github.com/google/uuid v1.6.0 github.com/gorilla/websocket v1.5.3 @@ -14,6 +15,7 @@ require ( github.com/mattn/go-sqlite3 v1.14.23 github.com/sashabaranov/go-openai v1.30.3 golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c + golang.org/x/net v0.30.0 ) require ( @@ -67,7 +69,6 @@ require ( golang.org/x/arch v0.8.0 // indirect golang.org/x/crypto v0.28.0 // indirect golang.org/x/image v0.21.0 // indirect - golang.org/x/net v0.30.0 // indirect golang.org/x/sys v0.26.0 // indirect golang.org/x/text v0.19.0 // indirect golang.org/x/time v0.7.0 // indirect diff --git a/go.sum b/go.sum index a1e0929..fe961fb 100644 --- a/go.sum +++ b/go.sum @@ -40,6 +40,8 @@ github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/gin-contrib/cors v1.7.2 h1:oLDHxdg8W/XDoN/8zamqk/Drgt4oVZDvaV0YmvVICQw= +github.com/gin-contrib/cors v1.7.2/go.mod h1:SUJVARKgQ40dmrzgXEVxj2m7Ig1v1qIboQkPDTQ9t2E= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= @@ -93,6 +95,10 @@ github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuV github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80 h1:6Yzfa6GP0rIo/kULo2bwGEkFvCePZ3qHDDTC3/J9Swo= github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= @@ -130,6 +136,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/sashabaranov/go-openai v1.30.3 h1:TEdRP3otRXX2A7vLoU+kI5XpoSo7VUUlM/rEttUqgek= github.com/sashabaranov/go-openai v1.30.3/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= @@ -226,8 +234,9 @@ google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/handler/ticket/store_ticket.go b/handler/ticket/store_ticket.go index 7bef9c7..d6f4cdd 100644 --- a/handler/ticket/store_ticket.go +++ b/handler/ticket/store_ticket.go @@ -60,19 +60,34 @@ func getAllTicket() ([]WebTicketModel, error) { return nil, err } defer tx.Rollback() + var ticketList []Ticket - if _, err = tx.NamedQuery("SELECT * FROM ticket WHERE isDone=false", ticketList); err != nil { + err = tx.Select(&ticketList, "SELECT * FROM ticket WHERE isDone=false") + if err != nil { return nil, err } - tx.Commit() + var webTickets []WebTicketModel for _, v := range ticketList { + var fromQQStr string + if v.FromQQ == 0 { + fromQQStr = "未知" + } else { + fromQQStr = strconv.Itoa(int(v.FromQQ/10000)) + "****" + } webTicket := WebTicketModel{ - Id: v.Id, - Content: v.Content, - FromQQ: strconv.Itoa(int(v.FromQQ/10000)) + "****", + Id: v.Id, + Content: v.Content, + FromQQ: fromQQStr, + CreatedAt: v.CreatedAt, } webTickets = append(webTickets, webTicket) } + + err = tx.Commit() + if err != nil { + return nil, err + } + return webTickets, nil } diff --git a/handler/ticket/ticket.go b/handler/ticket/ticket.go index 724b948..a6581ca 100644 --- a/handler/ticket/ticket.go +++ b/handler/ticket/ticket.go @@ -25,7 +25,7 @@ func newTicket(msg model.Message) model.Reply { } } return model.Reply{ - ReplyMsg: fmt.Sprintf("提单成功,可以至 https://lxtend.com/qbot/ticket?id=%d 查看工单", id), + ReplyMsg: fmt.Sprintf("提单成功,id为%d,可以至 https://www.lxtend.com/ticket 查看工单", id), ReferOriginMsg: true, FromMsg: msg, } diff --git a/router.go b/router.go index 97b45b0..b027c3c 100644 --- a/router.go +++ b/router.go @@ -1,13 +1,24 @@ package main import ( + "time" + "git.lxtend.com/qqbot/handler/ticket" "git.lxtend.com/qqbot/health" + "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ) func startRouter() { ginServer := gin.New() + ginServer.Use(cors.New(cors.Config{ + AllowOrigins: []string{"https://www.lxtend.com"}, + AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, + AllowHeaders: []string{"Origin", "Content-Type", "Accept", "Authorization", "X-CSRF-Token"}, + ExposeHeaders: []string{"Content-Length", "X-CSRF-Token"}, + AllowCredentials: true, + MaxAge: 12 * time.Hour, + })) healthEngine := ginServer.Group("/health") healthEngine.GET("/ping", health.HealthHandler) ticketEngine := ginServer.Group("/ticket")