member_result.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package models
  2. import (
  3. "time"
  4. "github.com/astaxie/beego/orm"
  5. "github.com/lifei6671/godoc/conf"
  6. )
  7. type MemberRelationshipResult struct {
  8. MemberId int `json:"member_id"`
  9. Account string `json:"account"`
  10. Description string `json:"description"`
  11. Email string `json:"email"`
  12. Phone string `json:"phone"`
  13. Avatar string `json:"avatar"`
  14. Role int `json:"role"` //用户角色:0 管理员/ 1 普通用户
  15. Status int `json:"status"` //用户状态:0 正常/1 禁用
  16. CreateTime time.Time `json:"create_time"`
  17. CreateAt int `json:"create_at"`
  18. RelationshipId int `json:"relationship_id"`
  19. BookId int `json:"book_id"`
  20. // RoleId 角色:0 创始人(创始人不能被移除) / 1 管理员/2 编辑者/3 观察者
  21. RoleId int `json:"role_id"`
  22. RoleName string `json:"role_name"`
  23. }
  24. func NewMemberRelationshipResult() *MemberRelationshipResult {
  25. return &MemberRelationshipResult{}
  26. }
  27. func (m *MemberRelationshipResult) FromMember(member *Member) *MemberRelationshipResult {
  28. m.MemberId = member.MemberId
  29. m.Account = member.Account
  30. m.Description = member.Description
  31. m.Email = member.Email
  32. m.Phone = member.Phone
  33. m.Avatar = member.Avatar
  34. m.Role = member.Role
  35. m.Status = member.Status
  36. m.CreateTime = member.CreateTime
  37. m.CreateAt = member.CreateAt
  38. return m
  39. }
  40. func (m *MemberRelationshipResult) ResolveRoleName () *MemberRelationshipResult {
  41. if m.RoleId == conf.BookAdmin {
  42. m.RoleName = "管理者"
  43. }else if m.RoleId == conf.BookEditor {
  44. m.RoleName = "编辑者"
  45. }else if m.RoleId == conf.BookObserver {
  46. m.RoleName = "观察者"
  47. }
  48. return m
  49. }
  50. func (m *MemberRelationshipResult) FindForUsersByBookId(book_id ,pageIndex, pageSize int) ([]*MemberRelationshipResult,int,error) {
  51. o := orm.NewOrm()
  52. var members []*MemberRelationshipResult
  53. sql1 := "SELECT * FROM md_relationship AS rel LEFT JOIN md_members as member ON rel.member_id = member.member_id WHERE rel.book_id = ? ORDER BY rel.relationship_id DESC LIMIT ?,?"
  54. sql2 := "SELECT count(*) AS total_count FROM md_relationship AS rel LEFT JOIN md_members as member ON rel.member_id = member.member_id WHERE rel.book_id = ?"
  55. var total_count int
  56. err := o.Raw(sql2,book_id).QueryRow(&total_count)
  57. if err != nil {
  58. return members,0,err
  59. }
  60. offset := (pageIndex-1) * pageSize
  61. _,err = o.Raw(sql1,book_id,offset,pageSize).QueryRows(&members)
  62. if err != nil {
  63. return members,0,err
  64. }
  65. for _,item := range members {
  66. item.ResolveRoleName()
  67. }
  68. return members,total_count,nil
  69. }