package api import ( "net/http" "strings" "github.com/gin-gonic/gin" "ws_usernode/internal/service" ) // AdminHandler 管理员账号相关接口(M1 完成登录;create/reset 走 CLI)。 type AdminHandler struct { svc *service.AdminService } // AdminCreateRequest 管理员创建请求。 type AdminCreateRequest struct { Username string `json:"username" binding:"required"` Password string `json:"password" binding:"required"` Email string `json:"email" binding:"required"` } // Create 创建管理员(仅初始引导用,M1 前可经此接口快速建号)。 func (h *AdminHandler) Create(c *gin.Context) { if h.svc == nil { fail(c, http.StatusNotImplemented, "管理员服务未初始化") return } var req AdminCreateRequest if err := c.ShouldBindJSON(&req); err != nil { fail(c, http.StatusBadRequest, "请求参数不合法: "+err.Error()) return } adm, err := h.svc.Create(c.Request.Context(), req.Username, req.Password, req.Email) if err != nil { switch { case strings.Contains(err.Error(), "已存在"): fail(c, http.StatusConflict, err.Error()) case strings.Contains(err.Error(), "过弱"): fail(c, http.StatusBadRequest, err.Error()) default: fail(c, http.StatusInternalServerError, err.Error()) } return } ok(c, gin.H{"id": adm.ID, "username": adm.Username}) } // Me 返回当前管理员(M1 接入会话后启用)。 func (h *AdminHandler) Me(c *gin.Context) { fail(c, http.StatusNotImplemented, "会话尚未接入(M1)") }