//批处理 func (this *ArticleController) Batch() { ids := this.GetStrings("ids[]") op := this.GetString("op") if len(ids) == 0 { this.Redirect(this.Ctx.Request.Referer(), 302) this.StopRun() } idarr := make([]int64, 0) for _, v := range ids { if id, _ := strconv.ParseInt(v, 10, 64); id > 0 { idarr = append(idarr, id) } } var post models.Article var articleList []*models.Article switch op { case "topub": //移到已发布 post.Query().Filter("id__in", idarr).All(&articleList) for _, v := range articleList { if v.Status == 2 { tag := models.Tag{Name: v.Tag} tag.Read("name") tag.Count++ tag.Update("count") } } post.Query().Filter("id__in", idarr).Update(orm.Params{"status": 0}) case "todrafts": //移到草稿箱 post.Query().Filter("id__in", idarr).All(&articleList) for _, v := range articleList { if v.Status == 2 { tag := models.Tag{Name: v.Tag} tag.Read("name") tag.Count++ tag.Update("count") } } post.Query().Filter("id__in", idarr).Update(orm.Params{"status": 1}) case "totrash": //移到回收站 post.Query().Filter("id__in", idarr).All(&articleList) for _, v := range articleList { if v.Status != 2 { tag := models.Tag{Name: v.Tag} tag.Read("name") tag.Count-- tag.Update("count") } } post.Query().Filter("id__in", idarr).Update(orm.Params{"status": 2}) case "todestroy": post.Query().Filter("id__in", idarr).Delete() } this.Redirect(this.Ctx.Request.Referer(), 302) }