package admin import ( "fmt" "net/http" "strconv" "strings" "mini-chat/internal/code" "mini-chat/internal/pkg/core" "mini-chat/internal/pkg/validation" "mini-chat/internal/repository/mysql/model" ) type deleteAdminRequest struct { Ids string `json:"ids" binding:"required"` // 编号(多个用,分割) } type deleteAdminResponse struct { Message string `json:"message"` // 提示信息 } // DeleteAdmin 删除客服 // @Summary 删除客服 // @Description 删除客服 // @Tags 管理端.客服管理 // @Accept json // @Produce json // @Param RequestBody body deleteAdminRequest true "请求参数" // @Success 200 {object} deleteAdminResponse // @Failure 400 {object} code.Failure // @Router /admin/delete [post] // @Security LoginVerifyToken func (h *handler) DeleteAdmin() core.HandlerFunc { return func(ctx core.Context) { req := new(deleteAdminRequest) res := new(deleteAdminResponse) if err := ctx.ShouldBindJSON(req); err != nil { ctx.AbortWithError(core.Error( http.StatusBadRequest, code.ParamBindError, validation.Error(err)), ) return } if ctx.SessionUserInfo().IsSuper != 1 { ctx.AbortWithError(core.Error( http.StatusBadRequest, code.DeleteAdminError, fmt.Sprintf("%s: %s", code.Text(code.DeleteAdminError), "禁止操作")), ) return } idList := strings.Split(req.Ids, ",") if len(idList) == 0 || (len(idList) == 1 && idList[0] == "") { ctx.AbortWithError(core.Error( http.StatusBadRequest, code.ParamBindError, "编号不能为空"), ) return } var ids []int32 for _, strID := range idList { if strID == "" { continue } id, err := strconv.Atoi(strID) if err != nil { ctx.AbortWithError(core.Error( http.StatusBadRequest, code.ParamBindError, fmt.Sprintf("无效的编号: %s", strID)), ) return } ids = append(ids, int32(id)) } if len(ids) == 0 { ctx.AbortWithError(core.Error( http.StatusBadRequest, code.ParamBindError, "编号不能为空"), ) return } if _, err := h.writeDB.Admin.WithContext(ctx.RequestContext()). Where(h.writeDB.Admin.IsSuper.Eq(0)). Where(h.writeDB.Admin.ID.In(ids...)). Delete(&model.Admin{}); err != nil { ctx.AbortWithError(core.Error( http.StatusBadRequest, code.DeleteAdminError, fmt.Sprintf("%s: %s", code.Text(code.DeleteAdminError), err.Error())), ) return } res.Message = "操作成功" ctx.Payload(res) } }