87 lines
2.3 KiB
Go
87 lines
2.3 KiB
Go
package timeslicequery
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"github.com/go-kratos/kratos/v2/log"
|
||
"time"
|
||
"voucher/internal/biz/bo"
|
||
"voucher/internal/biz/do"
|
||
"voucher/internal/pkg/timeslice"
|
||
)
|
||
|
||
func (v *Query) execute(ctx context.Context, req *timeslice.Manager) error {
|
||
|
||
managerStartStr := req.StartTime.Format(time.DateTime)
|
||
managerEndStr := req.EndTime.Format(time.DateTime)
|
||
|
||
taskCount, err := timeslice.NewManager(v.callbackFunc).Run(ctx, req)
|
||
if err != nil {
|
||
log.Errorf("%s到%s,发生错误:%v", managerStartStr, managerEndStr, err)
|
||
}
|
||
|
||
fmt.Printf("%s到%s,总任务数:%d\n", managerStartStr, managerEndStr, taskCount)
|
||
log.Warnf("%s到%s,总任务数:%d", managerStartStr, managerEndStr, taskCount)
|
||
|
||
return nil
|
||
}
|
||
|
||
func (v *Query) callbackFunc(ctx context.Context, req *timeslice.Task) error {
|
||
|
||
startTimeStr := req.Process.Manager.StartTime.Format(time.DateTime)
|
||
endTimeStr := req.Process.Manager.EndTime.Format(time.DateTime)
|
||
|
||
currentStartTimeStr := req.CurrentStartTime.Format(time.DateTime)
|
||
currentEndTimeStr := req.CurrentEndTime.Format(time.DateTime)
|
||
|
||
start := time.Now()
|
||
startStr := start.Format(time.DateTime)
|
||
|
||
x := &do.WechatQuery{
|
||
StartTime: currentStartTimeStr,
|
||
EndTime: currentEndTimeStr,
|
||
ProductNo: req.Process.Manager.ProductNo,
|
||
}
|
||
|
||
n := 0
|
||
num := 0
|
||
notifyNum := 0
|
||
|
||
err := v.orderRepo.FinSucByStockIdInBatches(ctx, x, func(ctx context.Context, rows []*bo.OrderBo) error {
|
||
|
||
n += 1
|
||
for _, order := range rows {
|
||
|
||
num += 1
|
||
if err := v.wechatQuery(ctx, order, ¬ifyNum); err != nil {
|
||
logFields := map[string]string{
|
||
"order_no": order.OrderNo,
|
||
"coupon_id": order.VoucherNo,
|
||
"open_id": order.Account,
|
||
"err": err.Error(),
|
||
}
|
||
log.Errorf("%s到%s,第%d个任务,第%d组,发生错误:+v", startTimeStr, endTimeStr, req.TaskID, n, logFields)
|
||
}
|
||
|
||
}
|
||
|
||
return nil
|
||
})
|
||
|
||
end := time.Now()
|
||
|
||
logFields := map[string]interface{}{
|
||
"总处理组数": n,
|
||
"总处理条数": num,
|
||
"总通知条数": notifyNum,
|
||
"执行任务开始时间": startStr,
|
||
"执行任务结束时间": end.Format(time.DateTime),
|
||
"任务处理开始时间": currentStartTimeStr,
|
||
"任务处理结束时间": currentEndTimeStr,
|
||
"总处理耗时": end.Sub(start).String(),
|
||
}
|
||
log.Warnf("%s到%s,第%d个任务,处理完毕:%+v", startTimeStr, endTimeStr, req.TaskID, logFields)
|
||
|
||
return err
|
||
}
|