relation.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package model
  2. import (
  3. "trading-go/common"
  4. "trading-go/response"
  5. "trading-go/util"
  6. )
  7. type Relation struct {
  8. Id uint `db:"id"`
  9. Owner uint `db:"owner"`
  10. Target uint `db:"target"`
  11. Type int `db:"type"`
  12. }
  13. type RelationJson struct {
  14. Owner uint `json:"owner"`
  15. Target uint `json:"target"`
  16. Type int `json:"type"`
  17. }
  18. func (r RelationJson) Change() Relation {
  19. return Relation{
  20. Owner: r.Owner,
  21. Target: r.Target,
  22. Type: r.Type,
  23. }
  24. }
  25. func (r Relation) Creat() error {
  26. db := common.DB
  27. sqlStr := "INSERT INTO relations(owner, target, type) VALUES (:owner, :target, :type)"
  28. rows, err := db.NamedExec(sqlStr, r)
  29. if err != nil {
  30. return err
  31. }
  32. affected, err := rows.RowsAffected()
  33. if affected != 1 {
  34. return util.InsertFailError
  35. }
  36. return err
  37. }
  38. func (r Relation) Friend(uid int) ([]int64, error) {
  39. var friends []int64
  40. db := common.DB
  41. sqlStr := "SELECT target From relations WHERE owner = ? AND type = 1"
  42. err := db.Select(&friends, sqlStr, uid)
  43. return friends, err
  44. }
  45. func (r Relation) BadRelation(uid int) ([]int64, error) {
  46. var badRelation []int64
  47. db := common.DB
  48. sqlStr := "SELECT target From relations WHERE owner = ? AND type = 2"
  49. err := db.Select(&badRelation, sqlStr, uid)
  50. return badRelation, err
  51. }
  52. func (r Relation) DRelation() error {
  53. db := common.DB
  54. sqlStr := "DELETE FROM relations WHERE id = ?"
  55. _, err := db.Exec(sqlStr, r.Id)
  56. return err
  57. }
  58. func (r Relation) GetPaged(page, pageSize int) (rsp response.PageResponse, err error) {
  59. var relations []Relation
  60. db := common.DB
  61. sqlStr := "SELECT * FROM relations LIMIT ?,?"
  62. rsp.Page = page
  63. rsp.PageSize = pageSize
  64. err = db.Select(&relations, sqlStr, (page-1)*pageSize, pageSize)
  65. rsp.Data = relations
  66. return
  67. }
  68. func (r Relation) GetCnt() (cnt int, err error) {
  69. db := common.DB
  70. sqlStr := "SELECT COUNT(1) FROM relations"
  71. err = db.Get(&cnt, sqlStr)
  72. return
  73. }