refactor(camel_oil): 移除冗余glog日志,统一使用保存日志方法
- 删除SendCaptcha和登录相关接口中的glog.Infof和glog.Info日志调用 - 去除PrefetchOrder并发拉取订单和单账号拉取订单过程中的所有glog日志 - 在绑卡请求响应处改为记录详细响应日志,替代原有glog日志 - order_logs接口响应结构新增实际查询到的最早和最晚日志时间字段 - prefetch_order_logs逻辑增加对实际查询时间范围的记录和返回 - 统一调用service.CamelOil().SavePrefetchOrderLog记录详细业务日志,避免重复打印
This commit is contained in:
@@ -26,4 +26,8 @@ type PrefetchOrderLogItem struct {
|
||||
type GetPrefetchOrderLogsRes struct {
|
||||
// 日志列表
|
||||
Logs []PrefetchOrderLogItem `json:"logs" description:"预拉取订单日志列表"`
|
||||
// 实际查询到的最早日志时间
|
||||
ActualStartTime *gtime.Time `json:"actualStartTime" description:"实际查询到的最早日志时间"`
|
||||
// 实际查询到的最晚日志时间
|
||||
ActualEndTime *gtime.Time `json:"actualEndTime" description:"实际查询到的最晚日志时间"`
|
||||
}
|
||||
|
||||
@@ -44,7 +44,6 @@ func (s *sCamelOil) GetPrefetchOrderCapacity(ctx context.Context, amount float64
|
||||
|
||||
// PrefetchOrderConcurrently 使用所有可用账号并发拉取订单,直到获取到可用订单为止
|
||||
func (s *sCamelOil) PrefetchOrderConcurrently(ctx context.Context, amount float64) (result *model.PrefetchOrderResult, err error) {
|
||||
glog.Infof(ctx, "开始并发拉取预拉取订单,目标金额: %.2f", amount)
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("开始并发拉取预拉取订单 - 目标金额: %.2f", amount))
|
||||
|
||||
// 获取设置
|
||||
@@ -54,11 +53,8 @@ func (s *sCamelOil) PrefetchOrderConcurrently(ctx context.Context, amount float6
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("获取骆驼模块设置失败 - 错误: %s", err.Error()))
|
||||
return nil, err
|
||||
}
|
||||
glog.Infof(ctx, "获取骆驼模块设置成功,并发账号数限制: %d", settings.PrefetchConcurrencyAccounts)
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("获取骆驼模块设置成功 - 并发账号数限制: %d", settings.PrefetchConcurrencyAccounts))
|
||||
|
||||
// 1. 获取所有在线账号
|
||||
glog.Infof(ctx, "开始查询可用的在线账号...")
|
||||
s.SavePrefetchOrderLog(ctx, "开始查询可用的在线账号")
|
||||
|
||||
m := dao.V1CamelOilAccount.Ctx(ctx).DB(config.GetDatabaseV1())
|
||||
@@ -73,7 +69,6 @@ func (s *sCamelOil) PrefetchOrderConcurrently(ctx context.Context, amount float6
|
||||
return nil, gerror.Wrap(err, "查询在线账号失败")
|
||||
}
|
||||
|
||||
glog.Infof(ctx, "查询到 %d 个在线可用账号", len(onlineAccounts))
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("查询到 %d 个在线可用账号", len(onlineAccounts)))
|
||||
if len(onlineAccounts) == 0 {
|
||||
glog.Warningf(ctx, "暂无在线账号可用")
|
||||
@@ -93,8 +88,6 @@ func (s *sCamelOil) PrefetchOrderConcurrently(ctx context.Context, amount float6
|
||||
|
||||
// 2. 使用设置中的并发数量限制并发
|
||||
concurrencyLimit := min(len(onlineAccounts), settings.PrefetchConcurrencyAccounts)
|
||||
glog.Infof(ctx, "设置并发限制: %d (在线账号数: %d, 系统并发限制: %d)",
|
||||
concurrencyLimit, len(onlineAccounts), settings.PrefetchConcurrencyAccounts)
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("设置并发限制 - 并发数: %d, 在线账号数: %d, 系统并发限制: %d",
|
||||
concurrencyLimit, len(onlineAccounts), settings.PrefetchConcurrencyAccounts))
|
||||
|
||||
@@ -158,7 +151,6 @@ func (s *sCamelOil) PrefetchOrderConcurrently(ctx context.Context, amount float6
|
||||
|
||||
// 5. 等待第一个成功的订单
|
||||
if res := <-resultChan; res != nil {
|
||||
glog.Infof(ctx, "并发拉取订单成功,账号=%s, 金额=%.2f", res.AccountName, res.Amount)
|
||||
return res, nil
|
||||
}
|
||||
|
||||
@@ -173,7 +165,6 @@ func (s *sCamelOil) PrefetchOrderConcurrently(ctx context.Context, amount float6
|
||||
|
||||
// PrefetchOrder 拉取单个订单(用于单个账号)
|
||||
func (s *sCamelOil) PrefetchOrder(ctx context.Context, account *entity.V1CamelOilAccount, amount float64) (prefetchId int64, err error) {
|
||||
glog.Infof(ctx, "开始为账号拉取预拉取订单,账号ID=%d, 账号名称=%s, 金额=%.2f", account.Id, account.AccountName, amount)
|
||||
|
||||
// 记录开始拉取订单的日志
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("开始预拉取订单 - 账号ID: %d, 账号名称: %s, 金额: %.2f, 手机号: %s***%s",
|
||||
@@ -181,19 +172,16 @@ func (s *sCamelOil) PrefetchOrder(ctx context.Context, account *entity.V1CamelOi
|
||||
account.Phone[:3], account.Phone[len(account.Phone)-4:]))
|
||||
|
||||
// 1. 从骆驼平台拉取订单
|
||||
glog.Infof(ctx, "开始调用骆驼平台API创建订单...")
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("调用骆驼平台API - 账号ID: %d, 账号名称: %s, 金额: %.2f, 操作: CreateCamelOilOrder",
|
||||
account.Id, account.AccountName, amount))
|
||||
|
||||
platformOrderId, payUrl, err := camel_oil_api.NewClient(ctx).CreateCamelOilOrder(ctx, account.Phone, account.Token, amount)
|
||||
|
||||
if err != nil {
|
||||
glog.Errorf(ctx, "调用骆驼平台API创建订单失败,账号ID=%d, 错误: %v", account.Id, err)
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("骆驼平台API调用失败 - 账号ID: %d, 账号名称: %s, 错误: %s",
|
||||
account.Id, account.AccountName, err.Error()))
|
||||
|
||||
if err.Error() == "auth_error" {
|
||||
glog.Errorf(ctx, "账号token失效,账号ID=%d", account.Id)
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("账号token失效 - 账号ID: %d, 账号名称: %s, 处理: 更新为无效状态",
|
||||
account.Id, account.AccountName))
|
||||
_ = s.UpdateAccountStatus(ctx, account.Id, consts.CamelOilAccountStatusInvalid, consts.CamelOilAccountChangeTypeInvalidate, "账号token失效")
|
||||
@@ -202,12 +190,10 @@ func (s *sCamelOil) PrefetchOrder(ctx context.Context, account *entity.V1CamelOi
|
||||
return 0, gerror.Wrap(err, "从骆驼平台拉取订单失败")
|
||||
}
|
||||
|
||||
glog.Infof(ctx, "骆驼平台API调用成功,账号ID=%d, 平台订单号=%s", account.Id, platformOrderId)
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("骆驼平台API调用成功 - 账号ID: %d, 账号名称: %s, 平台订单号: %s, 支付链接: %t",
|
||||
account.Id, account.AccountName, platformOrderId, payUrl != ""))
|
||||
|
||||
// 3. 保存预拉取订单记录
|
||||
glog.Infof(ctx, "开始保存预拉取订单到数据库...")
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("保存预拉取订单到数据库 - 账号ID: %d, 账号名称: %s, 平台订单号: %s, 状态: 待匹配",
|
||||
account.Id, account.AccountName, platformOrderId))
|
||||
|
||||
|
||||
@@ -32,8 +32,13 @@ func (s *sCamelOil) GetPrefetchOrderLogs(ctx context.Context, req *v1.GetPrefetc
|
||||
maxLogCount := 1000
|
||||
logCount := 0
|
||||
|
||||
// 用于跟踪实际查询到的时间范围
|
||||
var actualStartTime, actualEndTime *gtime.Time
|
||||
|
||||
// 遍历时间范围内的每一分钟
|
||||
currentTime := req.EndTime
|
||||
actualEndTime = currentTime
|
||||
actualStartTime = currentTime
|
||||
for currentTime.Before(req.EndTime) || currentTime.Equal(req.EndTime) {
|
||||
if logCount >= maxLogCount {
|
||||
break
|
||||
@@ -41,8 +46,8 @@ func (s *sCamelOil) GetPrefetchOrderLogs(ctx context.Context, req *v1.GetPrefetc
|
||||
redisKey := redisKeyPrefix + currentTime.Layout("2006-01-02T15:04")
|
||||
|
||||
// 从Redis获取日志数据
|
||||
logData, err := cache.NewCache().Get(ctx, redisKey)
|
||||
if err != nil {
|
||||
logData, err2 := cache.NewCache().Get(ctx, redisKey)
|
||||
if err2 != nil {
|
||||
glog.Warningf(ctx, "获取Redis日志失败,key: %s, error: %v", redisKey, err)
|
||||
currentTime = currentTime.Add(time.Minute)
|
||||
continue
|
||||
@@ -83,12 +88,15 @@ func (s *sCamelOil) GetPrefetchOrderLogs(ctx context.Context, req *v1.GetPrefetc
|
||||
logCount++
|
||||
}
|
||||
|
||||
actualStartTime = currentTime
|
||||
currentTime = currentTime.Add(-gtime.M)
|
||||
}
|
||||
|
||||
// 返回结果
|
||||
res = &v1.GetPrefetchOrderLogsRes{
|
||||
Logs: logs,
|
||||
Logs: logs,
|
||||
ActualStartTime: actualStartTime,
|
||||
ActualEndTime: actualEndTime,
|
||||
}
|
||||
|
||||
return res, nil
|
||||
|
||||
@@ -50,7 +50,6 @@ func NewClient(ctx context.Context) *Client {
|
||||
|
||||
func (c *Client) SendCaptcha(ctx context.Context, phone string) (bool, error) {
|
||||
// 记录请求开始
|
||||
glog.Infof(ctx, "开始发送验证码 - 手机号: %s", phone)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("发送验证码请求开始 - 手机号: %s, 渠道: app", phone))
|
||||
|
||||
req := struct {
|
||||
@@ -63,8 +62,7 @@ func (c *Client) SendCaptcha(ctx context.Context, phone string) (bool, error) {
|
||||
|
||||
// 记录请求数据
|
||||
reqData, _ := json.Marshal(req)
|
||||
glog.Infof(ctx, "发送验证码请求数据: %s", string(reqData))
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("发送验证码请求数据 - URL: https://recharge3.bac365.com/camel_wechat_mini_oil_server/sendVerifyMessage, 数据: %s", string(reqData)))
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("发送验证码请求数据 - 数据: %s", string(reqData)))
|
||||
|
||||
resp, err := c.Client.ContentJson().Post(ctx, "https://app.bac365.com/camel_wechat_mini_oil_server/sendVerifyMessage", req)
|
||||
if err != nil {
|
||||
@@ -74,7 +72,6 @@ func (c *Client) SendCaptcha(ctx context.Context, phone string) (bool, error) {
|
||||
}
|
||||
|
||||
respStr := resp.ReadAllString()
|
||||
glog.Info(ctx, "发送验证码响应数据:", respStr)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("发送验证码响应数据 - 手机号: %s, 响应: %s", phone, respStr))
|
||||
|
||||
respStruct := struct {
|
||||
@@ -90,7 +87,6 @@ func (c *Client) SendCaptcha(ctx context.Context, phone string) (bool, error) {
|
||||
|
||||
success := respStruct.Code == "success"
|
||||
if success {
|
||||
glog.Infof(ctx, "发送验证码成功,手机号: %s", phone)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("发送验证码成功 - 手机号: %s, 响应消息: %s", phone, respStruct.Message))
|
||||
} else {
|
||||
glog.Warningf(ctx, "发送验证码失败,手机号: %s, 错误码: %s, 消息: %s", phone, respStruct.Code, respStruct.Message)
|
||||
@@ -161,8 +157,7 @@ func (c *Client) LoginWithCaptcha(ctx context.Context, phone string, code string
|
||||
|
||||
// 记录请求数据
|
||||
reqData, _ := json.Marshal(req)
|
||||
glog.Infof(ctx, "登录请求数据: %s", string(reqData))
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录请求数据 - URL: https://app.bac365.com/camel_wechat_mini_oil_server/loginApp, 数据: %s", string(reqData)))
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录请求数据 - 手机号:%s 数据: %s", phone, string(reqData)))
|
||||
|
||||
resp, err := c.Client.ContentJson().Post(ctx, "https://app.bac365.com/camel_wechat_mini_oil_server/loginApp", req)
|
||||
if err != nil {
|
||||
@@ -172,7 +167,6 @@ func (c *Client) LoginWithCaptcha(ctx context.Context, phone string, code string
|
||||
}
|
||||
|
||||
respStr := resp.ReadAllString()
|
||||
glog.Info(ctx, "登录响应数据:", respStr)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录响应数据 - 手机号: %s, 响应: %s", phone, respStr))
|
||||
|
||||
respStruct := struct {
|
||||
@@ -248,6 +242,7 @@ func (c *Client) QueryCamelOilCardAvailableDenominations(ctx context.Context, to
|
||||
Goods []Good `json:"goods"`
|
||||
}{}
|
||||
respStr := resp.ReadAllString()
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("查询可用面额响应数据 - 响应: %s", respStr))
|
||||
if err = json.Unmarshal([]byte(respStr), &queryRespStruct); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -256,7 +251,6 @@ func (c *Client) QueryCamelOilCardAvailableDenominations(ctx context.Context, to
|
||||
|
||||
func (c *Client) CreateCamelOilOrder(ctx context.Context, phone, token string, amount float64) (orderId string, payUrl string, err error) {
|
||||
// 记录创建订单开始
|
||||
glog.Infof(ctx, "开始创建骆驼油订单 - 手机号: %s, 金额: %.2f", phone, amount)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("创建骆驼油订单开始 - 手机号: %s, 金额: %.2f", phone, amount))
|
||||
|
||||
c.Client.SetHeader("Authorization", "Bearer "+c.getAuth(ctx, token))
|
||||
@@ -279,7 +273,6 @@ func (c *Client) CreateCamelOilOrder(ctx context.Context, phone, token string, a
|
||||
return "", "", errors.New("当前金额不支持")
|
||||
}
|
||||
|
||||
glog.Infof(ctx, "找到匹配的面额商品,手机号: %s, 金额: %.2f, 商品ID: %s", phone, amount, goodId)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("找到匹配商品 - 手机号: %s, 金额: %.2f, 商品ID: %s", phone, amount, goodId))
|
||||
|
||||
const maxRetries = 10
|
||||
@@ -389,7 +382,6 @@ func (c *Client) CreateCamelOilOrder(ctx context.Context, phone, token string, a
|
||||
return
|
||||
}
|
||||
respStr := resp.ReadAllString()
|
||||
glog.Info(ctx, "创建订单响应", respStr)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("创建订单响应 - 手机号: %s, 响应: %s", phone, respStr))
|
||||
|
||||
respStruct := struct {
|
||||
@@ -596,7 +588,10 @@ func (c *Client) RechargeCard(ctx context.Context, token, phone, eCardCode strin
|
||||
Message string `json:"message"`
|
||||
}{}
|
||||
|
||||
err = json.Unmarshal(resp.ReadAll(), &respStruct)
|
||||
responseStr := resp.ReadAllString()
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("绑卡请求响应 手机号:%s 卡号:%s - 响应数据: %s", phone, eCardCode, responseStr))
|
||||
|
||||
err = json.Unmarshal([]byte(responseStr), &respStruct)
|
||||
if err != nil {
|
||||
glog.Errorf(ctx, "解析绑卡响应失败,错误: %v", err)
|
||||
return RechargeCardErrorNetwork, err
|
||||
|
||||
Reference in New Issue
Block a user