This commit is contained in:
@@ -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 万元(单位:分)
|
||||
```
|
||||
|
||||
|
||||
@@ -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"`
|
||||
|
||||
@@ -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 元)';
|
||||
@@ -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 分)';
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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: 充值支付完成
|
||||
|
||||
|
||||
Reference in New Issue
Block a user