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