63 lines
1.3 KiB
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)
|
|
}
|