feat: 实现账号与佣金管理模块
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m35s

新增功能:
- 店铺佣金查询:店铺佣金统计、店铺佣金记录列表、店铺提现记录
- 佣金提现审批:提现申请列表、审批通过、审批拒绝
- 提现配置管理:配置列表、新增配置、获取当前生效配置
- 企业管理:企业列表、创建、更新、删除、获取详情
- 企业卡授权:授权列表、批量授权、批量取消授权、统计
- 客户账号管理:账号列表、创建、更新状态、重置密码
- 我的佣金:佣金统计、佣金记录、提现申请、提现记录

数据库变更:
- 扩展 tb_commission_withdrawal_request 新增提现单号等字段
- 扩展 tb_account 新增 is_primary 字段
- 扩展 tb_commission_record 新增 shop_id、balance_after
- 扩展 tb_commission_withdrawal_setting 新增每日提现次数限制
- 扩展 tb_iot_card、tb_device 新增 shop_id 冗余字段
- 新建 tb_enterprise_card_authorization 企业卡授权表
- 新建 tb_asset_allocation_record 资产分配记录表
- 数据迁移:owner_type 枚举值 agent 统一为 shop

测试:
- 新增 7 个单元测试文件覆盖各服务
- 修复集成测试 Redis 依赖问题
This commit is contained in:
2026-01-21 18:20:44 +08:00
parent 1489abe668
commit 91c9bbfeb8
89 changed files with 11958 additions and 159 deletions

View File

@@ -88,12 +88,33 @@ const (
PaymentMethodCarrier = "carrier" // 运营商支付
)
// 所有者类型
// 所有者类型(统一枚举,仅支持 platform 和 shop
const (
OwnerTypePlatform = "platform" // 平台
OwnerTypeAgent = "agent" // 代理
OwnerTypeUser = "user" // 用户
OwnerTypeDevice = "device" // 设备
OwnerTypeShop = "shop" // 店铺(代理商)
)
// 企业卡授权状态
const (
EnterpriseCardAuthStatusValid = 1 // 有效
EnterpriseCardAuthStatusRevoked = 0 // 已回收
)
// 资产分配类型
const (
AssetAllocationTypeAllocate = "allocate" // 分配
AssetAllocationTypeRecall = "recall" // 回收
)
// 资产类型
const (
AssetTypeIotCard = "iot_card" // 物联网卡
AssetTypeDevice = "device" // 设备
)
// 放款类型
const (
PaymentTypeManual = "manual" // 人工打款
)
// 绑定状态

View File

@@ -51,6 +51,12 @@ const (
CodeCustomerNotFound = 1035 // 个人客户不存在
CodeCustomerPhoneExists = 1036 // 个人客户手机号已存在
// 财务相关错误 (1050-1069)
CodeInvalidStatus = 1050 // 状态不允许此操作
CodeInsufficientBalance = 1051 // 余额不足
CodeWithdrawalNotFound = 1052 // 提现申请不存在
CodeWalletNotFound = 1053 // 钱包不存在
// 服务端错误 (2000-2999) -> 5xx HTTP 状态码
CodeInternalError = 2001 // 内部服务器错误
CodeDatabaseError = 2002 // 数据库错误
@@ -97,6 +103,10 @@ var errorMessages = map[int]string{
CodeEnterpriseCodeExists: "企业编号已存在",
CodeCustomerNotFound: "个人客户不存在",
CodeCustomerPhoneExists: "个人客户手机号已存在",
CodeInvalidStatus: "状态不允许此操作",
CodeInsufficientBalance: "余额不足",
CodeWithdrawalNotFound: "提现申请不存在",
CodeWalletNotFound: "钱包不存在",
CodeInvalidCredentials: "用户名或密码错误",
CodeAccountLocked: "账号已锁定",
CodePasswordExpired: "密码已过期",