From 37161b4147d1b4c5da97a8a6a2843cd9e6aa80b9 Mon Sep 17 00:00:00 2001 From: lixiangwuxian Date: Thu, 24 Oct 2024 19:19:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/ticket/model.go | 2 +- handler/ticket/store_ticket.go | 29 +++++++++++++++++++++++++++- handler/ticket/ticker_gin_handler.go | 15 ++++++++++++++ main.go | 6 +----- router.go | 16 +++++++++++++++ 5 files changed, 61 insertions(+), 7 deletions(-) create mode 100644 handler/ticket/ticker_gin_handler.go create mode 100644 router.go diff --git a/handler/ticket/model.go b/handler/ticket/model.go index c275849..05c3610 100644 --- a/handler/ticket/model.go +++ b/handler/ticket/model.go @@ -13,6 +13,6 @@ type Ticket struct { type WebTicketModel struct { Id int64 `json:"id"` Content string `json:"content"` - IsDone bool `json:"isDone"` + FromQQ string `json:from` CreatedAt string `json:"created_at"` } diff --git a/handler/ticket/store_ticket.go b/handler/ticket/store_ticket.go index d99555e..7bef9c7 100644 --- a/handler/ticket/store_ticket.go +++ b/handler/ticket/store_ticket.go @@ -1,6 +1,10 @@ package ticket -import "git.lxtend.com/qqbot/sqlite3" +import ( + "strconv" + + "git.lxtend.com/qqbot/sqlite3" +) func init() { createTableQuery := `CREATE TABLE IF NOT EXISTS ticket ( @@ -49,3 +53,26 @@ func setTicketDone(id int) error { tx.Commit() return nil } + +func getAllTicket() ([]WebTicketModel, error) { + tx, err := sqlite3.GetTran() + if err != nil { + return nil, err + } + defer tx.Rollback() + var ticketList []Ticket + if _, err = tx.NamedQuery("SELECT * FROM ticket WHERE isDone=false", ticketList); err != nil { + return nil, err + } + tx.Commit() + var webTickets []WebTicketModel + for _, v := range ticketList { + webTicket := WebTicketModel{ + Id: v.Id, + Content: v.Content, + FromQQ: strconv.Itoa(int(v.FromQQ/10000)) + "****", + } + webTickets = append(webTickets, webTicket) + } + return webTickets, nil +} diff --git a/handler/ticket/ticker_gin_handler.go b/handler/ticket/ticker_gin_handler.go new file mode 100644 index 0000000..c19b8cf --- /dev/null +++ b/handler/ticket/ticker_gin_handler.go @@ -0,0 +1,15 @@ +package ticket + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +func TicketHandler(c *gin.Context) { + tickets, err := getAllTicket() + if err != nil { + c.AbortWithError(http.StatusInternalServerError, err) + } + c.JSON(200, tickets) +} diff --git a/main.go b/main.go index 3f9dfd6..3be8aca 100644 --- a/main.go +++ b/main.go @@ -4,7 +4,6 @@ import ( "log" "time" - "git.lxtend.com/qqbot/health" "git.lxtend.com/qqbot/sqlite3" wsclient "git.lxtend.com/qqbot/ws_client" "github.com/gin-gonic/gin" @@ -24,10 +23,7 @@ func main() { log.Print("Error creating WebSocket client:", err) } defer client.Close() - ginServer := gin.New() - engine := ginServer.Group("/health") - engine.GET("/ping", health.HealthHandler) - go ginServer.Run(":3434") + startRouter() for { time.Sleep(1000 * time.Second) } diff --git a/router.go b/router.go new file mode 100644 index 0000000..97b45b0 --- /dev/null +++ b/router.go @@ -0,0 +1,16 @@ +package main + +import ( + "git.lxtend.com/qqbot/handler/ticket" + "git.lxtend.com/qqbot/health" + "github.com/gin-gonic/gin" +) + +func startRouter() { + ginServer := gin.New() + healthEngine := ginServer.Group("/health") + healthEngine.GET("/ping", health.HealthHandler) + ticketEngine := ginServer.Group("/ticket") + ticketEngine.GET("", ticket.TicketHandler) + go ginServer.Run(":3434") +}