ai_scheduler/internal/services/cron.go

81 lines
1.8 KiB
Go

package services
import (
"ai_scheduler/internal/biz"
"ai_scheduler/internal/config"
"context"
"github.com/gofiber/fiber/v2/log"
)
type CronService struct {
config *config.Config
dingTalkBotBiz *biz.DingTalkBotBiz
qywxAppBiz *biz.QywxAppBiz
groupConfigBiz *biz.GroupConfigBiz
}
func NewCronService(
config *config.Config,
dingTalkBotBiz *biz.DingTalkBotBiz,
qywxAppBiz *biz.QywxAppBiz,
groupConfigBiz *biz.GroupConfigBiz,
) *CronService {
return &CronService{
config: config,
dingTalkBotBiz: dingTalkBotBiz,
qywxAppBiz: qywxAppBiz,
groupConfigBiz: groupConfigBiz,
}
}
func (d *CronService) CronReportSendDingTalk(ctx context.Context) error {
groupId := d.config.Dingtalk.BotGroupID["bbxt"]
groupInfo, err := d.dingTalkBotBiz.GetGroupInfo(ctx, groupId)
if err != nil {
return err
}
groupConfig, err := d.groupConfigBiz.GetGroupConfig(ctx, groupInfo.ConfigID)
if err != nil {
return err
}
reports, err := d.groupConfigBiz.GetReportLists(ctx, groupConfig)
if err != nil {
return err
}
for _, report := range reports {
err = d.dingTalkBotBiz.SendReport(ctx, &groupInfo, report)
if err != nil {
log.Error(err)
continue
}
}
return nil
}
func (d *CronService) CronReportSendQywx(ctx context.Context) error {
groupId := d.config.Qywx.BotGroupID["bbxt"]
groupInfo, err := d.qywxAppBiz.GetGroupInfo(ctx, groupId)
if err != nil {
return err
}
groupConfig, err := d.groupConfigBiz.GetGroupConfig(ctx, groupInfo.ConfigID)
if err != nil {
return err
}
reports, err := d.groupConfigBiz.GetReportLists(ctx, groupConfig)
if err != nil {
return err
}
for _, report := range reports {
err = d.qywxAppBiz.SendReport(ctx, &groupInfo, report)
if err != nil {
log.Error(err)
continue
}
}
return nil
}