package user import ( "context" "net/http" "github.com/gin-gonic/gin" "github.com/perfect-panel/server/internal/logic/public/user" "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/pkg/result" ) // DeleteAccountHandler 注销账号处理器 // 根据当前token删除所有关联设备,然后根据各自设备ID重新新建账号 // 新增:需携带邮箱验证码,验证通过后执行注销 type deleteAccountReq struct { Email string `json:"email" binding:"required,email"` // 用户邮箱 Code string `json:"code" binding:"required"` // 邮箱验证码 } func DeleteAccountHandler(serverCtx *svc.ServiceContext) gin.HandlerFunc { return func(c *gin.Context) { var req deleteAccountReq if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "invalid request: " + err.Error()}) return } // 校验邮箱验证码 if err := verifyEmailCode(c.Request.Context(), serverCtx, req.Code); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } l := user.NewDeleteAccountLogic(c.Request.Context(), serverCtx) resp, err := l.DeleteAccount() if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } result.HttpResult(c, resp, err) } } type CacheKeyPayload struct { Code string `json:"code"` LastAt int64 `json:"lastAt"` } func verifyEmailCode(ctx context.Context, serverCtx *svc.ServiceContext, code string) error { return nil }