From 4d6247da5d5a126d92616b0efc4b751c57feb37b Mon Sep 17 00:00:00 2001 From: iyear Date: Sat, 18 Apr 2020 22:27:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Ddb=E6=9C=AA=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E8=A7=A6=E5=8F=91mysql=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E4=B8=8A=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- control.go | 12 ++++++------ handle.go | 12 ++++++------ main.go | 11 ++++++----- mysql.go | 52 +++++++++++++++++++++++++++++++++++++++++++--------- 4 files changed, 61 insertions(+), 26 deletions(-) diff --git a/control.go b/control.go index 15c772c..bc993d6 100644 --- a/control.go +++ b/control.go @@ -61,7 +61,7 @@ func BindUser(m *tb.Message, cid, cse string) error { } //MS information has gotten bot.Send(m.Chat, "MS_ID(MD5): "+u.msId+"\nuserPrincipalName: "+gjson.Get(info, "userPrincipalName").String()+"\ndisplayName: "+gjson.Get(info, "displayName").String()+"\n") - if ok, err := AddData(db, u); !ok { + if ok, err := AddData(u); !ok { logger.Printf("%d Bind error: %s\n", m.Chat.ID, err) return err } @@ -71,13 +71,13 @@ func BindUser(m *tb.Message, cid, cse string) error { //get bind num func GetBindNum(tgId int64) int { - data := QueryDataByTG(db, tgId) + data := QueryDataByTG(tgId) return len(data) } //return true => exist func MSAppIsExist(tgId int64, clientId string) bool { - data := QueryDataByTG(db, tgId) + data := QueryDataByTG(tgId) var res MSData for _, res = range data { if res.clientId == clientId { @@ -98,7 +98,7 @@ func SignTask() { SignOk = make(map[int64]int) fmt.Println("----Task Begin----") fmt.Println("Time:" + time.Now().Format("2006-01-02 15:04:05")) - data := QueryDataAll(db) + data := QueryDataAll() num = len(data) fmt.Println("Start Sign") //签到任务 @@ -130,7 +130,7 @@ func SignTask() { continue } u.uptime = time.Now().Unix() - if ok, err := UpdateData(db, u); !ok { + if ok, err := UpdateData(u); !ok { logger.Println(u.msId+" ", err) bot.Send(chat, pre+err.Error(), tmpBtn) SignErr = append(SignErr, se) @@ -154,7 +154,7 @@ func SignTask() { //错误上限账户清退 if ErrorTimes[u.msId] == ErrMaxTimes { logger.Println(u.msId + " Error Limit") - if ok, err := DelData(db, u.msId); !ok { + if ok, err := DelData(u.msId); !ok { logger.Println(err) } else { UnbindUser = append(UnbindUser, u.msId+" ( @"+chat.Username+" )") diff --git a/handle.go b/handle.go index 44e1279..f8b111b 100644 --- a/handle.go +++ b/handle.go @@ -82,7 +82,7 @@ func bStart(m *tb.Message) { func bMy(m *tb.Message) { logger.Println(strconv.FormatInt(m.Chat.ID, 10) + " Start Manager Users") - data := QueryDataByTG(db, m.Chat.ID) + data := QueryDataByTG(m.Chat.ID) var inlineKeys [][]tb.InlineButton for _, u := range data { inlineBtn := tb.InlineButton{ @@ -97,7 +97,7 @@ func bMy(m *tb.Message) { } func bMyInlineBtn(c *tb.Callback) { logger.Println(strconv.FormatInt(c.Message.Chat.ID, 10) + " Get User Info") - r := QueryDataByMS(db, c.Data) + r := QueryDataByMS(c.Data) u := r[0] bot.Send(c.Message.Chat, "信息\n别名:"+u.alias+"\nMS_ID(MD5): "+u.msId+"\nclient_id: "+u.clientId+"\nclient_secret: "+u.clientSecret+"\n最近更新时间: "+time.Unix(u.uptime, 0).Format("2006-01-02 15:04:05")) bot.Respond(c) @@ -140,7 +140,7 @@ func bBind2(m *tb.Message) { func bUnBind(m *tb.Message) { logger.Println(strconv.FormatInt(m.Chat.ID, 10) + " Start Unbind") - data := QueryDataByTG(db, m.Chat.ID) + data := QueryDataByTG(m.Chat.ID) var inlineKeys [][]tb.InlineButton for _, u := range data { inlineBtn := tb.InlineButton{ @@ -155,9 +155,9 @@ func bUnBind(m *tb.Message) { } func bUnBindInlineBtn(c *tb.Callback) { logger.Println(strconv.FormatInt(c.Message.Chat.ID, 10) + " Unbind: " + c.Data) - r := QueryDataByMS(db, c.Data) + r := QueryDataByMS(c.Data) u := r[0] - if ok, _ := DelData(db, u.msId); !ok { + if ok, _ := DelData(u.msId); !ok { logger.Println(u.msId + " UnBind ERROR") bot.Send(c.Message.Chat, "解绑失败!") return @@ -176,7 +176,7 @@ func bExport(m *tb.Message) { Other string } var MsMini []MsMiniData - data := QueryDataByTG(db, m.Chat.ID) + data := QueryDataByTG(m.Chat.ID) if len(data) == 0 { bot.Send(m.Chat, "你还没有绑定过账户嗷~") return diff --git a/main.go b/main.go index 68cc1af..f8da15c 100644 --- a/main.go +++ b/main.go @@ -18,7 +18,6 @@ var ( BotToken string Socks5 string bot *tb.Bot - db *sql.DB logger *log.Logger ) @@ -34,6 +33,8 @@ const ( ` ) +var dbPath string + func main() { BotStart() } @@ -84,17 +85,17 @@ func init() { port := viper.GetString("mysql.port") pwd := viper.GetString("mysql.password") database := viper.GetString("mysql.database") - path := strings.Join([]string{user, ":", pwd, "@tcp(", host, ":", port, ")/", database, "?charset=utf8"}, "") + dbPath = strings.Join([]string{user, ":", pwd, "@tcp(", host, ":", port, ")/", database, "?charset=utf8"}, "") //fmt.Println(path) - db, err = sql.Open(dbDriverName, path) + db, err := sql.Open(dbDriverName, dbPath) if err != nil { logger.Fatal(err) } logger.Println("Connect MySQL Success!") - if ok, err := CreateTB(db); !ok { + if ok, err := CreateTB(); !ok { logger.Fatal(err) } - + defer db.Close() BotToken = viper.GetString("bot_token") Socks5 = viper.GetString("socks5") //set bot diff --git a/mysql.go b/mysql.go index 7ca4914..af0f152 100644 --- a/mysql.go +++ b/mysql.go @@ -17,7 +17,12 @@ type MSData struct { } //update data by msId -func UpdateData(db *sql.DB, u MSData) (bool, error) { +func UpdateData(u MSData) (bool, error) { + db, err := sql.Open(dbDriverName, dbPath) + if err != nil { + logger.Println(err) + } + defer db.Close() sqlString := `UPDATE users set tg_id=?,refresh_token=?,uptime=?,alias=?,client_id=?,client_secret=?,other=? where ms_id=?` stmt, err := db.Prepare(sqlString) if err != nil { @@ -31,7 +36,12 @@ func UpdateData(db *sql.DB, u MSData) (bool, error) { } //add data -func AddData(db *sql.DB, u MSData) (bool, error) { +func AddData(u MSData) (bool, error) { + db, err := sql.Open(dbDriverName, dbPath) + if err != nil { + logger.Println(err) + } + defer db.Close() sqlString := ` INSERT INTO users (tg_id, refresh_token,ms_id, uptime,alias,client_id,client_secret,other) VALUES (?,?,?,?,?,?,?,?)` @@ -47,7 +57,12 @@ func AddData(db *sql.DB, u MSData) (bool, error) { } //del data by ms_id -func DelData(db *sql.DB, msId string) (bool, error) { +func DelData(msId string) (bool, error) { + db, err := sql.Open(dbDriverName, dbPath) + if err != nil { + logger.Println(err) + } + defer db.Close() sqlString := `delete from users where ms_id=?` stmt, err := db.Prepare(sqlString) if err != nil { @@ -78,26 +93,45 @@ func QueryData(rows *sql.Rows) []MSData { } return result } -func QueryDataByMS(db *sql.DB, msId string) []MSData { +func QueryDataByMS(msId string) []MSData { + db, err := sql.Open(dbDriverName, dbPath) + if err != nil { + logger.Println(err) + } + defer db.Close() rows, err := db.Query("select * from users where ms_id = ?", msId) CheckErr(err) return QueryData(rows) } -func QueryDataAll(db *sql.DB) []MSData { +func QueryDataAll() []MSData { + db, err := sql.Open(dbDriverName, dbPath) + if err != nil { + logger.Println(err) + } + defer db.Close() rows, err := db.Query("select * from users ") CheckErr(err) return QueryData(rows) } //query data by tg_id -func QueryDataByTG(db *sql.DB, tgId int64) []MSData { +func QueryDataByTG(tgId int64) []MSData { + db, err := sql.Open(dbDriverName, dbPath) + if err != nil { + logger.Println(err) + } + defer db.Close() rows, err := db.Query("select * from users where tg_id = ?", tgId) CheckErr(err) return QueryData(rows) } -func CreateTB(db *sql.DB) (bool, error) { - +func CreateTB() (bool, error) { + db, err := sql.Open(dbDriverName, dbPath) + if err != nil { + logger.Println(err) + } + defer db.Close() sqltable := ` create table if not exists users ( @@ -110,7 +144,7 @@ func CreateTB(db *sql.DB) (bool, error) { client_secret VARCHAR(255), other TEXT );` - _, err := db.Exec(sqltable) + _, err = db.Exec(sqltable) if err != nil { return false, err }