Files
kami_backend/internal/service/camel_oil.go
danial 15e2426e85 feat(camel_oil): 新增骆驼加油账号管理模块
- 实现账号增删改查接口和逻辑
- 支持账号状态更新及状态历史记录功能
- 提供账号列表、历史和统计信息查询API
- 实现账号轮询机制,支持按使用时间轮询获取账号
- 增加账号登录流程及批量登录功能,集成接码平台和平台API
- 管理账号订单容量,支持容量检查与账号登录触发
- 提供账号池状态统计接口
- 账号历史记录查询支持多种变更类型文本展示
- 密码等敏感信息采用脱敏展示
- 完善日志记录和错误处理机制,保证业务稳定运行
2025-11-21 00:49:50 +08:00

102 lines
5.4 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.

// ================================================================================
// 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/internal/consts"
"kami/internal/model/entity"
)
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)
// CheckAndTriggerAccountLogin 检查容量并触发账号登录
// 如果可用订单容量<50,触发账号登录任务
CheckAndTriggerAccountLogin(ctx context.Context) (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 int) (successCount int, err error)
// CheckAndLoginAccounts 检查容量并登录账号
// 根据当前可用订单容量,决定是否需要登录新账号
CheckAndLoginAccounts(ctx context.Context) (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)
// CronAccountLoginTask 账号登录任务 - 由cron调度器定期调用
CronAccountLoginTask(ctx context.Context) error
// CronOrderPaymentCheckTask 订单支付状态检测任务 - 由cron调度器定期调用
CronOrderPaymentCheckTask(ctx context.Context) error
// CronAccountDailyResetTask 账号日重置任务 - 由cron调度器在每日00:05调用
CronAccountDailyResetTask(ctx context.Context) error
CronVerifyCodeCheckTask(ctx context.Context) error
// SubmitOrder 提交订单并返回支付宝支付链接
SubmitOrder(ctx context.Context, req *v1.SubmitOrderReq) (res *v1.SubmitOrderRes, err 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 string, 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)
}
)
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
}