核心变更: - 钱包表:删除 user_id,添加 resource_type/resource_id(绑定资源而非用户) - 标签表:添加 enterprise_id/shop_id(实现三级隔离:全局/企业/店铺) - GORM Callback:自动数据权限过滤 - 迁移脚本:可重复执行,已验证回滚功能 钱包归属重构原因: - 旧设计:钱包绑定用户账号,个人客户卡/设备转手后新用户无法使用余额 - 新设计:钱包绑定资源(卡/设备/店铺),余额随资源流转 标签三级隔离: - 平台全局标签:所有用户可见 - 企业标签:仅该企业可见(企业内唯一) - 店铺标签:该店铺及下级可见(店铺内唯一) 测试覆盖: - 9 个单元测试验证标签多租户过滤(全部通过) - 迁移和回滚功能测试通过(测试环境) - OpenSpec 验证通过 变更 ID: fix-wallet-tag-multi-tenant 迁移版本: 000008 参考: openspec/changes/archive/2026-01-13-fix-wallet-tag-multi-tenant/
67 lines
1.8 KiB
Go
67 lines
1.8 KiB
Go
package constants
|
|
|
|
// ========================================
|
|
// 钱包系统常量定义
|
|
// ========================================
|
|
|
|
// 钱包资源类型
|
|
const (
|
|
WalletResourceTypeIotCard = "iot_card" // 物联网卡钱包(个人客户)
|
|
WalletResourceTypeDevice = "device" // 设备钱包(个人客户,多卡共享)
|
|
WalletResourceTypeShop = "shop" // 店铺钱包(代理商)
|
|
)
|
|
|
|
// 钱包类型
|
|
const (
|
|
WalletTypeMain = "main" // 主钱包
|
|
WalletTypeCommission = "commission" // 分佣钱包
|
|
)
|
|
|
|
// 钱包状态
|
|
const (
|
|
WalletStatusNormal = 1 // 正常
|
|
WalletStatusFrozen = 2 // 冻结
|
|
WalletStatusClosed = 3 // 关闭
|
|
)
|
|
|
|
// 交易类型
|
|
const (
|
|
TransactionTypeRecharge = "recharge" // 充值
|
|
TransactionTypeDeduct = "deduct" // 扣款
|
|
TransactionTypeRefund = "refund" // 退款
|
|
TransactionTypeCommission = "commission" // 分佣
|
|
TransactionTypeWithdrawal = "withdrawal" // 提现
|
|
)
|
|
|
|
// 交易状态
|
|
const (
|
|
TransactionStatusSuccess = 1 // 成功
|
|
TransactionStatusFailed = 2 // 失败
|
|
TransactionStatusProcessing = 3 // 处理中
|
|
)
|
|
|
|
// 关联业务类型
|
|
const (
|
|
ReferenceTypeOrder = "order" // 订单
|
|
ReferenceTypeCommission = "commission" // 分佣
|
|
ReferenceTypeWithdrawal = "withdrawal" // 提现
|
|
ReferenceTypeTopup = "topup" // 充值
|
|
)
|
|
|
|
// 充值状态
|
|
const (
|
|
RechargeStatusPending = 1 // 待支付
|
|
RechargeStatusPaid = 2 // 已支付
|
|
RechargeStatusCompleted = 3 // 已完成
|
|
RechargeStatusClosed = 4 // 已关闭
|
|
RechargeStatusRefunded = 5 // 已退款
|
|
)
|
|
|
|
// 充值支付方式
|
|
const (
|
|
RechargeMethodAlipay = "alipay" // 支付宝
|
|
RechargeMethodWechat = "wechat" // 微信
|
|
RechargeMethodBank = "bank" // 银行转账
|
|
RechargeMethodOffline = "offline" // 线下
|
|
)
|