Example #1
0
// @title 删除文章
// @description 删除文章及 postMate中的信息
// @router /del/:id [get]
func (c *PostController) Del() {
	res := &common.Response{}
	defer func() {
		c.Data["json"] = res
		c.ServeJSON()
	}()
	id, err := strconv.ParseInt(c.Ctx.Input.Param(":id"), 10, 64)
	if err != nil {
		res.Code = 1
		res.Msg = "del post id not valid"
		return
	}
	var post models.Post
	post.Id = id
	if post.Read() != nil {
		res.Code = 2
		res.Msg = "post not exist"
		return
	}
	if post.Del() != nil {
		res.Code = 3
		res.Msg = "del post failed"
		return
	}
	// sync postMate
	o := orm.NewOrm()
	var tagList []orm.Params
	num, err := o.QueryTable("postmeta").Filter("postid", id).Values(&tagList)
	if err != nil {
		fmt.Printf("del post id %v in postmeta failed!", id)
		for _, tag := range tagList {
			//metaId, _ := strconv.ParseInt(tag["MetaId"].(string), 10, 64)
			meta := models.Meta{Id: tag["MetaId"].(int64)}
			if meta.Read("Id") == nil {
				meta.Count -= 1
				meta.Update("Count")
			}
			//postMetaId, _ := strconv.ParseInt(tag["Id"].(string), 10, 64)
			postMeta := models.Postmeta{Id: tag["Id"].(int64)}
			if err := postMeta.Del(); err == nil {
				fmt.Println("delete post meta success")
			} else {
				fmt.Println("delete post meta error", err)
			}
		}
	}
	fmt.Printf("del post id %v in postmeta affected num is %v", id, num)
	return
}