Skip to content

Commit 9128d4a

Browse files
committed
Update.
1 parent d2dfc86 commit 9128d4a

File tree

2 files changed

+52
-12
lines changed

2 files changed

+52
-12
lines changed

cmd/dashboard/controller/member_api.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -199,18 +199,34 @@ func (ma *memberAPI) deleteToken(c *gin.Context) {
199199
// 在数据库中删除该Token
200200
var err error
201201
if singleton.Conf.DatabaseType == "badger" {
202-
// 在BadgerDB模式下,需要通过ID删除
202+
// 在BadgerDB模式下,需要删除所有匹配的Token记录(解决重复记录问题)
203203
if tokenObj != nil && db.DB != nil {
204204
apiTokenOps := db.NewApiTokenOps(db.DB)
205-
err = apiTokenOps.DeleteApiToken(tokenObj.ID)
206-
if err != nil {
207-
c.JSON(http.StatusOK, model.Response{
208-
Code: http.StatusBadRequest,
209-
Message: fmt.Sprintf("删除API令牌失败:%s", err),
210-
})
211-
return
205+
206+
// 先获取所有API Token,找到所有匹配的记录
207+
allTokens, getAllErr := apiTokenOps.GetAllApiTokens()
208+
if getAllErr != nil {
209+
log.Printf("获取所有API令牌失败: %v", getAllErr)
210+
} else {
211+
// 删除所有匹配的Token记录
212+
deletedCount := 0
213+
for _, t := range allTokens {
214+
if t.Token == token {
215+
if deleteErr := apiTokenOps.DeleteApiToken(t.ID); deleteErr != nil {
216+
log.Printf("删除API令牌记录失败 (ID: %d): %v", t.ID, deleteErr)
217+
} else {
218+
deletedCount++
219+
log.Printf("BadgerDB: 成功删除API令牌记录 %s (ID: %d, Note: %s)", token, t.ID, t.Note)
220+
}
221+
}
222+
}
223+
if deletedCount > 1 {
224+
log.Printf("BadgerDB: 发现并删除了 %d 个重复的API令牌记录: %s", deletedCount, token)
225+
}
226+
if deletedCount == 0 {
227+
err = fmt.Errorf("未找到要删除的API令牌记录")
228+
}
212229
}
213-
log.Printf("BadgerDB: 成功删除API令牌 %s (Note: %s)", token, tokenObj.Note)
214230
}
215231
} else if singleton.DB != nil {
216232
err = singleton.DB.Unscoped().Delete(&model.ApiToken{}, "token = ?", token).Error

resource/template/dashboard-default/notification.html

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,15 @@
7979
<td>{{$rule.Enable}}</td>
8080
<td>
8181
<div class="ui mini icon buttons">
82-
<button class="ui button" onclick="addOrEditAlertRule({{$rule}})">
82+
<button class="ui button edit-alert-rule-btn"
83+
data-id="{{$rule.ID}}"
84+
data-name="{{$rule.Name}}"
85+
data-notification-tag="{{$rule.NotificationTag}}"
86+
data-trigger-mode="{{$rule.TriggerMode}}"
87+
data-rules-raw="{{$rule.RulesRaw}}"
88+
data-fail-trigger-tasks-raw="{{$rule.FailTriggerTasksRaw}}"
89+
data-recover-trigger-tasks-raw="{{$rule.RecoverTriggerTasksRaw}}"
90+
data-enable="{{$rule.Enable}}">
8391
<i class="edit icon"></i>
8492
</button>
8593
<button class="ui button"
@@ -98,6 +106,22 @@
98106
{{template "component/rule"}}
99107
{{template "common/footer" .}}
100108
<script>
101-
$('.checkbox').checkbox()
109+
$('.checkbox').checkbox();
110+
111+
// 为编辑报警规则按钮添加事件监听器
112+
$(document).on('click', '.edit-alert-rule-btn', function() {
113+
const btn = $(this);
114+
const rule = {
115+
ID: parseInt(btn.data('id')),
116+
Name: btn.data('name'),
117+
NotificationTag: btn.data('notification-tag'),
118+
TriggerMode: parseInt(btn.data('trigger-mode')),
119+
RulesRaw: btn.data('rules-raw'),
120+
FailTriggerTasksRaw: btn.data('fail-trigger-tasks-raw'),
121+
RecoverTriggerTasksRaw: btn.data('recover-trigger-tasks-raw'),
122+
Enable: btn.data('enable') === 'true' || btn.data('enable') === true
123+
};
124+
addOrEditAlertRule(rule);
125+
});
102126
</script>
103-
{{end}}
127+
{{end}}

0 commit comments

Comments
 (0)