From 480d4c4583461c523deb94aecff3df45f311c538 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 18 May 2026 10:34:04 +0800 Subject: [PATCH] 1 --- docs/agent-recharge/功能总结.md | 6 +++--- internal/model/agent_wallet.go | 2 +- ...000145_relax_agent_recharge_amount_constraint.down.sql | 8 ++++++++ .../000145_relax_agent_recharge_amount_constraint.up.sql | 8 ++++++++ openspec/specs/agent-recharge/spec.md | 6 +++--- openspec/specs/agent-wallet/spec.md | 8 ++++---- 6 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 migrations/000145_relax_agent_recharge_amount_constraint.down.sql create mode 100644 migrations/000145_relax_agent_recharge_amount_constraint.up.sql diff --git a/docs/agent-recharge/功能总结.md b/docs/agent-recharge/功能总结.md index ddd9dad..9d2b6df 100644 --- a/docs/agent-recharge/功能总结.md +++ b/docs/agent-recharge/功能总结.md @@ -16,7 +16,7 @@ 代理/平台 → POST /api/admin/agent-recharges │ ├─ 验证权限:代理只能充自己店铺,平台可指定任意店铺 - ├─ 验证金额范围(100 元~100 万元) + ├─ 验证金额范围(1 分~100 万元) ├─ 查找目标店铺的 main 钱包 ├─ 查询 active 支付配置 → 无配置则拒绝(返回 1175) ├─ 记录 payment_config_id @@ -96,7 +96,7 @@ | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | shop_id | integer | 是 | 目标店铺 ID(代理只能填自己所属店铺)| -| amount | integer | 是 | 充值金额(单位:分),范围 10000~100000000 | +| amount | integer | 是 | 充值金额(单位:分),范围 1~100000000 | | payment_method | string | 是 | `wechat`(在线)/ `offline`(线下,仅平台)| **成功响应** @@ -218,7 +218,7 @@ ```go // pkg/constants/wallet.go AgentRechargeOrderPrefix = "ARCH" // 充值单号前缀 -AgentRechargeMinAmount = 10000 // 最小充值:100 元(单位:分) +AgentRechargeMinAmount = 1 // 最小充值:1 分 AgentRechargeMaxAmount = 100000000 // 最大充值:100 万元(单位:分) ``` diff --git a/internal/model/agent_wallet.go b/internal/model/agent_wallet.go index 1207b13..0fb6b5a 100644 --- a/internal/model/agent_wallet.go +++ b/internal/model/agent_wallet.go @@ -73,7 +73,7 @@ type AgentRechargeRecord struct { AgentWalletID uint `gorm:"column:agent_wallet_id;not null;comment:代理钱包ID" json:"agent_wallet_id"` ShopID uint `gorm:"column:shop_id;not null;index;comment:店铺ID(冗余字段,便于查询)" json:"shop_id"` RechargeNo string `gorm:"column:recharge_no;type:varchar(50);not null;uniqueIndex;comment:充值订单号(格式:ARCH+时间戳+随机数)" json:"recharge_no"` - Amount int64 `gorm:"column:amount;type:bigint;not null;comment:充值金额(单位:分,最小10000分=100元)" json:"amount"` + Amount int64 `gorm:"column:amount;type:bigint;not null;comment:充值金额(单位:分,最小1分)" json:"amount"` PaymentMethod string `gorm:"column:payment_method;type:varchar(20);not null;comment:支付方式(alipay-支付宝 | wechat-微信 | bank-银行转账 | offline-线下)" json:"payment_method"` PaymentChannel *string `gorm:"column:payment_channel;type:varchar(50);comment:支付渠道" json:"payment_channel,omitempty"` PaymentTransactionID *string `gorm:"column:payment_transaction_id;type:varchar(100);comment:第三方支付交易号" json:"payment_transaction_id,omitempty"` diff --git a/migrations/000145_relax_agent_recharge_amount_constraint.down.sql b/migrations/000145_relax_agent_recharge_amount_constraint.down.sql new file mode 100644 index 0000000..915c172 --- /dev/null +++ b/migrations/000145_relax_agent_recharge_amount_constraint.down.sql @@ -0,0 +1,8 @@ +-- 回滚为历史规则:代理预充值最低 100 元。 +ALTER TABLE tb_agent_recharge_record + DROP CONSTRAINT IF EXISTS chk_agent_recharge_amount; + +ALTER TABLE tb_agent_recharge_record + ADD CONSTRAINT chk_agent_recharge_amount CHECK (amount >= 10000); + +COMMENT ON COLUMN tb_agent_recharge_record.amount IS '充值金额(单位:分,最小 10000 分 = 100 元)'; diff --git a/migrations/000145_relax_agent_recharge_amount_constraint.up.sql b/migrations/000145_relax_agent_recharge_amount_constraint.up.sql new file mode 100644 index 0000000..8f35c1b --- /dev/null +++ b/migrations/000145_relax_agent_recharge_amount_constraint.up.sql @@ -0,0 +1,8 @@ +-- 放开代理预充值最低 100 元限制,仅保留金额必须大于 0。 +ALTER TABLE tb_agent_recharge_record + DROP CONSTRAINT IF EXISTS chk_agent_recharge_amount; + +ALTER TABLE tb_agent_recharge_record + ADD CONSTRAINT chk_agent_recharge_amount CHECK (amount >= 1); + +COMMENT ON COLUMN tb_agent_recharge_record.amount IS '充值金额(单位:分,最小 1 分)'; diff --git a/openspec/specs/agent-recharge/spec.md b/openspec/specs/agent-recharge/spec.md index 60ce498..f092f5c 100644 --- a/openspec/specs/agent-recharge/spec.md +++ b/openspec/specs/agent-recharge/spec.md @@ -47,12 +47,12 @@ POST /api/admin/agent-recharges | 字段名 | 类型 | 必填 | 说明 | |--------|------|------|------| | shop_id | integer | 是 | 目标店铺 ID。代理账号只能填写自己所属店铺 ID | -| amount | integer | 是 | 充值金额(单位:分)。范围:10000~100000000(即 100 元~100 万元) | +| amount | integer | 是 | 充值金额(单位:分)。范围:1~100000000(即 1 分~100 万元) | | payment_method | string | 是 | 支付方式。可选值:`wechat`(在线微信支付)、`offline`(线下转账,仅平台可用) | **业务规则** -- `amount` 最小值为 `AgentRechargeMinAmount`(10000 分 = 100 元),最大值为 `AgentRechargeMaxAmount`(100000000 分 = 100 万元) +- `amount` 最小值为 `AgentRechargeMinAmount`(1 分),最大值为 `AgentRechargeMaxAmount`(100000000 分 = 100 万元) - `payment_method=wechat` 时,系统根据当前激活的支付配置自动路由至微信直连或富友通道,并记录 `payment_config_id`;客户端发起支付的具体流程本期暂不实现(Stub) - `payment_method=offline` 仅平台账号可使用,代理账号调用此方式将返回 `1005 CodeForbidden` - 订单创建后状态为 `1`(待支付) @@ -103,7 +103,7 @@ POST /api/admin/agent-recharges ```json { "code": 1001, - "msg": "充值金额超出允许范围(100元~100万元)", + "msg": "充值金额超出允许范围(1分~100万元)", "data": null, "timestamp": "2026-03-16T10:00:00+08:00" } diff --git a/openspec/specs/agent-wallet/spec.md b/openspec/specs/agent-wallet/spec.md index 00dd1b3..2ae9a90 100644 --- a/openspec/specs/agent-wallet/spec.md +++ b/openspec/specs/agent-wallet/spec.md @@ -121,7 +121,7 @@ - `agent_wallet_id`:代理钱包 ID(BIGINT,关联 tb_agent_wallet.id) - `shop_id`:店铺 ID(BIGINT,冗余字段,便于查询) - `recharge_no`:充值订单号(VARCHAR(50),唯一,格式:ARCH+时间戳+随机数) -- `amount`:充值金额(BIGINT,单位:分,≥ 10000) +- `amount`:充值金额(BIGINT,单位:分,≥ 1) - `payment_method`:支付方式(VARCHAR(20),枚举值:"alipay"-支付宝 | "wechat"-微信 | "bank"-银行转账 | "offline"-线下) - `payment_channel`:支付渠道(VARCHAR(50),可空) - `payment_transaction_id`:第三方支付交易号(VARCHAR(100),可空) @@ -137,7 +137,7 @@ **表名**:`tb_agent_recharge_record` **充值金额限制**: -- 最小充值金额:10000 分(100 元) +- 最小充值金额:1 分 - 最大充值金额:100000000 分(1000000 元) **索引**: @@ -153,8 +153,8 @@ #### Scenario: 充值金额低于最小限制 -- **WHEN** 店铺管理员尝试充值 5000 分(50 元) -- **THEN** 系统拒绝创建充值订单,返回错误信息"充值金额不能低于 100 元" +- **WHEN** 店铺管理员尝试充值 0 分 +- **THEN** 系统拒绝创建充值订单,返回错误信息"充值金额超出允许范围" #### Scenario: 充值支付完成