套餐查询返回类型信息

This commit is contained in:
2026-05-21 16:31:59 +08:00
parent dd08655e2c
commit b436a6cade
6 changed files with 12 additions and 22 deletions

View File

@@ -1,32 +1,16 @@
## TODO
提取代理:
- 网关修改问题
- 在提取流程中如果网关被修改,有可能导致数据不一致
- 提供读写锁,在提取流程中获取读锁,在修改网关时获取写锁
- 端口悬空问题
- 在提取流程中如果发生异常,可能导致端口被占用但通道信息没有被写入数据库,配置以及端口将无法解除
- 提交删除任务时,带上配置信息,无需再查数据库且接口总是会被正确清理
- 异常情况下,将只清理网关端口,而无法解除节点连接,这个问题需要额外处理
- 数据库并发保存会导致失败,从而触发端口悬空,但是配置已经成功提交到网关,导致无法清理
redis 中没有记录 edge 信息,无法断开
---
- otel 没有正确记录接口失败信息
筛选和关联展示功能扩展
用反射实现环境变量解析,以简化函数签名
错误提示增强,展示整链路信息
ip 提取频率限制,在 ensure 函数加逻辑,通过 redis 或者 pg 计算分钟内提取次数,只允许每分钟提取 30 次
proxy 的删除和更新,锁粒度应该有问题
交易信息持久化
用反射实现环境变量解析,以简化函数签名
订单关闭问题,在前端关闭窗口后直接调用了全部订单接口,应改成先确认再关闭
- 取消订单接口改成只允许管理员调用
- 新增关闭订单接口,关闭订单的逻辑是先尝试完成,如果订单未支付则取消订单
---

2
go.mod
View File

@@ -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

View File

@@ -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()).

View File

@@ -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()).

View File

@@ -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"),
).

View File

@@ -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,