Files
junhong_cmp_fiber/pkg/constants/iot.go
huang 6e2dc325d7 新增钱包、换卡、标签系统的数据模型和规范
本次提交完成 add-wallet-transfer-tag-models 提案的实施和归档:

## 新增功能模块
- 钱包系统:用户/代理钱包管理,支持充值、扣款、退款、乐观锁防并发
- 换卡记录:物联卡更换历史追溯,包含套餐快照(JSONB)
- 标签系统:设备/IoT卡/号卡的统一标签管理
- 运营商渠道:四大运营商(CMCC/CUCC/CTCC/CBN)的渠道管理

## 数据库变更
- 新增 6 张表:tb_wallet, tb_wallet_transaction, tb_recharge_record, tb_card_replacement_record, tb_tag, tb_resource_tag
- 修改 2 张表:tb_carrier(新增渠道字段), tb_order(新增混合支付字段)
- 迁移版本:v6 → v7(执行时间 282.5ms)

## 代码变更
- 新增 8 个 Go 模型(符合统一规范:gorm.Model + BaseModel)
- 新增 40+ 个常量定义(含完整中文注释)
- 新增 7 个 Redis Key 生成函数
- 修复模型规范:移除重复字段,统一使用 gorm.Model 嵌入

## 文档变更
- 新增 3 个业务文档:数据模型设计、字段说明、迁移验证报告
- 更新 AGENTS.md:新增 Model 模型规范和常量注释规范
- 新增 4 个 OpenSpec 规范:wallet, carrier, card-replacement, tag
- 更新 1 个 OpenSpec 规范:iot-order(支持混合支付)

## 验证通过
-  LSP 诊断:所有模型和常量文件无错误
-  OpenSpec 验证:openspec validate --strict 通过
-  迁移执行:表结构创建成功,索引正确
-  提案归档:2026-01-13-add-wallet-transfer-tag-models

变更文件统计:29 个文件,新增 3682 行
2026-01-13 15:47:32 +08:00

250 lines
5.9 KiB
Go

package constants
// ========================================
// IoT SIM 管理系统常量定义
// ========================================
// ========================================
// 1. 核心业务常量
// ========================================
// IoT 卡状态
const (
IotCardStatusInStock = 1 // 在库
IotCardStatusDistributed = 2 // 已分销
IotCardStatusActivated = 3 // 已激活
IotCardStatusSuspended = 4 // 已停用
)
// IoT 卡业务类型
const (
CardCategoryNormal = "normal" // 普通卡(需要实名认证)
CardCategoryIndustry = "industry" // 行业卡(无需实名认证)
)
// 设备状态
const (
DeviceStatusInStock = 1 // 在库
DeviceStatusDistributed = 2 // 已分销
DeviceStatusActivated = 3 // 已激活
DeviceStatusSuspended = 4 // 已停用
)
// 号卡状态
const (
NumberCardStatusOnSale = 1 // 在售
NumberCardStatusOffSale = 2 // 下架
)
// IoT 卡激活状态
const (
ActivationStatusInactive = 0 // 未激活
ActivationStatusActive = 1 // 已激活
)
// IoT 卡实名状态
const (
RealNameStatusNotVerified = 0 // 未实名
RealNameStatusVerified = 1 // 已实名
)
// IoT 卡网络状态
const (
NetworkStatusOffline = 0 // 停机
NetworkStatusOnline = 1 // 开机
)
// 套餐流量类型
const (
DataTypeReal = "real" // 真流量
DataTypeVirtual = "virtual" // 虚流量
)
// 套餐类型
const (
PackageTypeFormal = "formal" // 正式套餐
PackageTypeAddon = "addon" // 附加套餐
)
// 订单类型
const (
OrderTypePackage = 1 // 套餐订单
OrderTypeNumberCard = 2 // 号卡订单
)
// 订单状态 (IoT 模块)
const (
IotOrderStatusPending = 1 // 待支付
IotOrderStatusPaid = 2 // 已支付
IotOrderStatusCompleted = 3 // 已完成
IotOrderStatusCancelled = 4 // 已取消
IotOrderStatusRefunded = 5 // 已退款
)
// 支付方式
const (
PaymentMethodWallet = "wallet" // 钱包
PaymentMethodOnline = "online" // 在线支付
PaymentMethodCarrier = "carrier" // 运营商支付
)
// 所有者类型
const (
OwnerTypePlatform = "platform" // 平台
OwnerTypeAgent = "agent" // 代理
OwnerTypeUser = "user" // 用户
OwnerTypeDevice = "device" // 设备
)
// 绑定状态
const (
BindStatusBound = 1 // 已绑定
BindStatusUnbound = 2 // 已解绑
)
// ========================================
// 2. 套餐和轮询相关常量
// ========================================
// 套餐使用类型
const (
PackageUsageTypeSingleCard = "single_card" // 单卡套餐
PackageUsageTypeDevice = "device" // 设备级套餐
)
// 套餐使用状态
const (
PackageUsageStatusActive = 1 // 生效中
PackageUsageStatusExhausted = 2 // 已用完
PackageUsageStatusExpired = 3 // 已过期
)
// 轮询配置卡条件
const (
CardConditionNotRealName = "not_real_name" // 未实名
CardConditionRealName = "real_name" // 已实名
CardConditionActivated = "activated" // 已激活
CardConditionSuspended = "suspended" // 已停用
)
// 流量使用记录来源
const (
DataUsageSourcePolling = "polling" // 轮询
DataUsageSourceManual = "manual" // 手动
DataUsageSourceGateway = "gateway" // Gateway回调
)
// ========================================
// 3. 分佣相关常量
// ========================================
// 分佣类型
const (
CommissionTypeOneTime = "one_time" // 一次性分佣
CommissionTypeLongTerm = "long_term" // 长期分佣
CommissionTypeCombined = "combined" // 组合分佣
)
// 分佣模式
const (
CommissionModeFixed = "fixed" // 固定金额
CommissionModePercent = "percent" // 百分比
)
// 分佣状态
const (
CommissionStatusFrozen = 1 // 已冻结
CommissionStatusUnfreezing = 2 // 解冻中
CommissionStatusReleased = 3 // 已发放
CommissionStatusInvalid = 4 // 已失效
)
// 阶梯类型
const (
LadderTypeActivation = "activation" // 激活量
LadderTypePickup = "pickup" // 提货量
LadderTypeDeposit = "deposit" // 充值量
)
// 卡类型
const (
CardTypeNumberCard = "number_card" // 号卡
CardTypeIotCard = "iot_card" // IoT卡
)
// 审批类型
const (
ApprovalTypeAuto = "auto" // 自动
ApprovalTypeManual = "manual" // 人工
)
// 审批状态
const (
ApprovalStatusPending = 1 // 待审批
ApprovalStatusApproved = 2 // 已通过
ApprovalStatusRejected = 3 // 已拒绝
)
// ========================================
// 4. 财务管理常量
// ========================================
// 提现状态
const (
WithdrawalStatusPending = 1 // 待审核
WithdrawalStatusApproved = 2 // 已通过
WithdrawalStatusRejected = 3 // 已拒绝
WithdrawalStatusPaid = 4 // 已到账
)
// 提现方式
const (
WithdrawalMethodAlipay = "alipay" // 支付宝
WithdrawalMethodWechat = "wechat" // 微信
WithdrawalMethodBank = "bank" // 银行卡
)
// 商户类型
const (
MerchantTypeAlipay = "alipay" // 支付宝
MerchantTypeWechat = "wechat" // 微信
MerchantTypeBank = "bank" // 银行卡
)
// ========================================
// 5. 系统管理常量
// ========================================
// 换卡申请状态
const (
ReplacementStatusPending = 1 // 待处理
ReplacementStatusApproved = 2 // 已通过
ReplacementStatusRejected = 3 // 已拒绝
ReplacementStatusCompleted = 4 // 已完成
)
// 开发能力配置状态
const (
DevCapabilityStatusEnabled = 1 // 启用
DevCapabilityStatusDisabled = 2 // 禁用
)
// ========================================
// 运营商编码
// ========================================
const (
CarrierCodeCMCC = "CMCC" // 中国移动
CarrierCodeCUCC = "CUCC" // 中国联通
CarrierCodeCTCC = "CTCC" // 中国电信
CarrierCodeCBN = "CBN" // 广电
)
const (
ReplacementReasonDamaged = "damaged"
ReplacementReasonLost = "lost"
ReplacementReasonMalfunction = "malfunction"
ReplacementReasonUpgrade = "upgrade"
ReplacementReasonOther = "other"
)