64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package tools
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type Decision string
|
|
|
|
const (
|
|
DecisionConfirm Decision = "confirm"
|
|
DecisionCancel Decision = "cancel"
|
|
)
|
|
|
|
func ParseConfirmationDecision(value string) Decision {
|
|
value = strings.ToLower(strings.TrimSpace(value))
|
|
if value == "" {
|
|
return ""
|
|
}
|
|
confirmWords := []string{"确认", "是", "好的", "可以", "ok", "yes", "继续", "同意"}
|
|
for _, item := range confirmWords {
|
|
if strings.Contains(value, item) {
|
|
return DecisionConfirm
|
|
}
|
|
}
|
|
cancelWords := []string{"取消", "不用", "不需要", "算了", "no"}
|
|
for _, item := range cancelWords {
|
|
if strings.Contains(value, item) {
|
|
return DecisionCancel
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func getStringValue(data map[string]any, key string) string {
|
|
value, ok := data[key]
|
|
if !ok || value == nil {
|
|
return ""
|
|
}
|
|
switch v := value.(type) {
|
|
case string:
|
|
return v
|
|
default:
|
|
return fmt.Sprintf("%v", v)
|
|
}
|
|
}
|
|
|
|
func getInt64Value(data map[string]any, key string) int64 {
|
|
value, ok := data[key]
|
|
if !ok || value == nil {
|
|
return 0
|
|
}
|
|
switch v := value.(type) {
|
|
case float64:
|
|
return int64(v)
|
|
case int64:
|
|
return v
|
|
case int:
|
|
return int64(v)
|
|
default:
|
|
return 0
|
|
}
|
|
}
|