Skip to content

Commit 4d6247d

Browse files
committed
修复db未关闭导致触发mysql并发上限
1 parent a3aa3c7 commit 4d6247d

4 files changed

Lines changed: 61 additions & 26 deletions

File tree

control.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func BindUser(m *tb.Message, cid, cse string) error {
6161
}
6262
//MS information has gotten
6363
bot.Send(m.Chat, "MS_ID(MD5): "+u.msId+"\nuserPrincipalName: "+gjson.Get(info, "userPrincipalName").String()+"\ndisplayName: "+gjson.Get(info, "displayName").String()+"\n")
64-
if ok, err := AddData(db, u); !ok {
64+
if ok, err := AddData(u); !ok {
6565
logger.Printf("%d Bind error: %s\n", m.Chat.ID, err)
6666
return err
6767
}
@@ -71,13 +71,13 @@ func BindUser(m *tb.Message, cid, cse string) error {
7171

7272
//get bind num
7373
func GetBindNum(tgId int64) int {
74-
data := QueryDataByTG(db, tgId)
74+
data := QueryDataByTG(tgId)
7575
return len(data)
7676
}
7777

7878
//return true => exist
7979
func MSAppIsExist(tgId int64, clientId string) bool {
80-
data := QueryDataByTG(db, tgId)
80+
data := QueryDataByTG(tgId)
8181
var res MSData
8282
for _, res = range data {
8383
if res.clientId == clientId {
@@ -98,7 +98,7 @@ func SignTask() {
9898
SignOk = make(map[int64]int)
9999
fmt.Println("----Task Begin----")
100100
fmt.Println("Time:" + time.Now().Format("2006-01-02 15:04:05"))
101-
data := QueryDataAll(db)
101+
data := QueryDataAll()
102102
num = len(data)
103103
fmt.Println("Start Sign")
104104
//签到任务
@@ -130,7 +130,7 @@ func SignTask() {
130130
continue
131131
}
132132
u.uptime = time.Now().Unix()
133-
if ok, err := UpdateData(db, u); !ok {
133+
if ok, err := UpdateData(u); !ok {
134134
logger.Println(u.msId+" ", err)
135135
bot.Send(chat, pre+err.Error(), tmpBtn)
136136
SignErr = append(SignErr, se)
@@ -154,7 +154,7 @@ func SignTask() {
154154
//错误上限账户清退
155155
if ErrorTimes[u.msId] == ErrMaxTimes {
156156
logger.Println(u.msId + " Error Limit")
157-
if ok, err := DelData(db, u.msId); !ok {
157+
if ok, err := DelData(u.msId); !ok {
158158
logger.Println(err)
159159
} else {
160160
UnbindUser = append(UnbindUser, u.msId+" ( @"+chat.Username+" )")

handle.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func bStart(m *tb.Message) {
8282

8383
func bMy(m *tb.Message) {
8484
logger.Println(strconv.FormatInt(m.Chat.ID, 10) + " Start Manager Users")
85-
data := QueryDataByTG(db, m.Chat.ID)
85+
data := QueryDataByTG(m.Chat.ID)
8686
var inlineKeys [][]tb.InlineButton
8787
for _, u := range data {
8888
inlineBtn := tb.InlineButton{
@@ -97,7 +97,7 @@ func bMy(m *tb.Message) {
9797
}
9898
func bMyInlineBtn(c *tb.Callback) {
9999
logger.Println(strconv.FormatInt(c.Message.Chat.ID, 10) + " Get User Info")
100-
r := QueryDataByMS(db, c.Data)
100+
r := QueryDataByMS(c.Data)
101101
u := r[0]
102102
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"))
103103
bot.Respond(c)
@@ -140,7 +140,7 @@ func bBind2(m *tb.Message) {
140140

141141
func bUnBind(m *tb.Message) {
142142
logger.Println(strconv.FormatInt(m.Chat.ID, 10) + " Start Unbind")
143-
data := QueryDataByTG(db, m.Chat.ID)
143+
data := QueryDataByTG(m.Chat.ID)
144144
var inlineKeys [][]tb.InlineButton
145145
for _, u := range data {
146146
inlineBtn := tb.InlineButton{
@@ -155,9 +155,9 @@ func bUnBind(m *tb.Message) {
155155
}
156156
func bUnBindInlineBtn(c *tb.Callback) {
157157
logger.Println(strconv.FormatInt(c.Message.Chat.ID, 10) + " Unbind: " + c.Data)
158-
r := QueryDataByMS(db, c.Data)
158+
r := QueryDataByMS(c.Data)
159159
u := r[0]
160-
if ok, _ := DelData(db, u.msId); !ok {
160+
if ok, _ := DelData(u.msId); !ok {
161161
logger.Println(u.msId + " UnBind ERROR")
162162
bot.Send(c.Message.Chat, "解绑失败!")
163163
return
@@ -176,7 +176,7 @@ func bExport(m *tb.Message) {
176176
Other string
177177
}
178178
var MsMini []MsMiniData
179-
data := QueryDataByTG(db, m.Chat.ID)
179+
data := QueryDataByTG(m.Chat.ID)
180180
if len(data) == 0 {
181181
bot.Send(m.Chat, "你还没有绑定过账户嗷~")
182182
return

main.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ var (
1818
BotToken string
1919
Socks5 string
2020
bot *tb.Bot
21-
db *sql.DB
2221
logger *log.Logger
2322
)
2423

@@ -34,6 +33,8 @@ const (
3433
`
3534
)
3635

36+
var dbPath string
37+
3738
func main() {
3839
BotStart()
3940
}
@@ -84,17 +85,17 @@ func init() {
8485
port := viper.GetString("mysql.port")
8586
pwd := viper.GetString("mysql.password")
8687
database := viper.GetString("mysql.database")
87-
path := strings.Join([]string{user, ":", pwd, "@tcp(", host, ":", port, ")/", database, "?charset=utf8"}, "")
88+
dbPath = strings.Join([]string{user, ":", pwd, "@tcp(", host, ":", port, ")/", database, "?charset=utf8"}, "")
8889
//fmt.Println(path)
89-
db, err = sql.Open(dbDriverName, path)
90+
db, err := sql.Open(dbDriverName, dbPath)
9091
if err != nil {
9192
logger.Fatal(err)
9293
}
9394
logger.Println("Connect MySQL Success!")
94-
if ok, err := CreateTB(db); !ok {
95+
if ok, err := CreateTB(); !ok {
9596
logger.Fatal(err)
9697
}
97-
98+
defer db.Close()
9899
BotToken = viper.GetString("bot_token")
99100
Socks5 = viper.GetString("socks5")
100101
//set bot

mysql.go

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ type MSData struct {
1717
}
1818

1919
//update data by msId
20-
func UpdateData(db *sql.DB, u MSData) (bool, error) {
20+
func UpdateData(u MSData) (bool, error) {
21+
db, err := sql.Open(dbDriverName, dbPath)
22+
if err != nil {
23+
logger.Println(err)
24+
}
25+
defer db.Close()
2126
sqlString := `UPDATE users set tg_id=?,refresh_token=?,uptime=?,alias=?,client_id=?,client_secret=?,other=? where ms_id=?`
2227
stmt, err := db.Prepare(sqlString)
2328
if err != nil {
@@ -31,7 +36,12 @@ func UpdateData(db *sql.DB, u MSData) (bool, error) {
3136
}
3237

3338
//add data
34-
func AddData(db *sql.DB, u MSData) (bool, error) {
39+
func AddData(u MSData) (bool, error) {
40+
db, err := sql.Open(dbDriverName, dbPath)
41+
if err != nil {
42+
logger.Println(err)
43+
}
44+
defer db.Close()
3545
sqlString := `
3646
INSERT INTO users (tg_id, refresh_token,ms_id, uptime,alias,client_id,client_secret,other)
3747
VALUES (?,?,?,?,?,?,?,?)`
@@ -47,7 +57,12 @@ func AddData(db *sql.DB, u MSData) (bool, error) {
4757
}
4858

4959
//del data by ms_id
50-
func DelData(db *sql.DB, msId string) (bool, error) {
60+
func DelData(msId string) (bool, error) {
61+
db, err := sql.Open(dbDriverName, dbPath)
62+
if err != nil {
63+
logger.Println(err)
64+
}
65+
defer db.Close()
5166
sqlString := `delete from users where ms_id=?`
5267
stmt, err := db.Prepare(sqlString)
5368
if err != nil {
@@ -78,26 +93,45 @@ func QueryData(rows *sql.Rows) []MSData {
7893
}
7994
return result
8095
}
81-
func QueryDataByMS(db *sql.DB, msId string) []MSData {
96+
func QueryDataByMS(msId string) []MSData {
97+
db, err := sql.Open(dbDriverName, dbPath)
98+
if err != nil {
99+
logger.Println(err)
100+
}
101+
defer db.Close()
82102
rows, err := db.Query("select * from users where ms_id = ?", msId)
83103
CheckErr(err)
84104
return QueryData(rows)
85105
}
86106

87-
func QueryDataAll(db *sql.DB) []MSData {
107+
func QueryDataAll() []MSData {
108+
db, err := sql.Open(dbDriverName, dbPath)
109+
if err != nil {
110+
logger.Println(err)
111+
}
112+
defer db.Close()
88113
rows, err := db.Query("select * from users ")
89114
CheckErr(err)
90115
return QueryData(rows)
91116
}
92117

93118
//query data by tg_id
94-
func QueryDataByTG(db *sql.DB, tgId int64) []MSData {
119+
func QueryDataByTG(tgId int64) []MSData {
120+
db, err := sql.Open(dbDriverName, dbPath)
121+
if err != nil {
122+
logger.Println(err)
123+
}
124+
defer db.Close()
95125
rows, err := db.Query("select * from users where tg_id = ?", tgId)
96126
CheckErr(err)
97127
return QueryData(rows)
98128
}
99-
func CreateTB(db *sql.DB) (bool, error) {
100-
129+
func CreateTB() (bool, error) {
130+
db, err := sql.Open(dbDriverName, dbPath)
131+
if err != nil {
132+
logger.Println(err)
133+
}
134+
defer db.Close()
101135
sqltable := `
102136
create table if not exists users
103137
(
@@ -110,7 +144,7 @@ func CreateTB(db *sql.DB) (bool, error) {
110144
client_secret VARCHAR(255),
111145
other TEXT
112146
);`
113-
_, err := db.Exec(sqltable)
147+
_, err = db.Exec(sqltable)
114148
if err != nil {
115149
return false, err
116150
}

0 commit comments

Comments
 (0)