优化表结构,重构模型,重新实现基于白银网关的提取节点流程
This commit is contained in:
86
pkg/u/u.go
86
pkg/u/u.go
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user