1
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m59s

This commit is contained in:
2026-05-18 10:34:04 +08:00
parent ed071918ed
commit 480d4c4583
6 changed files with 27 additions and 11 deletions

View File

@@ -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 万元(单位:分)
```

View File

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

View File

@@ -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 元)';

View File

@@ -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 分)';

View File

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

View File

@@ -121,7 +121,7 @@
- `agent_wallet_id`:代理钱包 IDBIGINT关联 tb_agent_wallet.id
- `shop_id`:店铺 IDBIGINT冗余字段便于查询
- `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: 充值支付完成