优化表结构,重构模型,重新实现基于白银网关的提取节点流程

This commit is contained in:
2025-11-24 18:44:06 +08:00
parent 9a574f55cb
commit cb2a963a37
142 changed files with 6528 additions and 5808 deletions

View File

@@ -5,11 +5,36 @@ import (
"time"
)
// P 是一个工具函数,用于在表达式内原地创建一个指针
// ====================
// 逻辑
// ====================
func Else[T any](v *T, or T) T {
if v == nil {
return or
} else {
return *v
}
}
func ElseTo[A any, B any](a *A, f func(A) B) *B {
if a == nil {
return nil
} else {
return P(f(*a))
}
}
// ====================
// 指针
// ====================
// P 原地创建值的指针
func P[T any](v T) *T {
return &v
}
// Z 转换值为不可空,如果值为 nil则返回其零值
func Z[T any](v *T) T {
if v == nil {
var zero T
@@ -18,6 +43,7 @@ func Z[T any](v *T) T {
return *v
}
// X 转换值为可空,如果值为零值,则返回 nil
func X[T comparable](v T) *T {
var zero T
if v == zero {
@@ -26,28 +52,50 @@ func X[T comparable](v T) *T {
return &v
}
func Today() time.Time {
var now = time.Now()
return time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
}
// ====================
// 数组
// ====================
func Date(date time.Time) time.Time {
return time.Date(date.Year(), date.Month(), date.Day(), 0, 0, 0, 0, date.Location())
}
func SameDate(date time.Time) bool {
var now = time.Now()
return date.Year() == now.Year() && date.Month() == now.Month() && date.Day() == now.Day()
}
func Or[T any](v *T, or T) T {
if v == nil {
return or
} else {
return *v
func Map[T any, R any](src []T, convert func(T) R) []R {
dst := make([]R, len(src))
for i, item := range src {
dst[i] = convert(item)
}
return dst
}
// ====================
// 时间
// ====================
func DateHead(date time.Time) time.Time {
var y, m, d = date.Date()
return time.Date(y, m, d, 0, 0, 0, 0, date.Location())
}
func DateFoot(date time.Time) time.Time {
var y, m, d = date.Date()
return time.Date(y, m, d, 23, 59, 59, 999999999, date.Location())
}
func Today() time.Time {
return DateHead(time.Now())
}
func IsSameDate(date1, date2 time.Time) bool {
var y1, m1, d1 = date1.Date()
var y2, m2, d2 = date2.Date()
return y1 == y2 && m1 == m2 && d1 == d2
}
func IsToday(date time.Time) bool {
return IsSameDate(date, time.Now())
}
// ====================
// 错误
// ====================
func CombineErrors(errs []error) error {
var combinedErr error = nil
for _, err := range errs {