Skip to content

Commit 22e23ef

Browse files
committed
✏️ 修复 sql 查询异常
1 parent 3893593 commit 22e23ef

File tree

2 files changed

+31
-32
lines changed

2 files changed

+31
-32
lines changed

control/rule.go

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,13 @@ func (m *Control) Reset(groupID int64) {
8989
func (m *Control) IsEnabledIn(gid int64) bool {
9090
var c grpcfg
9191
var err error
92+
logrus.Debugln("[control] IsEnabledIn recv gid =", gid)
9293
if gid != 0 {
9394
m.RLock()
9495
err = db.Find(m.service, &c, "WHERE gid = "+strconv.FormatInt(gid, 10))
9596
m.RUnlock()
96-
if err == nil {
97+
logrus.Debugln("[control] db find gid =", c.GroupID)
98+
if err == nil && gid == c.GroupID {
9799
logrus.Debugf("[control] plugin %s of grp %d : %d", m.service, c.GroupID, c.Disable)
98100
return c.Disable == 0
99101
}
@@ -102,7 +104,7 @@ func (m *Control) IsEnabledIn(gid int64) bool {
102104
err = db.Find(m.service, &c, "WHERE gid = 0")
103105
m.RUnlock()
104106
if err == nil {
105-
logrus.Debugf("[control] plugin %s of all : %d", m.service, c.GroupID, c.Disable)
107+
logrus.Debugf("[control] plugin %s of all : %d", m.service, c.Disable)
106108
return c.Disable == 0
107109
}
108110
return !m.options.DisableOnDefault
@@ -117,6 +119,7 @@ func (m *Control) Handler() zero.Rule {
117119
// 个人用户
118120
grp = -ctx.Event.UserID
119121
}
122+
logrus.Debugln("[control] handler get gid =", grp)
120123
return m.IsEnabledIn(grp)
121124
}
122125
}
@@ -150,6 +153,13 @@ func copyMap(m map[string]*Control) map[string]*Control {
150153
return ret
151154
}
152155

156+
func userOrGrpAdmin(ctx *zero.Ctx) bool {
157+
if zero.OnlyGroup(ctx) {
158+
return zero.AdminPermission(ctx)
159+
}
160+
return zero.OnlyToMe(ctx)
161+
}
162+
153163
func init() {
154164
if !hasinit {
155165
mu.Lock()
@@ -162,12 +172,7 @@ func init() {
162172
zero.OnCommandGroup([]string{
163173
"启用", "enable", "禁用", "disable",
164174
"全局启用", "enableall", "全局禁用", "disableall",
165-
}, func(ctx *zero.Ctx) bool {
166-
if zero.OnlyGroup(ctx) {
167-
return zero.AdminPermission(ctx)
168-
}
169-
return zero.OnlyToMe(ctx)
170-
}).Handle(func(ctx *zero.Ctx) {
175+
}, userOrGrpAdmin).Handle(func(ctx *zero.Ctx) {
171176
model := extension.CommandModel{}
172177
_ = ctx.Parse(&model)
173178
service, ok := Lookup(model.Args)
@@ -191,12 +196,7 @@ func init() {
191196
}
192197
})
193198

194-
zero.OnCommandGroup([]string{"还原", "reset"}, func(ctx *zero.Ctx) bool {
195-
if zero.OnlyGroup(ctx) {
196-
return zero.AdminPermission(ctx)
197-
}
198-
return zero.OnlyToMe(ctx)
199-
}).Handle(func(ctx *zero.Ctx) {
199+
zero.OnCommandGroup([]string{"还原", "reset"}, userOrGrpAdmin).Handle(func(ctx *zero.Ctx) {
200200
model := extension.CommandModel{}
201201
_ = ctx.Parse(&model)
202202
service, ok := Lookup(model.Args)
@@ -212,7 +212,7 @@ func init() {
212212
ctx.SendChain(message.Text("已还原服务的默认启用状态: " + model.Args))
213213
})
214214

215-
zero.OnCommandGroup([]string{"用法", "usage"}, zero.AdminPermission, zero.OnlyGroup).
215+
zero.OnCommandGroup([]string{"用法", "usage"}, userOrGrpAdmin).
216216
Handle(func(ctx *zero.Ctx) {
217217
model := extension.CommandModel{}
218218
_ = ctx.Parse(&model)
@@ -227,14 +227,15 @@ func init() {
227227
}
228228
})
229229

230-
zero.OnCommandGroup([]string{"服务列表", "service_list"}, zero.AdminPermission, zero.OnlyGroup).
230+
zero.OnCommandGroup([]string{"服务列表", "service_list"}, userOrGrpAdmin).
231231
Handle(func(ctx *zero.Ctx) {
232232
msg := `---服务列表---`
233233
i := 0
234+
gid := ctx.Event.GroupID
234235
ForEach(func(key string, manager *Control) bool {
235236
i++
236237
msg += "\n" + strconv.Itoa(i) + `: `
237-
if manager.IsEnabledIn(ctx.Event.GroupID) {
238+
if manager.IsEnabledIn(gid) {
238239
msg += "●" + key
239240
} else {
240241
msg += "○" + key

utils/sql/sqlite.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,15 @@ func (db *Sqlite) Create(table string, objptr interface{}) (err error) {
4848
cmd = append(cmd, "NULL);")
4949
}
5050
}
51-
if _, err := db.DB.Exec(strings.Join(cmd, " ")); err != nil {
52-
return err
53-
}
54-
return nil
51+
_, err = db.DB.Exec(strings.Join(cmd, " ") + ";")
52+
return
5553
}
5654

5755
// Insert 插入数据集
5856
// 默认结构体的第一个元素为主键
5957
// 返回错误
60-
func (db *Sqlite) Insert(table string, objptr interface{}) (err error) {
61-
rows, err := db.DB.Query("SELECT * FROM " + table)
58+
func (db *Sqlite) Insert(table string, objptr interface{}) error {
59+
rows, err := db.DB.Query("SELECT * FROM " + table + ";")
6260
if err != nil {
6361
return err
6462
}
@@ -102,27 +100,27 @@ func (db *Sqlite) Insert(table string, objptr interface{}) (err error) {
102100
cmd = append(cmd, ")")
103101
}
104102
}
105-
stmt, err := db.DB.Prepare(strings.Join(cmd, " "))
103+
stmt, err := db.DB.Prepare(strings.Join(cmd, " ") + ";")
106104
if err != nil {
107105
return err
108106
}
109107
_, err = stmt.Exec(values...)
110108
if err != nil {
111109
return err
112110
}
113-
return nil
111+
return stmt.Close()
114112
}
115113

116114
// Find 查询数据库
117115
// condition 可为"WHERE id = 0"
118116
// 默认字段与结构体元素顺序一致
119117
// 返回错误
120-
func (db *Sqlite) Find(table string, objptr interface{}, condition string) (err error) {
118+
func (db *Sqlite) Find(table string, objptr interface{}, condition string) error {
121119
var cmd = []string{}
122120
cmd = append(cmd, "SELECT * FROM ")
123121
cmd = append(cmd, table)
124122
cmd = append(cmd, condition)
125-
rows, err := db.DB.Query(strings.Join(cmd, " "))
123+
rows, err := db.DB.Query(strings.Join(cmd, " ") + ";")
126124
if err != nil {
127125
return err
128126
}
@@ -171,20 +169,20 @@ func (db *Sqlite) ListTables() (s []string, err error) {
171169
// Del 删除数据库
172170
// condition 可为"WHERE id = 0"
173171
// 返回错误
174-
func (db *Sqlite) Del(table string, condition string) (err error) {
172+
func (db *Sqlite) Del(table string, condition string) error {
175173
var cmd = []string{}
176174
cmd = append(cmd, "DELETE FROM")
177175
cmd = append(cmd, table)
178176
cmd = append(cmd, condition)
179-
stmt, err := db.DB.Prepare(strings.Join(cmd, " "))
177+
stmt, err := db.DB.Prepare(strings.Join(cmd, " ") + ";")
180178
if err != nil {
181179
return err
182180
}
183181
_, err = stmt.Exec()
184182
if err != nil {
185183
return err
186184
}
187-
return nil
185+
return stmt.Close()
188186
}
189187

190188
// Count 查询数据库行数
@@ -193,17 +191,17 @@ func (db *Sqlite) Count(table string) (num int, err error) {
193191
var cmd = []string{}
194192
cmd = append(cmd, "SELECT * FROM")
195193
cmd = append(cmd, table)
196-
rows, err := db.DB.Query(strings.Join(cmd, " "))
194+
rows, err := db.DB.Query(strings.Join(cmd, " ") + ";")
197195
if err != nil {
198196
return num, err
199197
}
200198
if rows.Err() != nil {
201199
return num, rows.Err()
202200
}
203-
defer rows.Close()
204201
for rows.Next() {
205202
num++
206203
}
204+
rows.Close()
207205
return num, nil
208206
}
209207

0 commit comments

Comments
 (0)