diff --git a/handlers/role/handler.go b/handlers/role/handler.go index 45beba9..749e5ea 100644 --- a/handlers/role/handler.go +++ b/handlers/role/handler.go @@ -57,7 +57,7 @@ func Delete(ctx *gin.Context) { //log.Println(req) // 2. 删除数据 - rowsNum, err := models.RoleDelete(req.IDList) + rowsNum, err := models.RoleDelete(req.IDList, req.Force) if err != nil { // 记录日志 utils.Logger().Error(err.Error()) diff --git a/handlers/role/message.go b/handlers/role/message.go index 4a3a21d..3a6c0cc 100644 --- a/handlers/role/message.go +++ b/handlers/role/message.go @@ -12,6 +12,7 @@ type RestoreReq struct { // DeleteReq 删除的请求消息 type DeleteReq struct { IDList []uint `form:"id" binding:"gt=0"` + Force bool `form:"force" binding:""` } // 添加请求消息 diff --git a/models/role.go b/models/role.go index 3672a96..b1c5645 100644 --- a/models/role.go +++ b/models/role.go @@ -36,12 +36,18 @@ func RoleRestore(idList []uint) (int64, error) { } // RoleDelete 角色删除 +// @param force bool 是否强制删除 // @return 删除的记录数,error -func RoleDelete(idList []uint) (int64, error) { +func RoleDelete(idList []uint, force bool) (int64, error) { // 将delete操作在事务里完成,删除时,有时会涉及到关联数据的处理 rowsNum := int64(0) err := utils.DB().Transaction(func(tx *gorm.DB) error { - result := tx.Delete(&Role{}, idList) + query := tx.Model(&Role{}) + // 强制 + if force { + query.Unscoped() + } + result := query.Delete(&Role{}, idList) if result.Error != nil { return result.Error } else {