From d273731e3189b44a21051ff14511931f1d9ad1b3 Mon Sep 17 00:00:00 2001 From: luorijun Date: Mon, 11 May 2026 14:11:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B4=AD=E4=B9=B0=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E4=BD=8E=E4=BA=8E=E9=99=90=E5=88=B6=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++++-- web/services/channel_baiyin.go | 2 +- web/services/resource.go | 4 ++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e8cc4f0..f21f9ab 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ ## TODO - 解决提取成功率问题 + - 提交代理端口配置后,并非同步将节点标记为占用状态,导致后续提取请求仍然会选中该节点,直到下一个提取请求才会发现该节点已满,导致提取失败? - otel 没有正确记录接口失败信息 -- 购买数低于最小限制 -创建 channel 时以 defer 的思路执行 fallback 函数,确保执行幂等性 +筛选和关联展示功能扩展 + +channel 管理逻辑优化,需要携带 proxy 信息,考虑到 channel 没有成功创建的情况,或者保证创建操作的原子性 错误提示增强,展示整链路信息 diff --git a/web/services/channel_baiyin.go b/web/services/channel_baiyin.go index 2aa8f57..916a688 100644 --- a/web/services/channel_baiyin.go +++ b/web/services/channel_baiyin.go @@ -372,7 +372,7 @@ func (s *channelBaiyinProvider) ClearExpiredChannels(proxyId int32) (int, error) // 排除未过期通道 var batchQueried []struct{ BatchNo string } - err = q.Channel.Debug(). + err = q.Channel. Select(q.Channel.BatchNo). Where( q.Channel.BatchNo.In(batchList...), diff --git a/web/services/resource.go b/web/services/resource.go index 570320b..9d72267 100644 --- a/web/services/resource.go +++ b/web/services/resource.go @@ -160,6 +160,10 @@ func (s *resourceService) CalcPrice(skuCode string, count int32, user *m.User, c return nil, nil, nil, decimal.Zero, decimal.Zero, decimal.Zero, core.NewBizErr("产品不可用", err) } + if count < sku.CountMin { + return nil, nil, nil, decimal.Zero, decimal.Zero, decimal.Zero, core.NewBizErr(fmt.Sprintf("购买数量不能少于 %d", sku.CountMin)) + } + // 原价 amountMin := sku.PriceMin.Mul(decimal.NewFromInt32(count)) amount := sku.Price.Mul(decimal.NewFromInt32(count))