MemberGroupMemberModel.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. package models
  2. import (
  3. "github.com/lifei6671/mindoc/conf"
  4. "time"
  5. "github.com/astaxie/beego/orm"
  6. "github.com/astaxie/beego"
  7. "fmt"
  8. "errors"
  9. )
  10. type MemberGroupMembers struct {
  11. GroupMemberId int `orm:"column(group_member_id);pk;auto;unique;" json:"group_member_id"`
  12. MemberId int `orm:"column(member_id);index" json:"member_id"`
  13. GroupId int `orm:"column(group_id);index" json:"group_id"`
  14. CreateTime time.Time `orm:"type(datetime);column(create_time);auto_now_add" json:"create_time"`
  15. CreateAt int `orm:"type(int);column(create_at)" json:"create_at"`
  16. }
  17. type MemberGroupMemberResult struct {
  18. GroupMemberId int
  19. MemberId int
  20. Account string
  21. RealName string
  22. Avatar string
  23. GroupId int
  24. CreateTime time.Time
  25. CreateAt int
  26. }
  27. // TableName 获取对应数据库表名.
  28. func (m *MemberGroupMembers) TableName() string {
  29. return "member_group_members"
  30. }
  31. // TableEngine 获取数据使用的引擎.
  32. func (m *MemberGroupMembers) TableEngine() string {
  33. return "INNODB"
  34. }
  35. func (m *MemberGroupMembers) TableNameWithPrefix() string {
  36. return conf.GetDatabasePrefix() + m.TableName()
  37. }
  38. // 多字段唯一键
  39. func (m *MemberGroupMembers) TableUnique() [][]string {
  40. return [][]string{
  41. {"member_id", "group_id"},
  42. }
  43. }
  44. func NewMemberGroupMembers() *MemberGroupMembers {
  45. return &MemberGroupMembers{}
  46. }
  47. // 查询用户组成员
  48. func (m *MemberGroupMembers) FindByGroupId(groupId int) ([]*MemberGroupMemberResult,error) {
  49. o := orm.NewOrm()
  50. var groupMembers []*MemberGroupMemberResult
  51. _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).All(&groupMembers);
  52. if err != nil {
  53. beego.Error("获取用户组成员出错 =>",err)
  54. return nil,err
  55. }
  56. ids := make([]int,0)
  57. for _,member := range groupMembers {
  58. ids = append(ids,member.MemberId)
  59. }
  60. var members []*Member
  61. _,err = o.QueryTable(NewMember().TableNameWithPrefix()).Filter("member_id__in",ids).All(&members)
  62. if err != nil {
  63. beego.Error("获取用户组成员出错 =>",err)
  64. return nil,err
  65. }
  66. for _,member := range members {
  67. for _,groupMember := range groupMembers {
  68. if groupMember.MemberId == member.MemberId {
  69. groupMember.Account = member.Account
  70. groupMember.Avatar = member.Avatar
  71. groupMember.RealName = member.RealName
  72. }
  73. }
  74. }
  75. return groupMembers,nil
  76. }
  77. //添加或更新用户组成员
  78. func (m *MemberGroupMembers) InsertOrUpdate(cols ...string) error {
  79. o := orm.NewOrm()
  80. if m.GroupMemberId > 0 {
  81. _,err := o.Update(m,cols...)
  82. if err != nil {
  83. beego.Error("更新用户组成员失败 =>",err)
  84. }
  85. return err
  86. }else{
  87. if m.GroupId <= 0 {
  88. return errors.New("用户组不能为空")
  89. }
  90. _,err := o.Insert(m)
  91. if err != nil {
  92. beego.Error("添加用户组成员失败 =>",err)
  93. }else{
  94. o.Raw(fmt.Sprintf("UPDATE %s SET group_number=group_number+1 WHERE group_id=%d",NewMemberGroup().TableNameWithPrefix(), m.GroupId)).Exec()
  95. }
  96. return err
  97. }
  98. }
  99. //删除用户组成员
  100. func (m *MemberGroupMembers) Delete(id int) error {
  101. o := orm.NewOrm()
  102. i,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_member_id",id).Delete()
  103. if err != nil {
  104. beego.Error("删除用户组成员失败 =>",err)
  105. return err
  106. }
  107. if i <= 0 {
  108. beego.Info("删除用户组成员返回行数 =>",i)
  109. }
  110. return nil
  111. }
  112. //分页获取用户组成员
  113. func (m *MemberGroupMembers) FindToPager(pageIndex, pageSize, groupId int) ([]*MemberGroupMemberResult,int,error) {
  114. o := orm.NewOrm()
  115. if pageIndex <= 0 {
  116. pageIndex = 1
  117. }
  118. offset := (pageIndex - 1) * pageSize
  119. var memberGroupMembers []*MemberGroupMembers
  120. totalCount := 0
  121. _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).Offset(offset).Limit(pageSize).All(&memberGroupMembers)
  122. memberGroupMemberList := make([]*MemberGroupMemberResult,0)
  123. if err != nil {
  124. beego.Error("分页查询用户组成员失败 =>",err)
  125. }else{
  126. i,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).Count()
  127. if err != nil {
  128. beego.Error("分页查询用户组成员失败 =>",err)
  129. }else {
  130. totalCount = int(i)
  131. }
  132. for _,member := range memberGroupMembers {
  133. memberGroupMemberList = append(memberGroupMemberList,member.ToMemberRelationshipResult())
  134. }
  135. }
  136. return memberGroupMemberList,totalCount,err
  137. }
  138. //将用户组信息转换为完整的用户信息
  139. func (m *MemberGroupMembers) ToMemberRelationshipResult() *MemberGroupMemberResult {
  140. memberGroupMemberResult := &MemberGroupMemberResult{}
  141. memberGroupMemberResult.GroupId = m.GroupId
  142. memberGroupMemberResult.GroupMemberId = m.GroupMemberId
  143. memberGroupMemberResult.MemberId = m.MemberId
  144. memberGroupMemberResult.CreateAt = m.CreateAt
  145. memberGroupMemberResult.CreateTime = m.CreateTime
  146. if m.MemberId > 0 {
  147. o := orm.NewOrm()
  148. member := NewMember()
  149. _,err := o.QueryTable(member.TableNameWithPrefix()).Filter("member_id", m.MemberId).All(&member)
  150. if err != nil {
  151. beego.Error("查询用户组成员信息时出错 =>",err)
  152. }else{
  153. memberGroupMemberResult.RealName = member.RealName
  154. memberGroupMemberResult.Avatar = member.Avatar
  155. memberGroupMemberResult.Account = member.Account
  156. }
  157. }
  158. return memberGroupMemberResult
  159. }