- 增加骆驼模块设置接口支持获取和更新配置 - 使用Redis缓存设置数据,实现模块配置的持久化管理 - 引入预拉取订单日志功能,支持日志的保存和按时间范围查询 - 预拉取订单请求响应数据记录到Redis,方便问题追踪 - 根据模块设置动态调整账号登录、预拉取订单并发数量 - 调整账号登录逻辑以支持配置的并发控制 - 优化预拉取订单补充流程,支持多面额库存管理 - 修正集成API请求函数名及调用,记录详细调用日志数据 - 调整定时任务调度频率,增加预拉取订单补充任务的执行频率 - 升级golang版本到1.25.5,保持开发环境最新状态
161 lines
10 KiB
Go
161 lines
10 KiB
Go
// ================================================================================
|
||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
||
// You can delete these comments if you wish manually maintain this interface file.
|
||
// ================================================================================
|
||
|
||
package service
|
||
|
||
import (
|
||
"context"
|
||
v1 "kami/api/camel_oil/v1"
|
||
"kami/api/commonApi"
|
||
"kami/internal/consts"
|
||
"kami/internal/model"
|
||
"kami/internal/model/entity"
|
||
|
||
"github.com/shopspring/decimal"
|
||
)
|
||
|
||
type (
|
||
ICamelOil interface {
|
||
// GetAccountInfo 获取账号信息
|
||
GetAccountInfo(ctx context.Context, accountId int64) (account *entity.V1CamelOilAccount, err error)
|
||
// CreateAccount 创建账号
|
||
CreateAccount(ctx context.Context, phoneNumber string, remark string) (accountId int64, err error)
|
||
// UpdateAccount 更新账号信息
|
||
UpdateAccount(ctx context.Context, accountId int64, remark string) (err error)
|
||
// DeleteAccount 删除账号(软删除)
|
||
DeleteAccount(ctx context.Context, accountId int64) (err error)
|
||
// ListAccounts 获取账号列表
|
||
ListAccounts(ctx context.Context, status int, current int, pageSize int) (accounts []*entity.V1CamelOilAccount, total int, err error)
|
||
// ListAccount 查询账号列表(API版本)
|
||
ListAccount(ctx context.Context, req *v1.ListAccountReq) (res *v1.ListAccountRes, err error)
|
||
// UpdateAccountStatus 更新账号状态并记录历史
|
||
UpdateAccountStatus(ctx context.Context, accountId int64, newStatus consts.CamelOilAccountStatus, operationType consts.CamelOilAccountChangeType, description string) (err error)
|
||
// RecordAccountHistory 记录账号历史
|
||
RecordAccountHistory(ctx context.Context, accountId int64, operationType consts.CamelOilAccountChangeType, oldStatus consts.CamelOilAccountStatus, newStatus consts.CamelOilAccountStatus, description string) (err error)
|
||
// GetOrderCountByStatus 获取指定状态的订单数量
|
||
GetOrderCountByStatus(ctx context.Context, status consts.CamelOilAccountStatus) (count int, err error)
|
||
// GetAvailableOrderCapacity 获取当前可用订单容量
|
||
// 计算所有在线账号的剩余可下单数之和
|
||
GetAvailableOrderCapacity(ctx context.Context) (capacity int, err error)
|
||
// GetAccountPoolStatus 获取账号池状态统计
|
||
GetAccountPoolStatus(ctx context.Context) (status map[string]interface{}, err error)
|
||
// GetAccountHistory 获取账号历史记录
|
||
GetAccountHistory(ctx context.Context, req *v1.AccountHistoryReq) (res *v1.AccountHistoryRes, err error)
|
||
// LoginAccount 执行账号登录流程
|
||
// 注意:当前使用假数据,实际应对接骆驼加油平台和接码平台
|
||
LoginAccount(ctx context.Context) (err error)
|
||
// BatchLoginAccounts 批量登录账号
|
||
BatchLoginAccounts(ctx context.Context, count int64) (successCount int64, err error)
|
||
// GetAvailableAccount 获取可用账号(按last_used_at轮询)
|
||
// 选择条件:
|
||
// 1. status=2(在线)
|
||
// 2. daily_order_count < 10(当日未达限额)
|
||
// 3. daily_order_date=今日(日期匹配)
|
||
// 排序:last_used_at ASC(最早使用的优先,实现轮询)
|
||
GetAvailableAccount(ctx context.Context) (account *entity.V1CamelOilAccount, err error)
|
||
// GetAccountStatistics 获取账号统计信息
|
||
GetAccountStatistics(ctx context.Context, req *v1.AccountStatisticsReq) (res *v1.AccountStatisticsRes, err error)
|
||
// CronAccountPrefetchTask 账户预拉取定时任务 - 由cron调度器定期调用
|
||
// 流程:并发拉取账户到指定数量
|
||
CronAccountPrefetchTask(ctx context.Context) error
|
||
// CronPrefetchOrderSupplementTask 预拉取订单补充定时任务 - 由cron调度器定期调用
|
||
// 流程:检查预拉取订单库存,不足时补充
|
||
CronPrefetchOrderSupplementTask(ctx context.Context) error
|
||
// CronOrderPaymentCheckTask 订单支付状态检测任务 - 由cron调度器定期调用
|
||
CronOrderPaymentCheckTask(ctx context.Context) error
|
||
// CronAccountDailyResetTask 账号日重置任务 - 由cron调度器在每日00:00调用
|
||
CronAccountDailyResetTask(ctx context.Context) error
|
||
CronVerifyCodeCheckTask(ctx context.Context) error
|
||
// CronCardBindingTask 卡密绑定定时任务 - 由cron调度器定期调用
|
||
// 流程:处理已支付但未绑定 Token 的订单,进行卡密绑定
|
||
CronCardBindingTask(ctx context.Context) error
|
||
// CronCleanExpiredPrefetchOrders 清理过期的预拉取订单
|
||
CronCleanExpiredPrefetchOrders(ctx context.Context) (cleanedCount int, err error)
|
||
// UpdateOrderStatus 更新订单状态并记录历史
|
||
UpdateOrderStatus(ctx context.Context, orderId int64, newStatus consts.CamelOilOrderStatus, operationType consts.CamelOilOrderChangeType, rawData string, description string) (err error)
|
||
// SubmitOrder 提交订单并返回支付宝支付链接
|
||
SubmitOrder(ctx context.Context, req *v1.SubmitOrderReq) (res *v1.SubmitOrderRes, err error)
|
||
// IncrementAccountOrderCount 增加账户订单计数(支付成功时调用)
|
||
IncrementAccountOrderCount(ctx context.Context, accountId int64) error
|
||
// TriggerOrderCallback 触发订单回调
|
||
TriggerOrderCallback(ctx context.Context, req *v1.OrderCallbackReq) (res *v1.OrderCallbackRes, err error)
|
||
// ProcessPendingCallbacks 处理待回调订单(定时任务使用)
|
||
ProcessPendingCallbacks(ctx context.Context) error
|
||
// GetOrderHistory 获取订单历史记录
|
||
GetOrderHistory(ctx context.Context, req *v1.OrderHistoryReq) (res *v1.OrderHistoryRes, err error)
|
||
// RecordOrderHistory 记录订单历史
|
||
RecordOrderHistory(ctx context.Context, orderNo string, changeType consts.CamelOilOrderChangeType, rawData string, remark string) error
|
||
// GetAccountOrders 查询账号关联订单
|
||
GetAccountOrders(ctx context.Context, req *v1.AccountOrderListReq) (res *v1.AccountOrderListRes, err error)
|
||
// ListOrder 查询订单列表
|
||
ListOrder(ctx context.Context, req *v1.ListOrderReq) (res *v1.ListOrderRes, err error)
|
||
// OrderDetail 查询订单详情
|
||
OrderDetail(ctx context.Context, req *v1.OrderDetailReq) (res *v1.OrderDetailRes, err error)
|
||
// GetPrefetchOrderCapacity 获取当前可用订单容量
|
||
GetPrefetchOrderCapacity(ctx context.Context, amount float64) (capacity int, err error)
|
||
// PrefetchOrderConcurrently 使用所有可用账号并发拉取订单,直到获取到可用订单为止
|
||
PrefetchOrderConcurrently(ctx context.Context, amount float64) (result *model.PrefetchOrderResult, err error)
|
||
// PrefetchOrder 拉取单个订单(用于单个账号)
|
||
PrefetchOrder(ctx context.Context, account *entity.V1CamelOilAccount, amount float64) (prefetchId int64, err error)
|
||
// ConcurrentPrefetchOrders 使用多个账号并发拉取订单
|
||
ConcurrentPrefetchOrders(ctx context.Context, amount float64, targetCount int) (successCount int, err error)
|
||
// SupplementPrefetchOrders 补充预拉取订单,当库存不足时调用
|
||
SupplementPrefetchOrders(ctx context.Context) (supplementedCount int, err error)
|
||
// MatchPrefetchOrder 将预拉取订单与用户订单进行匹配
|
||
MatchPrefetchOrder(ctx context.Context, orderId string, amount float64) (result *model.PrefetchOrderResult, err error)
|
||
// GetPrefetchOrderLogs 获取预拉取订单日志
|
||
GetPrefetchOrderLogs(ctx context.Context, req *v1.GetPrefetchOrderLogsReq) (res *v1.GetPrefetchOrderLogsRes, err error)
|
||
// SavePrefetchOrderLog 保存预拉取订单请求日志到Redis
|
||
SavePrefetchOrderLog(ctx context.Context, phone string, amount float64, respStr string)
|
||
// GetSettings 获取骆驼模块设置
|
||
GetSettings(ctx context.Context, req *v1.GetSettingsReq) (res *v1.GetSettingsRes, err error)
|
||
// UpdateSettings 更新骆驼模块设置
|
||
UpdateSettings(ctx context.Context, req *v1.UpdateSettingsReq) (res *v1.UpdateSettingsRes, err error)
|
||
// CreateToken 创建 Token
|
||
CreateToken(ctx context.Context, tokenName string, tokenValue string, phone string, remark string, rechargeLimitAmount float64, rechargeLimitCount int) (tokenId int64, err error)
|
||
// GetTokenInfo 获取 Token 信息
|
||
GetTokenInfo(ctx context.Context, tokenId int64) (token *entity.V1CamelOilToken, err error)
|
||
// ListTokens 列出所有可用的 Token
|
||
ListTokens(ctx context.Context) (tokens []*entity.V1CamelOilToken, err error)
|
||
// ListTokensWithPagination 列出所有可用的 Token(支持分页和查询条件)
|
||
ListTokensWithPagination(ctx context.Context, pageReq commonApi.CommonPageReq, tokenName string, status int) (tokens []*entity.V1CamelOilToken, total int, err error)
|
||
// UpdateToken 更新 Token 信息
|
||
UpdateToken(ctx context.Context, tokenId int64, tokenName string, status int, remark string) error
|
||
// UpdateTokenInfo 修改 Token 基本信息(不包括 tokenValue)
|
||
UpdateTokenInfo(ctx context.Context, tokenId int64, tokenName string, phone string, remark string, rechargeLimitAmount float64, rechargeLimitCount int) error
|
||
// DeleteToken 删除 Token(软删除)
|
||
DeleteToken(ctx context.Context, tokenId int64) error
|
||
// UpdateTokenStatus 更新 Token 状态并记录日志
|
||
UpdateTokenStatus(ctx context.Context, tokenId int64, newStatus consts.CamelOilTokenStatus, remark string) error
|
||
// BindCardToToken 绑定卡密到 Token(使用轮询算法选择 Token)
|
||
BindCardToToken(ctx context.Context, orderId int64, cardNumber string, cardPassword string, amount decimal.Decimal) (bindingId int64, err error)
|
||
// GetCardBindingInfo 获取卡密绑定信息
|
||
GetCardBindingInfo(ctx context.Context, bindingId int64) (binding *entity.V1CamelOilCardBinding, err error)
|
||
// GetCardBindingByOrder 获取订单绑定的卡密信息
|
||
GetCardBindingByOrder(ctx context.Context, orderId int64) (binding *entity.V1CamelOilCardBinding, err error)
|
||
// GetCardBindingsByToken 根据 tokenId 查询绑定的卡密信息
|
||
GetCardBindingsByToken(ctx context.Context, tokenId int64, current int, pageSize int) (bindings []*entity.V1CamelOilCardBinding, total int, err error)
|
||
// GetTokenBindingStats 获取 Token 的绑定统计
|
||
GetTokenBindingStats(ctx context.Context, tokenId int64) (bindCount int, totalAmount decimal.Decimal, err error)
|
||
// CalculateTotalBindingAmount 计算所有 Token 的累计绑定金额
|
||
CalculateTotalBindingAmount(ctx context.Context) (totalAmount decimal.Decimal, err error)
|
||
}
|
||
)
|
||
|
||
var (
|
||
localCamelOil ICamelOil
|
||
)
|
||
|
||
func CamelOil() ICamelOil {
|
||
if localCamelOil == nil {
|
||
panic("implement not found for interface ICamelOil, forgot register?")
|
||
}
|
||
return localCamelOil
|
||
}
|
||
|
||
func RegisterCamelOil(i ICamelOil) {
|
||
localCamelOil = i
|
||
}
|