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

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

@@ -4,9 +4,8 @@ import (
"platform/pkg/u"
"platform/web/auth"
"platform/web/core"
resource2 "platform/web/domains/resource"
g "platform/web/globals"
"platform/web/globals/orm"
m "platform/web/models"
q "platform/web/queries"
s "platform/web/services"
"time"
@@ -43,7 +42,7 @@ func ListResourceShort(c *fiber.Ctx) error {
// 查询套餐列表
do := q.Resource.Where(
q.Resource.UserID.Eq(authCtx.User.ID),
q.Resource.Type.Eq(int32(resource2.TypeShort)),
q.Resource.Type.Eq(int(m.ResourceTypeShort)),
)
if req.ResourceNo != nil && *req.ResourceNo != "" {
do.Where(q.Resource.ResourceNo.Eq(*req.ResourceNo))
@@ -52,19 +51,19 @@ func ListResourceShort(c *fiber.Ctx) error {
do.Where(q.Resource.Active.Is(*req.Active))
}
if req.Type != nil {
do.Where(q.ResourceShort.As(q.Resource.Short.Name()).Type.Eq(int32(*req.Type)))
do.Where(q.ResourceShort.As(q.Resource.Short.Name()).Type.Eq(*req.Type))
}
if req.CreateAfter != nil {
do.Where(q.Resource.CreatedAt.Gte(orm.LocalDateTime(*req.CreateAfter)))
do.Where(q.Resource.CreatedAt.Gte(*req.CreateAfter))
}
if req.CreateBefore != nil {
do.Where(q.Resource.CreatedAt.Lte(orm.LocalDateTime(*req.CreateBefore)))
do.Where(q.Resource.CreatedAt.Lte(*req.CreateBefore))
}
if req.ExpireAfter != nil {
do.Where(q.ResourceShort.As(q.Resource.Short.Name()).Expire.Gte(orm.LocalDateTime(*req.ExpireAfter)))
do.Where(q.ResourceShort.As(q.Resource.Short.Name()).Expire.Gte(*req.ExpireAfter))
}
if req.ExpireBefore != nil {
do.Where(q.ResourceShort.As(q.Resource.Short.Name()).Expire.Lte(orm.LocalDateTime(*req.ExpireBefore)))
do.Where(q.ResourceShort.As(q.Resource.Short.Name()).Expire.Lte(*req.ExpireBefore))
}
resource, err := q.Resource.Debug().Where(do).
@@ -124,7 +123,7 @@ func ListResourceLong(c *fiber.Ctx) error {
// 查询套餐列表
do := q.Resource.Where(
q.Resource.UserID.Eq(authCtx.User.ID),
q.Resource.Type.Eq(int32(resource2.TypeLong)),
q.Resource.Type.Eq(int(m.ResourceTypeLong)),
)
if req.ResourceNo != nil && *req.ResourceNo != "" {
do.Where(q.Resource.ResourceNo.Eq(*req.ResourceNo))
@@ -133,19 +132,19 @@ func ListResourceLong(c *fiber.Ctx) error {
do.Where(q.Resource.Active.Is(*req.Active))
}
if req.Type != nil {
do.Where(q.ResourceLong.As(q.Resource.Long.Name()).Type.Eq(int32(*req.Type)))
do.Where(q.ResourceLong.As(q.Resource.Long.Name()).Type.Eq(int(*req.Type)))
}
if req.CreateAfter != nil {
do.Where(q.Resource.CreatedAt.Gte(orm.LocalDateTime(*req.CreateAfter)))
do.Where(q.Resource.CreatedAt.Gte(*req.CreateAfter))
}
if req.CreateBefore != nil {
do.Where(q.Resource.CreatedAt.Lte(orm.LocalDateTime(*req.CreateBefore)))
do.Where(q.Resource.CreatedAt.Lte(*req.CreateBefore))
}
if req.ExpireAfter != nil {
do.Where(q.ResourceLong.As(q.Resource.Long.Name()).Expire.Gte(orm.LocalDateTime(*req.ExpireAfter)))
do.Where(q.ResourceLong.As(q.Resource.Long.Name()).Expire.Gte(*req.ExpireAfter))
}
if req.ExpireBefore != nil {
do.Where(q.ResourceLong.As(q.Resource.Long.Name()).Expire.Lte(orm.LocalDateTime(*req.ExpireBefore)))
do.Where(q.ResourceLong.As(q.Resource.Long.Name()).Expire.Lte(*req.ExpireBefore))
}
resource, err := q.Resource.Debug().Where(do).
@@ -202,27 +201,27 @@ func AllActiveResource(c *fiber.Ctx) error {
q.Resource.UserID.Eq(authCtx.User.ID),
q.Resource.Active.Is(true),
q.Resource.Where(
q.Resource.Type.Eq(int32(resource2.TypeShort)),
q.Resource.Type.Eq(int(m.ResourceTypeShort)),
q.ResourceShort.As(q.Resource.Short.Name()).Where(
short.Type.Eq(int32(resource2.ModeTime)),
short.Expire.Gte(orm.LocalDateTime(now)),
short.Type.Eq(int(m.ResourceModeTime)),
short.Expire.Gte(now),
q.ResourceShort.As(q.Resource.Short.Name()).
Where(short.DailyLast.Lt(orm.LocalDateTime(u.Today()))).
Where(short.DailyLast.Lt(u.Today())).
Or(short.DailyLimit.GtCol(short.DailyUsed)),
).Or(
short.Type.Eq(int32(resource2.ModeCount)),
short.Type.Eq(int(m.ResourceModeQuota)),
short.Quota.GtCol(short.Used),
),
).Or(
q.Resource.Type.Eq(int32(resource2.TypeLong)),
q.Resource.Type.Eq(int(m.ResourceTypeLong)),
q.ResourceLong.As(q.Resource.Long.Name()).Where(
long.Type.Eq(int32(resource2.ModeTime)),
long.Expire.Gte(orm.LocalDateTime(now)),
long.Type.Eq(int(m.ResourceModeTime)),
long.Expire.Gte(now),
q.ResourceLong.As(q.Resource.Long.Name()).
Where(long.DailyLast.Lt(orm.LocalDateTime(u.Today()))).
Where(long.DailyLast.Lt(u.Today())).
Or(long.DailyLimit.GtCol(long.DailyUsed)),
).Or(
long.Type.Eq(int32(resource2.ModeCount)),
long.Type.Eq(int(m.ResourceModeQuota)),
long.Quota.GtCol(long.Used),
),
),
@@ -282,23 +281,23 @@ func StatisticResourceFree(c *fiber.Ctx) error {
switch {
// 短效包量
case resource2.Type(resource.Type) == resource2.TypeShort && resource2.Mode(resource.Short.Type) == resource2.ModeCount:
case resource.Type == m.ResourceTypeShort && resource.Short.Type == m.ResourceModeQuota:
if u.Z(resource.Short.Quota) > resource.Short.Used {
shortCount++
shortQuotaSum += int(u.Z(resource.Short.Quota) - resource.Short.Used)
}
// 长效包量
case resource2.Type(resource.Type) == resource2.TypeLong && resource2.Mode(resource.Long.Type) == resource2.ModeCount:
case resource.Type == m.ResourceTypeLong && resource.Long.Type == m.ResourceModeQuota:
if u.Z(resource.Long.Quota) > resource.Long.Used {
longCount++
longQuotaSum += int(u.Z(resource.Long.Quota) - resource.Long.Used)
}
// 短效包时
case resource2.Type(resource.Type) == resource2.TypeShort && resource2.Mode(resource.Short.Type) == resource2.ModeTime:
case resource.Type == m.ResourceTypeShort && resource.Short.Type == m.ResourceModeTime:
if time.Time(*resource.Short.Expire).After(time.Now()) {
if resource.Short.DailyLast == nil || u.SameDate(time.Time(*resource.Short.DailyLast)) == false {
if resource.Short.DailyLast == nil || u.IsToday(time.Time(*resource.Short.DailyLast)) == false {
shortCount++
shortDailyFreeSum += int(resource.Short.DailyLimit)
} else if resource.Short.DailyLimit > resource.Short.DailyUsed {
@@ -308,9 +307,9 @@ func StatisticResourceFree(c *fiber.Ctx) error {
}
// 长效包时
case resource2.Type(resource.Type) == resource2.TypeLong && resource2.Mode(resource.Long.Type) == resource2.ModeTime:
case resource.Type == m.ResourceTypeLong && resource.Long.Type == m.ResourceModeTime:
if time.Time(*resource.Long.Expire).After(time.Now()) {
if resource.Long.DailyLast == nil || u.SameDate(time.Time(*resource.Long.DailyLast)) == false {
if resource.Long.DailyLast == nil || u.IsToday(time.Time(*resource.Long.DailyLast)) == false {
longCount++
longDailyFreeSum += int(resource.Long.DailyLimit)
} else if resource.Long.DailyLimit > resource.Long.DailyUsed {
@@ -376,10 +375,10 @@ func StatisticResourceUsage(c *fiber.Ctx) error {
do.Where(q.LogsUserUsage.ResourceID.Eq(resourceID))
}
if req.TimeAfter != nil {
do.Where(q.LogsUserUsage.Time.Gte(orm.LocalDateTime(*req.TimeAfter)))
do.Where(q.LogsUserUsage.Time.Gte(*req.TimeAfter))
}
if req.TimeBefore != nil {
do.Where(q.LogsUserUsage.Time.Lte(orm.LocalDateTime(*req.TimeBefore)))
do.Where(q.LogsUserUsage.Time.Lte(*req.TimeBefore))
}
var data = new(StatisticResourceUsageResp)