package controller import ( "net/http" "strconv" "ezops/dto" "ezops/model" "ezops/service" "ezops/utils" "github.com/gin-gonic/gin" ) // ━━━ Credential Handler (v2 thin) ━━━━━━━━━━━━━━━━━━━━━━━ type CredentialHandlerV2 struct { svc *service.CredentialService } func NewCredentialHandlerV2(svc *service.CredentialService) *CredentialHandlerV2 { return &CredentialHandlerV2{svc: svc} } func (h *CredentialHandlerV2) ListCredentials(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) keyword := c.Query("keyword") secretType := c.Query("secret_type") list, total, err := h.svc.List(keyword, secretType, page, pageSize) if err != nil { utils.InternalError(c, "查询失败") return } utils.ListResponse(c, list, total) } func (h *CredentialHandlerV2) GetCredential(c *gin.Context) { id, _ := strconv.Atoi(c.Param("id")) crd, err := h.svc.GetByID(uint(id)) if err != nil { utils.NotFound(c, "凭据不存在") return } utils.OK(c, crd) } func (h *CredentialHandlerV2) CreateCredential(c *gin.Context) { var req dto.CreateCredentialRequest if err := c.ShouldBindJSON(&req); err != nil { utils.BadRequest(c, "请求参数错误: "+err.Error()) return } crd, err := h.svc.Create(&req) if err != nil { utils.InternalError(c, "创建失败: "+err.Error()) return } utils.OK(c, crd) } func (h *CredentialHandlerV2) UpdateCredential(c *gin.Context) { id, _ := strconv.Atoi(c.Param("id")) var req dto.UpdateCredentialRequest if err := c.ShouldBindJSON(&req); err != nil { utils.BadRequest(c, "请求参数错误: "+err.Error()) return } if err := h.svc.Update(uint(id), &req); err != nil { utils.InternalError(c, "更新失败: "+err.Error()) return } crd, _ := h.svc.GetByID(uint(id)) utils.OK(c, crd) } func (h *CredentialHandlerV2) DeleteCredential(c *gin.Context) { id, _ := strconv.Atoi(c.Param("id")) if err := h.svc.Delete(uint(id)); err != nil { utils.InternalError(c, "删除失败") return } utils.OK(c, gin.H{"id": id}) } // ━━━ Alert Contact Handler (v2 thin) ━━━━━━━━━━━━━━━━━━━━ type AlertContactHandlerV2 struct { svc *service.AlertContactService } func NewAlertContactHandlerV2(svc *service.AlertContactService) *AlertContactHandlerV2 { return &AlertContactHandlerV2{svc: svc} } func (h *AlertContactHandlerV2) ListContacts(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) keyword := c.Query("keyword") list, total, err := h.svc.List(keyword, page, pageSize) if err != nil { utils.InternalError(c, "查询失败: "+err.Error()) return } utils.ListResponse(c, list, total) } func (h *AlertContactHandlerV2) GetContact(c *gin.Context) { id, _ := strconv.Atoi(c.Param("id")) contact, err := h.svc.GetByID(uint(id)) if err != nil { utils.NotFound(c, "联系人不存在") return } utils.OK(c, contact) } func (h *AlertContactHandlerV2) CreateContact(c *gin.Context) { var req dto.CreateAlertContactRequest if err := c.ShouldBindJSON(&req); err != nil { utils.BadRequest(c, "请求参数错误: "+err.Error()) return } contact, err := h.svc.Create(&req) if err != nil { utils.InternalError(c, "创建失败: "+err.Error()) return } utils.OK(c, contact) } func (h *AlertContactHandlerV2) UpdateContact(c *gin.Context) { id, _ := strconv.Atoi(c.Param("id")) var req dto.UpdateAlertContactRequest if err := c.ShouldBindJSON(&req); err != nil { utils.BadRequest(c, "请求参数错误: "+err.Error()) return } if err := h.svc.Update(uint(id), &req); err != nil { utils.InternalError(c, "更新失败") return } contact, _ := h.svc.GetByID(uint(id)) utils.OK(c, contact) } func (h *AlertContactHandlerV2) DeleteContact(c *gin.Context) { id, _ := strconv.Atoi(c.Param("id")) if err := h.svc.Delete(uint(id)); err != nil { utils.InternalError(c, "删除失败") return } c.JSON(http.StatusOK, model.Response{Code: 200, Message: "删除成功"}) } // ━━━ Alert Contact Group Handler (v2 thin) ━━━━━━━━━━━━━━ type AlertContactGroupHandlerV2 struct { svc *service.AlertContactGroupService } func NewAlertContactGroupHandlerV2(svc *service.AlertContactGroupService) *AlertContactGroupHandlerV2 { return &AlertContactGroupHandlerV2{svc: svc} } func (h *AlertContactGroupHandlerV2) ListGroups(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) keyword := c.Query("keyword") list, total, err := h.svc.List(keyword, page, pageSize) if err != nil { utils.InternalError(c, "查询失败") return } utils.ListResponse(c, list, total) } func (h *AlertContactGroupHandlerV2) GetGroup(c *gin.Context) { id, _ := strconv.Atoi(c.Param("id")) g, err := h.svc.GetByID(uint(id)) if err != nil { utils.NotFound(c, "联系组不存在") return } utils.OK(c, g) } func (h *AlertContactGroupHandlerV2) CreateGroup(c *gin.Context) { var req dto.CreateAlertContactGroupRequest if err := c.ShouldBindJSON(&req); err != nil { utils.BadRequest(c, "请求参数错误: "+err.Error()) return } g, err := h.svc.Create(&req) if err != nil { utils.InternalError(c, "创建失败") return } utils.OK(c, g) } func (h *AlertContactGroupHandlerV2) UpdateGroup(c *gin.Context) { id, _ := strconv.Atoi(c.Param("id")) var req dto.UpdateAlertContactGroupRequest if err := c.ShouldBindJSON(&req); err != nil { utils.BadRequest(c, "请求参数错误: "+err.Error()) return } if err := h.svc.Update(uint(id), &req); err != nil { utils.InternalError(c, "更新失败") return } g, _ := h.svc.GetByID(uint(id)) utils.OK(c, g) } func (h *AlertContactGroupHandlerV2) DeleteGroup(c *gin.Context) { id, _ := strconv.Atoi(c.Param("id")) if err := h.svc.Delete(uint(id)); err != nil { utils.InternalError(c, "删除失败") return } c.JSON(http.StatusOK, model.Response{Code: 200, Message: "删除成功"}) }