diff --git a/http/controller/admin/userToken.go b/http/controller/admin/userToken.go index 5a5c598..23e88e2 100644 --- a/http/controller/admin/userToken.go +++ b/http/controller/admin/userToken.go @@ -88,37 +88,26 @@ func (ct *UserToken) Delete(c *gin.Context) { // @Description 登录凭证批量删除 // @Accept json // @Produce json -// @Param body body model.UserToken true "登录凭证信息" +// @Param body body admin.UserTokenBatchDeleteForm true "登录凭证信息" // @Success 200 {object} response.Response // @Failure 500 {object} response.Response // @Router /admin/user_token/delete [post] // @Security token func (ct *UserToken) BatchDelete(c *gin.Context) { - f := &model.UserToken{} + f := &admin.UserTokenBatchDeleteForm{} if err := c.ShouldBindJSON(f); err != nil { response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")+err.Error()) return } - id := f.Id - errList := global.Validator.ValidVar(c, id, "required,gt=0") - if len(errList) > 0 { - response.Fail(c, 101, errList[0]) + ids := f.Ids + if len(ids) == 0 { + response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")) return } - l := service.AllService.UserService.TokenInfoById(f.Id) - u := service.AllService.UserService.CurUser(c) - if !service.AllService.UserService.IsAdmin(u) && l.UserId != u.Id { - response.Fail(c, 101, response.TranslateMsg(c, "NoAccess")) + err := service.AllService.UserService.BatchDeleteUserToken(ids) + if err == nil { + response.Success(c, nil) return } - if l.Id > 0 { - err := service.AllService.UserService.DeleteToken(l) - if err == nil { - response.Success(c, nil) - return - } - response.Fail(c, 101, err.Error()) - return - } - response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound")) + response.Fail(c, 101, err.Error()) } diff --git a/http/request/admin/user.go b/http/request/admin/user.go index 0172763..e35d5f4 100644 --- a/http/request/admin/user.go +++ b/http/request/admin/user.go @@ -69,3 +69,7 @@ type RegisterForm struct { Password string `json:"password" validate:"required,gte=4,lte=32"` ConfirmPassword string `json:"confirm_password" validate:"required,gte=4,lte=32"` } + +type UserTokenBatchDeleteForm struct { + Ids []uint `json:"ids" validate:"required"` +} diff --git a/http/router/admin.go b/http/router/admin.go index be2eb23..463a4e3 100644 --- a/http/router/admin.go +++ b/http/router/admin.go @@ -195,6 +195,7 @@ func UserTokenBind(rg *gin.RouterGroup) { cont := &admin.UserToken{} aR.GET("/list", cont.List) aR.POST("/delete", cont.Delete) + aR.POST("/batchDelete", cont.BatchDelete) } func ConfigBind(rg *gin.RouterGroup) { aR := rg.Group("/config") diff --git a/service/user.go b/service/user.go index 8a4fd47..bcb3fbe 100644 --- a/service/user.go +++ b/service/user.go @@ -458,3 +458,7 @@ func (us *UserService) AutoRefreshAccessToken(ut *model.UserToken) { us.RefreshAccessToken(ut) } } + +func (us *UserService) BatchDeleteUserToken(ids []uint) error { + return global.DB.Where("id in ?", ids).Delete(&model.UserToken{}).Error +}