diff --git a/README.md b/README.md index 9178785..071c989 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,16 @@ ## TODO -提取代理: -- 网关修改问题 - - 在提取流程中如果网关被修改,有可能导致数据不一致 - - 提供读写锁,在提取流程中获取读锁,在修改网关时获取写锁 -- 端口悬空问题 - - 在提取流程中如果发生异常,可能导致端口被占用但通道信息没有被写入数据库,配置以及端口将无法解除 - - 提交删除任务时,带上配置信息,无需再查数据库且接口总是会被正确清理 - - 异常情况下,将只清理网关端口,而无法解除节点连接,这个问题需要额外处理 - - 数据库并发保存会导致失败,从而触发端口悬空,但是配置已经成功提交到网关,导致无法清理 - -redis 中没有记录 edge 信息,无法断开 - --- -- otel 没有正确记录接口失败信息 - -筛选和关联展示功能扩展 +用反射实现环境变量解析,以简化函数签名 错误提示增强,展示整链路信息 -ip 提取频率限制,在 ensure 函数加逻辑,通过 redis 或者 pg 计算分钟内提取次数,只允许每分钟提取 30 次 - -proxy 的删除和更新,锁粒度应该有问题 - 交易信息持久化 -用反射实现环境变量解析,以简化函数签名 +订单关闭问题,在前端关闭窗口后直接调用了全部订单接口,应改成先确认再关闭 +- 取消订单接口改成只允许管理员调用 +- 新增关闭订单接口,关闭订单的逻辑是先尝试完成,如果订单未支付则取消订单 --- diff --git a/go.mod b/go.mod index be2074e..4d76fb6 100644 --- a/go.mod +++ b/go.mod @@ -26,6 +26,7 @@ require ( go.opentelemetry.io/otel v1.43.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 go.opentelemetry.io/otel/sdk v1.43.0 + go.opentelemetry.io/otel/trace v1.43.0 golang.org/x/crypto v0.49.0 golang.org/x/sync v0.20.0 gorm.io/datatypes v1.2.7 @@ -88,7 +89,6 @@ require ( go.opentelemetry.io/contrib v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect - go.opentelemetry.io/otel/trace v1.43.0 // indirect go.opentelemetry.io/proto/otlp v1.10.0 // indirect golang.org/x/mod v0.33.0 // indirect golang.org/x/net v0.52.0 // indirect diff --git a/web/handlers/batch.go b/web/handlers/batch.go index 7f6d5dc..cdda3e7 100644 --- a/web/handlers/batch.go +++ b/web/handlers/batch.go @@ -107,6 +107,7 @@ func PageBatchByAdmin(c *fiber.Ctx) error { q.User.As("User").Phone.As("User__phone"), q.User.As("User").Name.As("User__name"), q.Resource.As("Resource").ResourceNo.As("Resource__resource_no"), + q.Resource.As("Resource").Type.As("Resource__type"), ). Where(do). Order(q.LogsUserUsage.Time.Desc()). @@ -174,6 +175,7 @@ func PageBatchOfUserByAdmin(ctx *fiber.Ctx) error { q.User.As("User").Phone.As("User__phone"), q.User.As("User").Name.As("User__name"), q.Resource.As("Resource").ResourceNo.As("Resource__resource_no"), + q.Resource.As("Resource").Type.As("Resource__type"), ). Where(do). Order(q.LogsUserUsage.Time.Desc()). diff --git a/web/handlers/bill.go b/web/handlers/bill.go index 3d538a1..e51bee3 100644 --- a/web/handlers/bill.go +++ b/web/handlers/bill.go @@ -69,6 +69,7 @@ func PageBillByAdmin(c *fiber.Ctx) error { q.Trade.As("Trade").InnerNo.As("Trade__inner_no"), q.Trade.As("Trade").Acquirer.As("Trade__acquirer"), q.Resource.As("Resource").ResourceNo.As("Resource__resource_no"), + q.Resource.As("Resource").Type.As("Resource__type"), ). Where(do). Order(q.Bill.CreatedAt.Desc()). @@ -151,6 +152,7 @@ func PageBillOfUserByAdmin(c *fiber.Ctx) error { q.Trade.As("Trade").InnerNo.As("Trade__inner_no"), q.Trade.As("Trade").Acquirer.As("Trade__acquirer"), q.Resource.As("Resource").ResourceNo.As("Resource__resource_no"), + q.Resource.As("Resource").Type.As("Resource__type"), ). Where(do). Order(q.Bill.CreatedAt.Desc()). diff --git a/web/handlers/channel.go b/web/handlers/channel.go index 5451f6f..5f5c4e3 100644 --- a/web/handlers/channel.go +++ b/web/handlers/channel.go @@ -243,6 +243,7 @@ func PageChannelByAdmin(c *fiber.Ctx) error { Select( q.Channel.ALL, q.Resource.As("Resource").ResourceNo.As("Resource__resource_no"), + q.Resource.As("Resource").Type.As("Resource__type"), q.User.As("User").Phone.As("User__phone"), q.User.As("User").Name.As("User__name"), ). @@ -316,6 +317,7 @@ func PageChannelOfUserByAdmin(c *fiber.Ctx) error { Select( q.Channel.ALL, q.Resource.As("Resource").ResourceNo.As("Resource__resource_no"), + q.Resource.As("Resource").Type.As("Resource__type"), q.User.As("User").Phone.As("User__phone"), q.User.As("User").Name.As("User__name"), ). diff --git a/web/handlers/resource.go b/web/handlers/resource.go index 9b51020..ce09563 100644 --- a/web/handlers/resource.go +++ b/web/handlers/resource.go @@ -422,7 +422,7 @@ func PageResourceShortOfUserByAdmin(c *fiber.Ctx) error { do = do.Where(q.Resource.CreatedAt.Lte(req.CreatedAtEnd.UTC())) } - list, total, err := q.Resource. + list, total, err := q.Resource.Debug(). Joins(q.Resource.User, q.Resource.Short, q.Resource.Short.Sku). Select( q.Resource.ALL,