record.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package viewdb
  2. import (
  3. "github.com/tangs-drm/go-tool/util"
  4. "gopkg.in/mgo.v2/bson"
  5. "github.com/tangs-drm/go-tool/log"
  6. "github.com/tangs-drm/go-tool/dbm"
  7. "fmt"
  8. )
  9. func Record_Mongo(article_id int, ip string) error {
  10. info, err := C(VIEW_TIMES).Upsert(bson.M{
  11. "article": article_id,
  12. "ip": ip,
  13. }, bson.M{
  14. "$setOnInsert": bson.M{
  15. "_id": bson.NewObjectId().Hex(),
  16. "time": util.Now(),
  17. "attrs": util.Map{},
  18. },
  19. "$set": bson.M{
  20. "lastTime": util.Now(),
  21. },
  22. "$inc": bson.M{
  23. "count": 1,
  24. },
  25. })
  26. if err != nil {
  27. log.Error("[Record] record with id(%v), time(%v) error ->(%v)", article_id, util.Now(), err)
  28. return err
  29. }
  30. log.Debug("[Record] record with id(%v), time(%v) success with info(%v)", article_id, util.Now(), util.S2Json(info))
  31. return nil
  32. }
  33. // FindArticleId 根据文章名字查出文章的id
  34. func FindArticleId(name string) (util.Map, error) {
  35. var sqlString = fmt.Sprintf("SELECT ID FROM POSTS WHERE SLUG = '%v'", name)
  36. rows, err := dbm.D().Query(sqlString)
  37. if err != nil {
  38. log.Error("[FindArticleId] find article id with name(%v) error ->(%v)", name, err)
  39. return nil, err
  40. }
  41. if !rows.Next() {
  42. log.Error("[FindArticleId] find article id with name(%v) not found", name)
  43. return util.Map{}, util.Error("name is not found")
  44. }
  45. var id int
  46. err = rows.Scan(&id)
  47. if err != nil {
  48. log.Error("[FindArticleId] find article id with name(%v) scan id error ->(%v)", name, err)
  49. return nil, err
  50. }
  51. var result = util.Map{
  52. "id": id,
  53. }
  54. return result, nil
  55. }
  56. // Record 根据文章id加浏览加1
  57. func Record(article_id int) error {
  58. var err error
  59. var sqlString = "UPDATE PAGE_VIEW SET LAST_VIEW = ? AND TIMES = TIMES + 1 WHERE POST_ID = ?;"
  60. _, err = dbm.D().Exec(sqlString, util.Now10(), article_id)
  61. if err != nil {
  62. log.Error("[Record] exec record with article id (%v) with sqlString(%v) error ->(%v)", article_id, sqlString, err)
  63. return err
  64. }
  65. log.Debug("[Record] exec record with article id(%v) success", article_id)
  66. return nil
  67. }