- 增加骆驼模块设置接口支持获取和更新配置 - 使用Redis缓存设置数据,实现模块配置的持久化管理 - 引入预拉取订单日志功能,支持日志的保存和按时间范围查询 - 预拉取订单请求响应数据记录到Redis,方便问题追踪 - 根据模块设置动态调整账号登录、预拉取订单并发数量 - 调整账号登录逻辑以支持配置的并发控制 - 优化预拉取订单补充流程,支持多面额库存管理 - 修正集成API请求函数名及调用,记录详细调用日志数据 - 调整定时任务调度频率,增加预拉取订单补充任务的执行频率 - 升级golang版本到1.25.5,保持开发环境最新状态
97 lines
2.6 KiB
Go
97 lines
2.6 KiB
Go
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
|
||
} |