40 lines
3.3 KiB
Markdown
40 lines
3.3 KiB
Markdown
# Change: 新增资产钱包自动续费配置(后台查询/保存 + 自动续费失败通知适配)
|
||
|
||
## Why
|
||
|
||
根据 `docs/产品迭代8月份/资产钱包.md`。后端测试环境(`https://cmp-api.boss160.cn`,`Authorization: Bearer <token>`)已提供资产钱包自动续费全局配置能力,仅有 2 个后台接口,H5 侧零新增:
|
||
|
||
- 查询资产钱包自动续费配置:`GET /api/admin/asset-auto-renewal-config`
|
||
- 保存资产钱包自动续费配置:`PUT /api/admin/asset-auto-renewal-config`
|
||
|
||
后台需要提供配置页面承载总开关、适用范围、指定主套餐、到期前天数等配置;同时新增通知类型 `asset.auto_renewal.failed` 会复用既有通知接口产生新数据,需要适配展示与跳转。
|
||
|
||
## What Changes
|
||
|
||
- 新增能力 `asset-wallet-auto-renewal`:
|
||
- 配置读取:`GET /api/admin/asset-auto-renewal-config`,返回唯一一份全局配置的 `enabled`+`enabled_name`、`scope`+`scope_name`、`package_ids`、`days_before_expiry`、`config_version`、`updater`、`updated_at`。
|
||
- 配置保存:`PUT /api/admin/asset-auto-renewal-config`:
|
||
- 请求体 `{ enabled(0/1,必填), scope(all|specified,必填), package_ids(uint[],仅 specified 时非空且只能选当前可售主套餐), days_before_expiry(1–90,必填) }`。
|
||
- 语义:单行配置、无新增/删除;保存即递增 `config_version`,记录操作者与前后值快照;配置变更只影响后续扫描,历史记录不重算。
|
||
- 权限:仅超级管理员与平台账号可访问;其他身份(代理/企业/个人客户)`403`,提示「无权限操作该资源或资源不存在」,无权限与不存在不区分。
|
||
- 通知适配(复用既有接口,不算新接口):
|
||
- 后台站内通知:新增通知类型 `asset.auto_renewal.failed`(类别 `expiry`、级别 `warning`),接收人是业务员/店铺账号。走既有 `GET /api/admin/notifications` + `GET /api/admin/notifications/{id}/target`;确认 `target_type` 的 `iot_card` / `device` 在导航白名单;`available=false` 时只显示正文不跳转;计入未读数。
|
||
- H5 个人客户通知:同一类型已由后端加入客户可见白名单,出现在既有 `GET /api/c/v1/notifications` 与 `unread-count`,客户侧只有文案(资产标识、套餐、原因、到期日),无跳转接口、无需新页面,本仓库无需改动。该类型属 `expiry` 类别,展示期以业务到期时间为准,套餐到期后从列表消失(既有类别行为)。
|
||
- 明确不做(避免前端空等):无自动续费记录页/异常记录页接口、无尝试记录查询接口、无「有余额就不停机」开关、无 H5 客户侧新接口。
|
||
|
||
## Impact
|
||
|
||
- Affected specs:
|
||
- `asset-wallet-auto-renewal` — 新增能力
|
||
- Affected code:
|
||
- `src/types/api/assetWallet.ts`(新增)
|
||
- `src/types/api/index.ts`
|
||
- `src/api/modules/assetWallet.ts`(新增)
|
||
- `src/api/modules/index.ts`
|
||
- `src/views/settings/asset-wallet-auto-renewal/index.vue`(新增)
|
||
- `src/router/routesAlias.ts`
|
||
- `src/router/routes/asyncRoutes.ts`
|
||
- `src/utils/business/notificationNavigation.ts`(确认/补充 `iot_card`、`device` 白名单)
|
||
- `src/components/core/layouts/art-notification/index.vue`(确认 `expiry` 分类覆盖新类型)
|
||
- `src/locales/langs/zh.json`、`src/locales/langs/en.json`
|