Files
kami_backend/internal/logic/camel_oil/settings.go
danial 8495c453f3 feat(camel_oil): 添加骆驼模块设置和预拉取订单日志功能
- 增加骆驼模块设置接口支持获取和更新配置
- 使用Redis缓存设置数据,实现模块配置的持久化管理
- 引入预拉取订单日志功能,支持日志的保存和按时间范围查询
- 预拉取订单请求响应数据记录到Redis,方便问题追踪
- 根据模块设置动态调整账号登录、预拉取订单并发数量
- 调整账号登录逻辑以支持配置的并发控制
- 优化预拉取订单补充流程,支持多面额库存管理
- 修正集成API请求函数名及调用,记录详细调用日志数据
- 调整定时任务调度频率,增加预拉取订单补充任务的执行频率
- 升级golang版本到1.25.5,保持开发环境最新状态
2025-12-03 21:17:56 +08:00

97 lines
2.6 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 camel_oil
import (
"context"
"encoding/json"
"github.com/gogf/gf/v2/frame/g"
"kami/api/camel_oil/v1"
"kami/utility/cache"
)
// GetSettings 获取骆驼模块设置
func (s *sCamelOil) GetSettings(ctx context.Context, req *v1.GetSettingsReq) (res *v1.GetSettingsRes, err error) {
// 从Redis获取设置
settingsKey := cache.CamelOilSettings.Key("default")
c := cache.NewCache()
settingsData, err := c.Get(ctx, settingsKey)
if err != nil {
return nil, err
}
settings := &v1.CamelOilSettings{
UseHaozhuPlatform: false, // 默认不使用豪猪平台拉取手机号
LoginAccountCount: 0,
PrefetchConcurrencyAccounts: 0,
SingleAccountConcurrency: 1,
TargetDenominations: []v1.DenominationSetting{},
}
if settingsData != nil && !settingsData.IsNil() {
// 如果有缓存数据,解析它
err = json.Unmarshal([]byte(settingsData.String()), settings)
if err != nil {
g.Log().Error(ctx, "解析骆驼模块设置失败", err)
// 解析失败则使用默认值
}
}
res = &v1.GetSettingsRes{
CamelOilSettings: *settings,
}
return res, nil
}
// UpdateSettings 更新骆驼模块设置
func (s *sCamelOil) UpdateSettings(ctx context.Context, req *v1.UpdateSettingsReq) (res *v1.UpdateSettingsRes, err error) {
// 将设置序列化为JSON
settingsJSON, err := json.Marshal(req.CamelOilSettings)
if err != nil {
return nil, err
}
// 保存到Redis永不过期设置0表示永不过期
settingsKey := cache.CamelOilSettings.Key("default")
c := cache.NewCache()
err = c.Set(ctx, settingsKey, string(settingsJSON), 0)
if err != nil {
return nil, err
}
g.Log().Info(ctx, "骆驼模块设置已更新", string(settingsJSON))
res = &v1.UpdateSettingsRes{}
return res, nil
}
// GetCamelOilSettings 获取骆驼模块设置的辅助函数
func GetCamelOilSettings(ctx context.Context) (*v1.CamelOilSettings, error) {
settingsKey := cache.CamelOilSettings.Key("default")
c := cache.NewCache()
settingsData, err := c.Get(ctx, settingsKey)
if err != nil {
return nil, err
}
// 默认设置
settings := &v1.CamelOilSettings{
UseHaozhuPlatform: false, // 默认不使用豪猪平台拉取手机号
LoginAccountCount: 10, // 默认10个账号
PrefetchConcurrencyAccounts: 10, // 默认10个并发
SingleAccountConcurrency: 3, // 默认3个并发
TargetDenominations: []v1.DenominationSetting{},
}
if settingsData != nil && !settingsData.IsNil() {
err = json.Unmarshal([]byte(settingsData.String()), settings)
if err != nil {
g.Log().Error(ctx, "解析骆驼模块设置失败", err)
// 解析失败则使用默认值
}
}
return settings, nil
}