94 lines
1.9 KiB
Go
94 lines
1.9 KiB
Go
package ticket
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"git.lxtend.com/qqbot/sqlite3"
|
|
)
|
|
|
|
func init() {
|
|
createTableQuery := `CREATE TABLE IF NOT EXISTS ticket (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
content TEXT NOT NULL,
|
|
fromQQ TEXT NOT NULL,
|
|
fromGroup TEXT DEFAULT NULL,
|
|
isDone BOOLEAN DEFAULT FALSE,
|
|
isDeleted BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
`
|
|
sqlite3.TryCreateTable(createTableQuery)
|
|
}
|
|
|
|
func storeTicket(content string, fromQQ int64, fromGroup int64) (int64, error) {
|
|
ticket := Ticket{
|
|
Content: content,
|
|
FromQQ: fromQQ,
|
|
FromGroup: fromGroup,
|
|
}
|
|
tx, err := sqlite3.GetTran()
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
defer tx.Rollback()
|
|
res, err := tx.Exec("INSERT INTO ticket (content, fromQQ, fromGroup) VALUES (:content, :fromQQ, :fromGroup)", ticket.Content, ticket.FromQQ, ticket.FromGroup)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
id, _ := res.LastInsertId()
|
|
tx.Commit()
|
|
return id, nil
|
|
}
|
|
|
|
func setTicketDone(id int) error {
|
|
tx, err := sqlite3.GetTran()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer tx.Rollback()
|
|
_, err = tx.Exec("UPDATE ticket SET isDone = TRUE WHERE id = ?", id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
tx.Commit()
|
|
return nil
|
|
}
|
|
|
|
func getAllTicket() ([]WebTicketModel, error) {
|
|
tx, err := sqlite3.GetTran()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer tx.Rollback()
|
|
|
|
var ticketList []Ticket
|
|
err = tx.Select(&ticketList, "SELECT * FROM ticket WHERE isDone=false")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
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: fromQQStr,
|
|
CreatedAt: v.CreatedAt,
|
|
}
|
|
webTickets = append(webTickets, webTicket)
|
|
}
|
|
|
|
err = tx.Commit()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return webTickets, nil
|
|
}
|