package handler import ( "net/http" "github.com/gin-gonic/gin" "gorm.io/gorm" "github.com/wangjia/jiu/backend/internal/middleware" "github.com/wangjia/jiu/backend/internal/model" ) type ShopHandler struct { db *gorm.DB } func NewShopHandler(db *gorm.DB) *ShopHandler { return &ShopHandler{db: db} } // GetInfo GET /api/v1/shop/info func (h *ShopHandler) GetInfo(c *gin.Context) { shopID := middleware.GetShopID(c) var shop model.Shop if err := h.db.First(&shop, shopID).Error; err != nil { c.JSON(http.StatusNotFound, gin.H{"error": "shop not found"}) return } c.JSON(http.StatusOK, shop) } // UpdateInfo PUT /api/v1/shop/info (admin only) func (h *ShopHandler) UpdateInfo(c *gin.Context) { shopID := middleware.GetShopID(c) var req struct { Name string `json:"name"` Address string `json:"address"` Phone string `json:"phone"` ManagerName string `json:"manager_name"` } if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } updates := map[string]interface{}{ "name": req.Name, "address": req.Address, "phone": req.Phone, "manager_name": req.ManagerName, } if err := h.db.Model(&model.Shop{}).Where("id = ?", shopID).Updates(updates).Error; err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } var shop model.Shop h.db.First(&shop, shopID) c.JSON(http.StatusOK, shop) }