member_result.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package models
  2. import (
  3. "github.com/astaxie/beego/orm"
  4. "github.com/lifei6671/mindoc/conf"
  5. "time"
  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. type SelectMemberResult struct {
  25. Result []KeyValueItem `json:"results"`
  26. }
  27. type KeyValueItem struct {
  28. Id int `json:"id"`
  29. Text string `json:"text"`
  30. }
  31. func NewMemberRelationshipResult() *MemberRelationshipResult {
  32. return &MemberRelationshipResult{}
  33. }
  34. func (m *MemberRelationshipResult) FromMember(member *Member) *MemberRelationshipResult {
  35. m.MemberId = member.MemberId
  36. m.Account = member.Account
  37. m.Description = member.Description
  38. m.Email = member.Email
  39. m.Phone = member.Phone
  40. m.Avatar = member.Avatar
  41. m.Role = member.Role
  42. m.Status = member.Status
  43. m.CreateTime = member.CreateTime
  44. m.CreateAt = member.CreateAt
  45. return m
  46. }
  47. func (m *MemberRelationshipResult) ResolveRoleName() *MemberRelationshipResult {
  48. if m.RoleId == conf.BookAdmin {
  49. m.RoleName = "管理者"
  50. } else if m.RoleId == conf.BookEditor {
  51. m.RoleName = "编辑者"
  52. } else if m.RoleId == conf.BookObserver {
  53. m.RoleName = "观察者"
  54. }
  55. return m
  56. }
  57. // 根据项目ID查询用户
  58. func (m *MemberRelationshipResult) FindForUsersByBookId(bookId, pageIndex, pageSize int) ([]*MemberRelationshipResult, int, error) {
  59. o := orm.NewOrm()
  60. var members []*MemberRelationshipResult
  61. 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 ?,?"
  62. 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 = ?"
  63. var total_count int
  64. err := o.Raw(sql2, bookId).QueryRow(&total_count)
  65. if err != nil {
  66. return members, 0, err
  67. }
  68. offset := (pageIndex - 1) * pageSize
  69. _, err = o.Raw(sql1, bookId, offset, pageSize).QueryRows(&members)
  70. if err != nil {
  71. return members, 0, err
  72. }
  73. for _, item := range members {
  74. item.ResolveRoleName()
  75. }
  76. return members, total_count, nil
  77. }
  78. // 查询指定文档中不存在的用户列表
  79. func (m *MemberRelationshipResult) FindNotJoinUsersByAccount(bookId, limit int,account string) ([]*Member,error){
  80. o := orm.NewOrm()
  81. sql := "SELECT m.* FROM md_members as m LEFT JOIN md_relationship as rel ON m.member_id=rel.member_id AND rel.book_id = ? WHERE rel.relationship_id IS NULL AND m.account LIKE ? LIMIT 0,?;"
  82. var members []*Member
  83. _,err := o.Raw(sql,bookId,account,limit).QueryRows(&members)
  84. return members,err
  85. }