Files
kami_backend/internal/consts/camel_oil.go
danial 3588bf9af6 feat(camel_oil): 支持Token管理与卡密绑定功能
- 新增CamelOilToken和CamelOilCardBinding数据库表,实现Token及卡密绑定记录管理
- 在service层增加Token的创建、查询、更新、删除及分页功能
- 实现卡密与Token绑定的业务逻辑,支持基于Token的卡密管理
- 在API层新增Token和卡密绑定相关接口:创建Token、获取Token详情、删除Token、列出Token及根据Token查询绑定卡密
- camel_oil_api新增绑卡接口,支持绑卡状态分类及错误处理
- 在定时任务中增加卡密绑定任务,实现自动处理已支付订单的卡密绑定
- 优化订单提交及支付流程,包含日志调整和请求参数随机扰动
- 统一调整camel_oil模块多控制器实现,完成账号状态查询及订单相关接口实现
- 注册更多camel_oil定时任务,包括订单支付检查、账号日重置和待回调订单处理任务
2025-11-23 00:08:35 +08:00

313 lines
14 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package consts
// ====================================================================================
// 骆驼加油订单处理模块常量定义
// ====================================================================================
// CamelOilAccountStatus 骆驼加油账号状态枚举
type CamelOilAccountStatus int
const (
CamelOilAccountStatusPending CamelOilAccountStatus = 0 // 待登录
CamelOilAccountStatusSendCode CamelOilAccountStatus = 1 // 发送验证码
CamelOilAccountStatusOnline CamelOilAccountStatus = 2 // 在线
CamelOilAccountStatusPaused CamelOilAccountStatus = 3 // 已暂停
CamelOilAccountStatusInvalid CamelOilAccountStatus = 4 // 已失效
)
// CamelOilAccountStatusText 账号状态文本映射
var CamelOilAccountStatusText = map[CamelOilAccountStatus]string{
CamelOilAccountStatusPending: "待登录",
CamelOilAccountStatusSendCode: "登录中",
CamelOilAccountStatusOnline: "在线",
CamelOilAccountStatusPaused: "已暂停",
CamelOilAccountStatusInvalid: "已失效",
}
// CamelOilOrderStatus 骆驼加油订单状态枚举
type CamelOilOrderStatus int
const (
CamelOilOrderStatusPending CamelOilOrderStatus = 0 // 待处理
CamelOilOrderStatusProcessing CamelOilOrderStatus = 1 // 处理中
CamelOilOrderStatusCompleted CamelOilOrderStatus = 2 // 已完成
CamelOilOrderStatusFailed CamelOilOrderStatus = 3 // 已失败
)
// CamelOilOrderStatusText 订单状态文本映射
var CamelOilOrderStatusText = map[CamelOilOrderStatus]string{
CamelOilOrderStatusPending: "待处理",
CamelOilOrderStatusProcessing: "处理中",
CamelOilOrderStatusCompleted: "已完成",
CamelOilOrderStatusFailed: "已失败",
}
// CamelOilPayStatus 支付状态枚举
type CamelOilPayStatus int
const (
CamelOilPaymentStatusUnpaid CamelOilPayStatus = 0 // 未支付
CamelOilPaymentStatusPaid CamelOilPayStatus = 1 // 已支付
CamelOilPaymentStatusRefunded CamelOilPayStatus = 2 // 已退款
CamelOilPaymentStatusTimeout CamelOilPayStatus = 3 // 已超时
)
// CamelOilPaymentStatusText 支付状态文本映射
var CamelOilPaymentStatusText = map[CamelOilPayStatus]string{
CamelOilPaymentStatusUnpaid: "未支付",
CamelOilPaymentStatusPaid: "已支付",
CamelOilPaymentStatusRefunded: "已退款",
CamelOilPaymentStatusTimeout: "已超时",
}
// CamelOilNotifyStatus 回调状态枚举
type CamelOilNotifyStatus int
const (
CamelOilCallbackStatusPending CamelOilNotifyStatus = 0 // 未回调
CamelOilCallbackStatusSuccess CamelOilNotifyStatus = 1 // 回调成功
CamelOilCallbackStatusFailed CamelOilNotifyStatus = 2 // 回调失败
)
// CamelOilCallbackStatusText 回调状态文本映射
var CamelOilCallbackStatusText = map[CamelOilNotifyStatus]string{
CamelOilCallbackStatusPending: "未回调",
CamelOilCallbackStatusSuccess: "回调成功",
CamelOilCallbackStatusFailed: "回调失败",
}
// CamelOilTokenStatus Token管理状态枚举
type CamelOilTokenStatus int
const (
CamelOilTokenStatusAvailable CamelOilTokenStatus = 1 // 可用
CamelOilTokenStatusDisabled CamelOilTokenStatus = 2 // 已禁用
CamelOilTokenStatusExpired CamelOilTokenStatus = 3 // 已过期
)
// CamelOilTokenStatusText Token状态文本映射
var CamelOilTokenStatusText = map[CamelOilTokenStatus]string{
CamelOilTokenStatusAvailable: "可用",
CamelOilTokenStatusDisabled: "已禁用",
CamelOilTokenStatusExpired: "已过期",
}
// ====================================================================================
// 变更类型常量定义
// ====================================================================================
// CamelOilAccountChangeType 账号变更类型
type CamelOilAccountChangeType string
const (
CamelOilAccountChangeTypeCreate CamelOilAccountChangeType = "create" // 创建账号
CamelOilAccountChangeTypeLogin CamelOilAccountChangeType = "login" // 登录成功
CamelOilAccountChangeTypeOffline CamelOilAccountChangeType = "offline" // 检测到掉线
CamelOilAccountChangeTypeLoginFail CamelOilAccountChangeType = "login_fail" // 登录失败
CamelOilAccountChangeTypePause CamelOilAccountChangeType = "pause" // 订单数达到10暂停使用
CamelOilAccountChangeTypeResume CamelOilAccountChangeType = "resume" // 次日重置,恢复使用
CamelOilAccountChangeTypeInvalidate CamelOilAccountChangeType = "invalidate" // 单日下单不足10个账号失效
CamelOilAccountChangeTypeOrderBind CamelOilAccountChangeType = "order_bind" // 绑定订单
CamelOilAccountChangeTypeOrderComplete CamelOilAccountChangeType = "order_complete" // 订单完成
CamelOilAccountChangeTypeUpdate CamelOilAccountChangeType = "update" // 更新账号信息
CamelOilAccountChangeTypeDelete CamelOilAccountChangeType = "delete" // 删除账号
)
// CamelOilAccountChangeTypeText 账号变更类型文本映射
var CamelOilAccountChangeTypeText = map[CamelOilAccountChangeType]string{
CamelOilAccountChangeTypeCreate: "创建账号",
CamelOilAccountChangeTypeLogin: "登录成功",
CamelOilAccountChangeTypeOffline: "检测到掉线",
CamelOilAccountChangeTypeLoginFail: "登录失败",
CamelOilAccountChangeTypePause: "暂停使用",
CamelOilAccountChangeTypeResume: "恢复使用",
CamelOilAccountChangeTypeInvalidate: "账号失效",
CamelOilAccountChangeTypeOrderBind: "绑定订单",
CamelOilAccountChangeTypeOrderComplete: "订单完成",
CamelOilAccountChangeTypeUpdate: "更新账号",
CamelOilAccountChangeTypeDelete: "删除账号",
}
// CamelOilOrderChangeType 订单变更类型
type CamelOilOrderChangeType string
const (
CamelOilOrderChangeTypeCreate CamelOilOrderChangeType = "create" // 创建订单
CamelOilOrderChangeTypeSubmit CamelOilOrderChangeType = "submit" // 提交到骆驼平台
CamelOilOrderChangeTypeGetPayUrl CamelOilOrderChangeType = "get_pay_url" // 获取支付链接
CamelOilOrderChangeTypeCheckPay CamelOilOrderChangeType = "check_pay" // 检测支付状态
CamelOilOrderChangeTypePaid CamelOilOrderChangeType = "paid" // 支付成功
CamelOilOrderChangeTypeTimeout CamelOilOrderChangeType = "timeout" // 支付超时
CamelOilOrderChangeTypeFail CamelOilOrderChangeType = "fail" // 下单失败
CamelOilOrderChangeTypeCallbackSuccess CamelOilOrderChangeType = "callback_success" // 回调商户成功
CamelOilOrderChangeTypeCallbackFail CamelOilOrderChangeType = "callback_fail" // 回调商户失败
CamelOilOrderChangeTypeFillCard CamelOilOrderChangeType = "fill_card" // 填写卡密和卡号
)
// CamelOilOrderChangeTypeText 订单变更类型文本映射
var CamelOilOrderChangeTypeText = map[CamelOilOrderChangeType]string{
CamelOilOrderChangeTypeCreate: "创建订单",
CamelOilOrderChangeTypeSubmit: "提交平台",
CamelOilOrderChangeTypeGetPayUrl: "获取支付链接",
CamelOilOrderChangeTypeCheckPay: "检测支付",
CamelOilOrderChangeTypePaid: "支付成功",
CamelOilOrderChangeTypeTimeout: "支付超时",
CamelOilOrderChangeTypeFail: "下单失败",
CamelOilOrderChangeTypeCallbackSuccess: "回调成功",
CamelOilOrderChangeTypeCallbackFail: "回调失败",
CamelOilOrderChangeTypeFillCard: "填写卡密",
}
// ====================================================================================
// 预拉取订单相关常量定义
// ====================================================================================
// CamelOilPrefetchOrderStatus 预拉取订单状态枚举
type CamelOilPrefetchOrderStatus int
const (
CamelOilPrefetchOrderStatusPending CamelOilPrefetchOrderStatus = 1 // 待匹配
CamelOilPrefetchOrderStatusMatched CamelOilPrefetchOrderStatus = 2 // 已匹配
CamelOilPrefetchOrderStatusExpired CamelOilPrefetchOrderStatus = 3 // 已过期
CamelOilPrefetchOrderStatusInvalid CamelOilPrefetchOrderStatus = 4 // 已失效
)
// CamelOilPrefetchOrderStatusText 预拉取订单状态文本映射
var CamelOilPrefetchOrderStatusText = map[CamelOilPrefetchOrderStatus]string{
CamelOilPrefetchOrderStatusPending: "待匹配",
CamelOilPrefetchOrderStatusMatched: "已匹配",
CamelOilPrefetchOrderStatusExpired: "已过期",
CamelOilPrefetchOrderStatusInvalid: "已失效",
}
// CamelOilPrefetchOrderChangeType 预拉取订单变更类型
type CamelOilPrefetchOrderChangeType string
const (
CamelOilPrefetchOrderChangeTypeCreate CamelOilPrefetchOrderChangeType = "create" // 创建预拉取订单
CamelOilPrefetchOrderChangeTypeFetch CamelOilPrefetchOrderChangeType = "fetch" // 从骆驼平台拉取
CamelOilPrefetchOrderChangeTypeMatch CamelOilPrefetchOrderChangeType = "match" // 与用户订单匹配
CamelOilPrefetchOrderChangeTypeExpire CamelOilPrefetchOrderChangeType = "expire" // 过期失效
CamelOilPrefetchOrderChangeTypeInvalidate CamelOilPrefetchOrderChangeType = "invalidate" // 标记为失效
)
// CamelOilPrefetchOrderChangeTypeText 预拉取订单变更类型文本映射
var CamelOilPrefetchOrderChangeTypeText = map[CamelOilPrefetchOrderChangeType]string{
CamelOilPrefetchOrderChangeTypeCreate: "创建预拉取订单",
CamelOilPrefetchOrderChangeTypeFetch: "从平台拉取",
CamelOilPrefetchOrderChangeTypeMatch: "与订单匹配",
CamelOilPrefetchOrderChangeTypeExpire: "订单过期",
CamelOilPrefetchOrderChangeTypeInvalidate: "标记失效",
}
// ====================================================================================
// 预拉取订单业务配置常量
// ====================================================================================
const (
// CamelOilPrefetchOrderMinCapacity 预拉取订单最小库存阈值(当库存低于此值时触发补充)
CamelOilPrefetchOrderMinCapacity = 1
// CamelOilPrefetchOrderTargetCapacity 预拉取订单目标库存(补充时的目标数量)
CamelOilPrefetchOrderTargetCapacity = 20
// CamelOilPrefetchOrderExpireDuration 预拉取订单过期时间(小时)
CamelOilPrefetchOrderExpireDuration = 24
// CamelOilPrefetchMaxConcurrency 预拉取最大并发账号数量
CamelOilPrefetchMaxConcurrency = 5
// CamelOilPrefetchOrderLockKey Redis中预拉取订单的分布式锁键名前缀
CamelOilPrefetchOrderLockKey = "camel_oil_api:prefetch:order:lock:"
// CamelOilPrefetchTaskLockKey Redis中预拉取任务的分布式锁键名
CamelOilPrefetchTaskLockKey = "camel_oil_api:task:prefetch:lock"
)
// ====================================================================================
// 业务配置常量
// ====================================================================================
const (
// CamelOilAccountDailyOrderLimit 账号每日订单上限
CamelOilAccountDailyOrderLimit = 10
// CamelOilMinAvailableCapacity 最小可用订单容量阈值
CamelOilMinAvailableCapacity = 50
// CamelOilTargetOnlineAccounts 目标在线账号数量
CamelOilTargetOnlineAccounts = 1
// CamelOilOrderExpireDuration 订单支付超时时间(小时)
CamelOilOrderExpireDuration = 24
// CamelOilMaxCallbackRetry 回调最大重试次数
CamelOilMaxCallbackRetry = 3
// CamelOilMaxLoginConcurrency 最大并发登录数量
CamelOilMaxLoginConcurrency = 3
// CamelOilTokenExpireDuration Token过期时间
CamelOilTokenExpireDuration = 30
// CamelOilAccountLockKey Redis中账号分配锁的键名前缀
CamelOilAccountLockKey = "camel_oil_api:account:lock:"
// CamelOilOrderLockKey Redis中订单处理锁的键名前缀
CamelOilOrderLockKey = "camel_oil_api:order:lock:"
// CamelOilLoginTaskLockKey Redis中登录任务分布式锁的键名
CamelOilLoginTaskLockKey = "camel_oil_api:task:login:lock"
// CamelOilCheckTaskLockKey Redis中检测任务分布式锁的键名
CamelOilCheckTaskLockKey = "camel_oil_api:task:check:lock"
// CamelOilDailyResetTaskLockKey Redis中日重置任务分布式锁的键名
CamelOilDailyResetTaskLockKey = "camel_oil_api:task:daily_reset:lock"
)
// ====================================================================================
// 错误码常量
// ====================================================================================
const (
// ErrCodeCamelOilNoAvailableAccount 无可用账号
ErrCodeCamelOilNoAvailableAccount = "CAMEL_OIL_NO_AVAILABLE_ACCOUNT"
// ErrCodeCamelOilAccountNotFound 账号不存在
ErrCodeCamelOilAccountNotFound = "CAMEL_OIL_ACCOUNT_NOT_FOUND"
// ErrCodeCamelOilAccountLoginFailed 账号登录失败
ErrCodeCamelOilAccountLoginFailed = "CAMEL_OIL_ACCOUNT_LOGIN_FAILED"
// ErrCodeCamelOilAccountOffline 账号掉线
ErrCodeCamelOilAccountOffline = "CAMEL_OIL_ACCOUNT_OFFLINE"
// ErrCodeCamelOilAccountReachLimit 账号订单数已达上限
ErrCodeCamelOilAccountReachLimit = "CAMEL_OIL_ACCOUNT_REACH_LIMIT"
// ErrCodeCamelOilOrderSubmitFailed 订单提交失败
ErrCodeCamelOilOrderSubmitFailed = "CAMEL_OIL_ORDER_SUBMIT_FAILED"
// ErrCodeCamelOilOrderNotFound 订单不存在
ErrCodeCamelOilOrderNotFound = "CAMEL_OIL_ORDER_NOT_FOUND"
// ErrCodeCamelOilOrderPayTimeout 订单支付超时
ErrCodeCamelOilOrderPayTimeout = "CAMEL_OIL_ORDER_PAY_TIMEOUT"
// ErrCodeCamelOilPhoneGetFailed 获取手机号失败
ErrCodeCamelOilPhoneGetFailed = "CAMEL_OIL_PHONE_GET_FAILED"
// ErrCodeCamelOilPhoneDuplicate 手机号重复
ErrCodeCamelOilPhoneDuplicate = "CAMEL_OIL_PHONE_DUPLICATE"
// ErrCodeCamelOilCodeGetFailed 获取验证码失败
ErrCodeCamelOilCodeGetFailed = "CAMEL_OIL_CODE_GET_FAILED"
// ErrCodeCamelOilCallbackFailed 回调商户失败
ErrCodeCamelOilCallbackFailed = "CAMEL_OIL_CALLBACK_FAILED"
// ErrCodeCamelOilSystemBusy 系统繁忙
ErrCodeCamelOilSystemBusy = "CAMEL_OIL_SYSTEM_BUSY"
)