初始化仓库
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
package feishu
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const deleteModeCheckerNamePrefix = "delete_sel_"
|
||||
|
||||
func deleteModeCheckerName(sessionID string) string {
|
||||
return deleteModeCheckerNamePrefix + hex.EncodeToString([]byte(sessionID))
|
||||
}
|
||||
|
||||
func parseDeleteModeCheckerName(name string) (string, bool) {
|
||||
if !strings.HasPrefix(name, deleteModeCheckerNamePrefix) {
|
||||
return "", false
|
||||
}
|
||||
raw := strings.TrimPrefix(name, deleteModeCheckerNamePrefix)
|
||||
if raw == "" {
|
||||
return "", false
|
||||
}
|
||||
b, err := hex.DecodeString(raw)
|
||||
if err != nil {
|
||||
return "", false
|
||||
}
|
||||
return string(b), true
|
||||
}
|
||||
|
||||
func collectDeleteModeSelectedFromFormValue(formValue map[string]any) []string {
|
||||
if len(formValue) == 0 {
|
||||
return nil
|
||||
}
|
||||
ids := make([]string, 0, len(formValue))
|
||||
seen := make(map[string]struct{}, len(formValue))
|
||||
for key, val := range formValue {
|
||||
sessionID, ok := parseDeleteModeCheckerName(key)
|
||||
if !ok || !isTruthyFormValue(val) {
|
||||
continue
|
||||
}
|
||||
if _, exists := seen[sessionID]; exists {
|
||||
continue
|
||||
}
|
||||
seen[sessionID] = struct{}{}
|
||||
ids = append(ids, sessionID)
|
||||
}
|
||||
sort.Strings(ids)
|
||||
return ids
|
||||
}
|
||||
|
||||
func isTruthyFormValue(v any) bool {
|
||||
switch x := v.(type) {
|
||||
case bool:
|
||||
return x
|
||||
case string:
|
||||
s := strings.ToLower(strings.TrimSpace(x))
|
||||
return s == "true" || s == "1" || s == "yes" || s == "on"
|
||||
case float64:
|
||||
return x != 0
|
||||
case int:
|
||||
return x != 0
|
||||
case int64:
|
||||
return x != 0
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user