feat: add carousel support and ribenyan crawler

This commit is contained in:
小萝
2026-04-29 08:35:25 +00:00
parent 6ddb8f58ad
commit 2334e29a58
4 changed files with 241 additions and 0 deletions
+13
View File
@@ -5,6 +5,7 @@ import (
"net/http"
"strconv"
"sale/internal/crawler"
"sale/internal/models"
"sale/internal/schemas"
"sale/internal/utils"
@@ -162,3 +163,15 @@ func (h *ArticleHandler) TogglePin(c *gin.Context) {
utils.DB.Model(&article).Update("is_pinned", !article.IsPinned)
c.JSON(http.StatusOK, gin.H{"data": article})
}
// CrawlRibenyan 采集 ribenyan.com 文章
func (h *ArticleHandler) CrawlRibenyan(c *gin.Context) {
crawler := crawler.NewRibenyanCrawler(utils.DB)
if err := crawler.CrawlArticles(); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Crawl completed successfully"})
}
+2
View File
@@ -47,6 +47,8 @@ func SetupRoutes(r *gin.Engine) {
{
articles.GET("", articleHandler.List)
articles.GET("/:id", articleHandler.GetByID)
// 采集 API(管理员权限)
articles.POST("/crawl-ribenyan", articleHandler.CrawlRibenyan)
}
api.GET("/categories", categoryHandler.List)