ai_scheduler/internal/services/advice.go

63 lines
1.3 KiB
Go

package services
import (
"ai_scheduler/internal/biz"
"ai_scheduler/internal/config"
"ai_scheduler/internal/entitys"
"ai_scheduler/internal/pkg/file_download"
"context"
"errors"
"net/url"
"github.com/gofiber/fiber/v2"
)
// ChatHandler 聊天处理器
type AdviceService struct {
adviceBiz *biz.AdviceBiz
cfg *config.Config
}
// NewChatHandler 创建聊天处理器
func NewAdviceService(
adviceBiz *biz.AdviceBiz,
cfg *config.Config,
) *AdviceService {
return &AdviceService{
adviceBiz: adviceBiz,
cfg: cfg,
}
}
func (a *AdviceService) WordAna(c *fiber.Ctx) error {
req := &entitys.WordAnaReq{}
if err := c.BodyParser(req); err != nil {
return err
}
// URL 解码
fileURL, err := url.PathUnescape(req.WordFileUrl)
if err != nil {
return errors.New("URL 解码失败")
}
result, _, err := file_download.GetWordTextFromURL(fileURL, file_download.IsWordFile)
if err != nil {
return err
}
return a.adviceBiz.WordAna(c.UserContext(), result)
}
func (a *AdviceService) WordAnat(path string) error {
// URL 解码
fileURL, err := url.PathUnescape(path)
if err != nil {
return errors.New("URL 解码失败")
}
result, _, err := file_download.GetWordTextFromURL(fileURL, file_download.IsWordFile)
if err != nil {
return err
}
return a.adviceBiz.WordAna(context.Background(), result)
}