修复db未关闭导致触发mysql并发上限
This commit is contained in:
parent
a3aa3c7bb9
commit
4d6247da5d
12
control.go
12
control.go
@ -61,7 +61,7 @@ func BindUser(m *tb.Message, cid, cse string) error {
|
|||||||
}
|
}
|
||||||
//MS information has gotten
|
//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")
|
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)
|
logger.Printf("%d Bind error: %s\n", m.Chat.ID, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -71,13 +71,13 @@ func BindUser(m *tb.Message, cid, cse string) error {
|
|||||||
|
|
||||||
//get bind num
|
//get bind num
|
||||||
func GetBindNum(tgId int64) int {
|
func GetBindNum(tgId int64) int {
|
||||||
data := QueryDataByTG(db, tgId)
|
data := QueryDataByTG(tgId)
|
||||||
return len(data)
|
return len(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
//return true => exist
|
//return true => exist
|
||||||
func MSAppIsExist(tgId int64, clientId string) bool {
|
func MSAppIsExist(tgId int64, clientId string) bool {
|
||||||
data := QueryDataByTG(db, tgId)
|
data := QueryDataByTG(tgId)
|
||||||
var res MSData
|
var res MSData
|
||||||
for _, res = range data {
|
for _, res = range data {
|
||||||
if res.clientId == clientId {
|
if res.clientId == clientId {
|
||||||
@ -98,7 +98,7 @@ func SignTask() {
|
|||||||
SignOk = make(map[int64]int)
|
SignOk = make(map[int64]int)
|
||||||
fmt.Println("----Task Begin----")
|
fmt.Println("----Task Begin----")
|
||||||
fmt.Println("Time:" + time.Now().Format("2006-01-02 15:04:05"))
|
fmt.Println("Time:" + time.Now().Format("2006-01-02 15:04:05"))
|
||||||
data := QueryDataAll(db)
|
data := QueryDataAll()
|
||||||
num = len(data)
|
num = len(data)
|
||||||
fmt.Println("Start Sign")
|
fmt.Println("Start Sign")
|
||||||
//签到任务
|
//签到任务
|
||||||
@ -130,7 +130,7 @@ func SignTask() {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
u.uptime = time.Now().Unix()
|
u.uptime = time.Now().Unix()
|
||||||
if ok, err := UpdateData(db, u); !ok {
|
if ok, err := UpdateData(u); !ok {
|
||||||
logger.Println(u.msId+" ", err)
|
logger.Println(u.msId+" ", err)
|
||||||
bot.Send(chat, pre+err.Error(), tmpBtn)
|
bot.Send(chat, pre+err.Error(), tmpBtn)
|
||||||
SignErr = append(SignErr, se)
|
SignErr = append(SignErr, se)
|
||||||
@ -154,7 +154,7 @@ func SignTask() {
|
|||||||
//错误上限账户清退
|
//错误上限账户清退
|
||||||
if ErrorTimes[u.msId] == ErrMaxTimes {
|
if ErrorTimes[u.msId] == ErrMaxTimes {
|
||||||
logger.Println(u.msId + " Error Limit")
|
logger.Println(u.msId + " Error Limit")
|
||||||
if ok, err := DelData(db, u.msId); !ok {
|
if ok, err := DelData(u.msId); !ok {
|
||||||
logger.Println(err)
|
logger.Println(err)
|
||||||
} else {
|
} else {
|
||||||
UnbindUser = append(UnbindUser, u.msId+" ( @"+chat.Username+" )")
|
UnbindUser = append(UnbindUser, u.msId+" ( @"+chat.Username+" )")
|
||||||
|
|||||||
12
handle.go
12
handle.go
@ -82,7 +82,7 @@ func bStart(m *tb.Message) {
|
|||||||
|
|
||||||
func bMy(m *tb.Message) {
|
func bMy(m *tb.Message) {
|
||||||
logger.Println(strconv.FormatInt(m.Chat.ID, 10) + " Start Manager Users")
|
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
|
var inlineKeys [][]tb.InlineButton
|
||||||
for _, u := range data {
|
for _, u := range data {
|
||||||
inlineBtn := tb.InlineButton{
|
inlineBtn := tb.InlineButton{
|
||||||
@ -97,7 +97,7 @@ func bMy(m *tb.Message) {
|
|||||||
}
|
}
|
||||||
func bMyInlineBtn(c *tb.Callback) {
|
func bMyInlineBtn(c *tb.Callback) {
|
||||||
logger.Println(strconv.FormatInt(c.Message.Chat.ID, 10) + " Get User Info")
|
logger.Println(strconv.FormatInt(c.Message.Chat.ID, 10) + " Get User Info")
|
||||||
r := QueryDataByMS(db, c.Data)
|
r := QueryDataByMS(c.Data)
|
||||||
u := r[0]
|
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.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)
|
bot.Respond(c)
|
||||||
@ -140,7 +140,7 @@ func bBind2(m *tb.Message) {
|
|||||||
|
|
||||||
func bUnBind(m *tb.Message) {
|
func bUnBind(m *tb.Message) {
|
||||||
logger.Println(strconv.FormatInt(m.Chat.ID, 10) + " Start Unbind")
|
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
|
var inlineKeys [][]tb.InlineButton
|
||||||
for _, u := range data {
|
for _, u := range data {
|
||||||
inlineBtn := tb.InlineButton{
|
inlineBtn := tb.InlineButton{
|
||||||
@ -155,9 +155,9 @@ func bUnBind(m *tb.Message) {
|
|||||||
}
|
}
|
||||||
func bUnBindInlineBtn(c *tb.Callback) {
|
func bUnBindInlineBtn(c *tb.Callback) {
|
||||||
logger.Println(strconv.FormatInt(c.Message.Chat.ID, 10) + " Unbind: " + c.Data)
|
logger.Println(strconv.FormatInt(c.Message.Chat.ID, 10) + " Unbind: " + c.Data)
|
||||||
r := QueryDataByMS(db, c.Data)
|
r := QueryDataByMS(c.Data)
|
||||||
u := r[0]
|
u := r[0]
|
||||||
if ok, _ := DelData(db, u.msId); !ok {
|
if ok, _ := DelData(u.msId); !ok {
|
||||||
logger.Println(u.msId + " UnBind ERROR")
|
logger.Println(u.msId + " UnBind ERROR")
|
||||||
bot.Send(c.Message.Chat, "解绑失败!")
|
bot.Send(c.Message.Chat, "解绑失败!")
|
||||||
return
|
return
|
||||||
@ -176,7 +176,7 @@ func bExport(m *tb.Message) {
|
|||||||
Other string
|
Other string
|
||||||
}
|
}
|
||||||
var MsMini []MsMiniData
|
var MsMini []MsMiniData
|
||||||
data := QueryDataByTG(db, m.Chat.ID)
|
data := QueryDataByTG(m.Chat.ID)
|
||||||
if len(data) == 0 {
|
if len(data) == 0 {
|
||||||
bot.Send(m.Chat, "你还没有绑定过账户嗷~")
|
bot.Send(m.Chat, "你还没有绑定过账户嗷~")
|
||||||
return
|
return
|
||||||
|
|||||||
11
main.go
11
main.go
@ -18,7 +18,6 @@ var (
|
|||||||
BotToken string
|
BotToken string
|
||||||
Socks5 string
|
Socks5 string
|
||||||
bot *tb.Bot
|
bot *tb.Bot
|
||||||
db *sql.DB
|
|
||||||
logger *log.Logger
|
logger *log.Logger
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -34,6 +33,8 @@ const (
|
|||||||
`
|
`
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var dbPath string
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
BotStart()
|
BotStart()
|
||||||
}
|
}
|
||||||
@ -84,17 +85,17 @@ func init() {
|
|||||||
port := viper.GetString("mysql.port")
|
port := viper.GetString("mysql.port")
|
||||||
pwd := viper.GetString("mysql.password")
|
pwd := viper.GetString("mysql.password")
|
||||||
database := viper.GetString("mysql.database")
|
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)
|
//fmt.Println(path)
|
||||||
db, err = sql.Open(dbDriverName, path)
|
db, err := sql.Open(dbDriverName, dbPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal(err)
|
logger.Fatal(err)
|
||||||
}
|
}
|
||||||
logger.Println("Connect MySQL Success!")
|
logger.Println("Connect MySQL Success!")
|
||||||
if ok, err := CreateTB(db); !ok {
|
if ok, err := CreateTB(); !ok {
|
||||||
logger.Fatal(err)
|
logger.Fatal(err)
|
||||||
}
|
}
|
||||||
|
defer db.Close()
|
||||||
BotToken = viper.GetString("bot_token")
|
BotToken = viper.GetString("bot_token")
|
||||||
Socks5 = viper.GetString("socks5")
|
Socks5 = viper.GetString("socks5")
|
||||||
//set bot
|
//set bot
|
||||||
|
|||||||
52
mysql.go
52
mysql.go
@ -17,7 +17,12 @@ type MSData struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//update data by msId
|
//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=?`
|
sqlString := `UPDATE users set tg_id=?,refresh_token=?,uptime=?,alias=?,client_id=?,client_secret=?,other=? where ms_id=?`
|
||||||
stmt, err := db.Prepare(sqlString)
|
stmt, err := db.Prepare(sqlString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -31,7 +36,12 @@ func UpdateData(db *sql.DB, u MSData) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//add data
|
//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 := `
|
sqlString := `
|
||||||
INSERT INTO users (tg_id, refresh_token,ms_id, uptime,alias,client_id,client_secret,other)
|
INSERT INTO users (tg_id, refresh_token,ms_id, uptime,alias,client_id,client_secret,other)
|
||||||
VALUES (?,?,?,?,?,?,?,?)`
|
VALUES (?,?,?,?,?,?,?,?)`
|
||||||
@ -47,7 +57,12 @@ func AddData(db *sql.DB, u MSData) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//del data by ms_id
|
//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=?`
|
sqlString := `delete from users where ms_id=?`
|
||||||
stmt, err := db.Prepare(sqlString)
|
stmt, err := db.Prepare(sqlString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -78,26 +93,45 @@ func QueryData(rows *sql.Rows) []MSData {
|
|||||||
}
|
}
|
||||||
return result
|
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)
|
rows, err := db.Query("select * from users where ms_id = ?", msId)
|
||||||
CheckErr(err)
|
CheckErr(err)
|
||||||
return QueryData(rows)
|
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 ")
|
rows, err := db.Query("select * from users ")
|
||||||
CheckErr(err)
|
CheckErr(err)
|
||||||
return QueryData(rows)
|
return QueryData(rows)
|
||||||
}
|
}
|
||||||
|
|
||||||
//query data by tg_id
|
//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)
|
rows, err := db.Query("select * from users where tg_id = ?", tgId)
|
||||||
CheckErr(err)
|
CheckErr(err)
|
||||||
return QueryData(rows)
|
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 := `
|
sqltable := `
|
||||||
create table if not exists users
|
create table if not exists users
|
||||||
(
|
(
|
||||||
@ -110,7 +144,7 @@ func CreateTB(db *sql.DB) (bool, error) {
|
|||||||
client_secret VARCHAR(255),
|
client_secret VARCHAR(255),
|
||||||
other TEXT
|
other TEXT
|
||||||
);`
|
);`
|
||||||
_, err := db.Exec(sqltable)
|
_, err = db.Exec(sqltable)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user