Example #1
0
//批处理
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)
}