portowyi il y a 1 an
Parent
commit
ded86970ae
7 fichiers modifiés avec 46 ajouts et 65 suppressions
  1. 6 1
      controller/category.go
  2. 1 0
      controller/products.go
  3. 13 1
      cron-job/cronJobs.go
  4. 2 42
      docker-compose.yml
  5. 5 3
      main.go
  6. 3 3
      model/category.go
  7. 16 15
      model/product.go

+ 6 - 1
controller/category.go

@@ -7,8 +7,12 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
+type Categories struct {
+	Categories []model.Category `binding:"dive" json:"categories"`
+}
+
 func CreateUpdateCategories(context *gin.Context) {
-	var categories model.Categories
+	var categories Categories
 	err := context.ShouldBindJSON(&categories)
 	if err != nil {
 		context.JSON(http.StatusBadRequest, gin.H{"error": err.Error})
@@ -21,4 +25,5 @@ func CreateUpdateCategories(context *gin.Context) {
 			return
 		}
 	}
+	context.JSON(http.StatusCreated, gin.H{"ok": "Сохранено"})
 }

+ 1 - 0
controller/products.go

@@ -32,6 +32,7 @@ func LoadProductsInfo(context *gin.Context) {
 			NumberArticle: prod.NumberArticle,
 			NumberSuffix:  prod.NumberSuffix,
 			CategoryId:    prod.CategoryId,
+			IdNumbers:     prod.IdNumbers,
 		}
 		_, err := product.Save()
 		if err != nil {

+ 13 - 1
cron-job/cronJobs.go

@@ -7,6 +7,8 @@ import (
 	"kng_feed_api/model"
 	"os"
 	"path/filepath"
+	"strconv"
+	"strings"
 	"time"
 )
 
@@ -62,7 +64,7 @@ func CreateXMLFeed() {
 	var yml_catalog = &YamlCatalog{}
 
 	time_now := time.Now().UTC()
-	yml_catalog.Date = time_now.Format("2006-01-02 18:15")
+	yml_catalog.Date = time_now.Format("2006-01-02 15:04")
 
 	var shop = &Shop{}
 	shop.Name = "ООО \"Княгиня\""
@@ -139,6 +141,16 @@ func CreateXMLFeed() {
 			Name: "number_suffix",
 		})
 
+		if value.IdNumbers != nil {
+			numbers := strings.Split(*value.IdNumbers, ";")
+			for idx, num := range numbers {
+				offer.Param = append(offer.Param, Param{
+					Text: num,
+					Name: "article_number" + strconv.Itoa(idx+1),
+				})
+			}
+		}
+
 		shop.Offer = append(shop.Offer, offer)
 
 	}

+ 2 - 42
docker-compose.yml

@@ -1,43 +1,5 @@
 version: "3.9"
 services:
-  postgres:
-    image: postgres:15.3-alpine
-    container_name: pg_api
-    environment:
-      POSTGRES_USER: ${DB_USER}
-      POSTGRES_PASSWORD: ${DB_PASSWORD}
-      POSTGRES_DB: ${DB_DATABASE_NAME}
-    ports:
-      - 5432:5432
-    expose:
-      - "6500"
-    volumes:
-      - postgres:/var/lib/postgresql/data
-    healthcheck:
-      test: ["CMD", "pg_isready", "-h", "postgres", "-U", "${DB_USER}"]
-      interval: 5s
-      timeout: 5s
-      retries: 5
-    networks:
-      - api_network
-
-  pgadmin:
-    image: dpage/pgadmin4
-    container_name: pgadmin_tefo
-    environment:
-      PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
-      PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
-      PGADMIN_LISTEN_PORT: ${PGADMIN_LISTEN_PORT}
-    ports:
-      - 5050:80
-    volumes:
-      - pgadmin-data:/var/lib/pgadmin
-    restart: "no"
-    depends_on:
-      - postgres
-    networks:
-      - api_network
-
   app:
     build:
       dockerfile: Dockerfile
@@ -50,10 +12,8 @@ services:
       - "3005:3005"
     networks:
       - api_network
-
-volumes:
-  postgres:
-  pgadmin-data:
+    extra_hosts:
+      - "host.docker.internal:host-gateway"
 
 networks:
   api_network:

+ 5 - 3
main.go

@@ -22,14 +22,15 @@ func main() {
 
 func startCronJob() {
 	cron := cron.New()
-	cron.AddFunc("@every 15s", cronjob.CreateXMLFeed)
+	cron.AddFunc("@every 30s", cronjob.CreateXMLFeed)
 	cron.Start()
 }
 
 func loadDatabase() {
 	database.Connect()
 	database.Database.AutoMigrate(&model.User{})
-	database.Database.AutoMigrate(model.Product{})
+	database.Database.AutoMigrate(&model.Product{})
+	database.Database.AutoMigrate(&model.Category{})
 }
 
 func loadEnv() {
@@ -50,8 +51,9 @@ func serveApplication() {
 
 	feedRoutes := router.Group("/feed")
 	feedRoutes.POST("/products", controller.LoadProductsInfo)
+	feedRoutes.POST("/categories", controller.CreateUpdateCategories)
 	feedRoutes.GET("/", controller.SendFileToClient)
 
-	router.Run(":8000")
+	router.Run(":3005")
 	fmt.Println("Server running on port 8000")
 }

+ 3 - 3
model/category.go

@@ -6,12 +6,12 @@ type Category struct {
 	Id       string `gorm:"size:3;not null;unique;index;primary key" json:"id"`
 	Name     string `gorm:"size:100" json:"name"`
 	ParentId string `gorm:"size:3" json:"parent_id"`
-	Url      string `gorm:"size:3"`
+	Url      string `gorm:"size:3" json:"url"`
 }
 
-type Categories struct {
+/*type Categories struct {
 	Categories []Category `binding:"dive" json:"categories"`
-}
+}*/
 
 func (category *Category) Save() (*Category, error) {
 	err := database.Database.Save(&category).Error

+ 16 - 15
model/product.go

@@ -5,21 +5,22 @@ import (
 )
 
 type Product struct {
-	CodeUT10      string `gorm:"size:6;not null; unique; index; primaryKey" json:"code_ut10"`
-	Name          string `gorm:"size:100" json:"name"`
-	Manufacturer  string `gorm:"size:50" json:"manufacturer"`
-	ArticleNumber string `gorm:"size:50" json:"article_number"`
-	Brand         string `gorm:"size:100" json:"brand"`
-	Unit          string `gorm:"size:50" json:"unit"`
-	GroupLimit    string `gorm:"size:2" json:"group_limit"`
-	GroupPrice    string `gorm:"size:50" json:"group_price"`
-	NumberCatalog string `gorm:"size:50" json:"number_catalog"`
-	NumberDrawing string `gorm:"size:50" json:"number_drawing"`
-	NumberBrand   string `gorm:"size:10" json:"number_brand"`
-	NumberPrefix  string `gorm:"size:4" json:"number_prefix"`
-	NumberArticle string `gorm:"size:25" json:"number_article"`
-	NumberSuffix  string `gorm:"size:3" json:"number_suffix"`
-	CategoryId    string `gorm:"size:5" json:"categoryId"`
+	CodeUT10      string  `gorm:"size:6;not null; unique; index; primaryKey" json:"code_ut10"`
+	Name          string  `gorm:"size:100" json:"name"`
+	Manufacturer  string  `gorm:"size:50" json:"manufacturer"`
+	ArticleNumber string  `gorm:"size:50" json:"article_number"`
+	Brand         string  `gorm:"size:100" json:"brand"`
+	Unit          string  `gorm:"size:50" json:"unit"`
+	GroupLimit    string  `gorm:"size:2" json:"group_limit"`
+	GroupPrice    string  `gorm:"size:50" json:"group_price"`
+	NumberCatalog string  `gorm:"size:50" json:"number_catalog"`
+	NumberDrawing string  `gorm:"size:50" json:"number_drawing"`
+	NumberBrand   string  `gorm:"size:10" json:"number_brand"`
+	NumberPrefix  string  `gorm:"size:4" json:"number_prefix"`
+	NumberArticle string  `gorm:"size:25" json:"number_article"`
+	NumberSuffix  string  `gorm:"size:3" json:"number_suffix"`
+	CategoryId    string  `gorm:"size:5" json:"categoryId"`
+	IdNumbers     *string `gorm:"size:256" json:"id_numbers"`
 }
 
 type ProductsArray struct {