func (as *ArticleService) Read(v interface{}) (*Result, error) { opt, ok := v.(ArticleReadOption) if !ok { return nil, ErrServiceFuncNeedType(as.Read, opt) } whereStr, whereArgs := opt.toWhereString() a := new(model.Article) if _, err := core.Db.Where(whereStr, whereArgs...).Get(a); err != nil { return nil, err } if a.Id == 0 { return nil, ErrArticleNotFound } if opt.IsPublish && !a.IsPublish() { return nil, ErrArticleNotFound } if opt.IsHit { if _, err := core.Db.Exec("UPDATE article SET hits = hits + 1 WHERE id = ?", a.Id); err != nil { return nil, err } } return newResult(as.Read, a), nil }