MemberGroupModel.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package models
  2. import (
  3. "time"
  4. "github.com/lifei6671/mindoc/conf"
  5. "github.com/astaxie/beego/orm"
  6. "github.com/astaxie/beego"
  7. )
  8. type MemberGroup struct {
  9. GroupId int `orm:"column(group_id);pk;auto;unique;" json:"group_id"`
  10. GroupName string `orm:"column(group_name);size(255);" json:"group_name"`
  11. GroupNumber int `orm:"column(group_number);default(0)" json:"group_number"`
  12. CreateTime time.Time `orm:"type(datetime);column(create_time);auto_now_add" json:"create_time"`
  13. CreateAt int `orm:"type(int);column(create_at)" json:"create_at"`
  14. CreateName string `orm:"-" json:"create_name"`
  15. CreateRealName string `orm:"-" json:"create_real_name"`
  16. ModifyTime time.Time `orm:"column(modify_time);type(datetime);auto_now" json:"modify_time"`
  17. ModifyAt int `orm:"column(modify_at);type(int)" json:"-"`
  18. ModifyName string `orm:"-" json:"modify_name"`
  19. ModifyRealName string `orm:"-" json:"modify_real_name"`
  20. }
  21. // TableName 获取对应数据库表名.
  22. func (m *MemberGroup) TableName() string {
  23. return "member_group"
  24. }
  25. // TableEngine 获取数据使用的引擎.
  26. func (m *MemberGroup) TableEngine() string {
  27. return "INNODB"
  28. }
  29. func (m *MemberGroup) TableNameWithPrefix() string {
  30. return conf.GetDatabasePrefix() + m.TableName()
  31. }
  32. func NewMemberGroup() *MemberGroup {
  33. return &MemberGroup{}
  34. }
  35. //根据id查询用户组
  36. func (m *MemberGroup) FindFirst(id int) (*MemberGroup,error){
  37. o := orm.NewOrm()
  38. if err :=o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",id).One(m); err != nil {
  39. beego.Error("查询用户组时出错 =>",err)
  40. return m,err
  41. }
  42. createMember,err := NewMember().Find(m.CreateAt);
  43. if err != nil {
  44. beego.Error("查询用户组创建人失败 =>",err)
  45. }else{
  46. m.CreateName = createMember.Account
  47. m.CreateRealName = createMember.RealName
  48. }
  49. if m.ModifyAt > 0 {
  50. modifyMember, err := NewMember().Find(m.ModifyAt)
  51. if err != nil {
  52. beego.Error("查询用户组修改人失败 =>",err)
  53. }else{
  54. m.ModifyName = modifyMember.Account
  55. m.ModifyRealName = modifyMember.RealName
  56. }
  57. }
  58. return m,nil
  59. }
  60. //删除指定用户组
  61. func (m *MemberGroup) Delete(id int) error {
  62. o := orm.NewOrm()
  63. o.Begin()
  64. _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",id).Delete()
  65. if err != nil {
  66. o.Rollback()
  67. beego.Error("删除用户组失败 =>",err)
  68. }
  69. _,err = o.QueryTable(NewMemberGroupMembers().TableNameWithPrefix()).Filter("group_id",id).Delete()
  70. if err != nil {
  71. o.Rollback()
  72. beego.Error("删除用户组失败 =>",err)
  73. }
  74. return o.Commit()
  75. }
  76. //分页查询用户组
  77. func (m *MemberGroup) FindByPager(pageIndex, pageSize int) ([]*MemberGroup,int,error){
  78. o := orm.NewOrm()
  79. if pageIndex <= 0 {
  80. pageIndex = 1
  81. }
  82. offset := (pageIndex - 1) * pageSize
  83. var memberGroups []*MemberGroup
  84. totalCount := 0
  85. _,err := o.QueryTable(m.TableNameWithPrefix()).OrderBy("-group_id").Offset(offset).Limit(pageSize).All(&memberGroups)
  86. if err != nil {
  87. beego.Error("分页查询用户组失败 =>",err)
  88. }else{
  89. i,err := o.QueryTable(m.TableNameWithPrefix()).Count()
  90. if err != nil {
  91. beego.Error("分页查询用户组失败 =>",err)
  92. }else {
  93. totalCount = int(i)
  94. }
  95. }
  96. memberIds := make([]int,0)
  97. for _,memberGroup := range memberGroups {
  98. if memberGroup.CreateAt > 0 {
  99. memberIds = append(memberIds,memberGroup.CreateAt)
  100. }
  101. if memberGroup.ModifyAt > 0 {
  102. memberIds = append(memberIds,memberGroup.ModifyAt)
  103. }
  104. }
  105. var members []*Member
  106. _,err = o.QueryTable(NewMember().TableNameWithPrefix()).Filter("member_id__in",memberIds).All(&members,"member_id","account","real_name")
  107. if err != nil {
  108. beego.Error("查询用户组信息时出错 =>",err)
  109. }else {
  110. for _,memberGroup := range memberGroups {
  111. for _,member := range members {
  112. if memberGroup.ModifyAt == member.MemberId {
  113. memberGroup.ModifyRealName = member.RealName
  114. memberGroup.ModifyName = member.Account
  115. }
  116. if memberGroup.CreateAt == member.MemberId {
  117. memberGroup.CreateRealName = member.RealName
  118. memberGroup.CreateName = member.Account
  119. }
  120. }
  121. }
  122. }
  123. return memberGroups,totalCount,err
  124. }
  125. //添加或更新用户组信息
  126. func (m *MemberGroup) InsertOrUpdate(cols...string) error {
  127. o := orm.NewOrm()
  128. var err error
  129. if m.GroupId > 0 {
  130. _,err = o.Update(m, cols...)
  131. }else{
  132. _,err = o.Insert(m)
  133. }
  134. return err
  135. }
  136. //重置用户组数量
  137. func (m *MemberGroup) ResetMemberGroupNumber(groupId int) error {
  138. o := orm.NewOrm()
  139. i,err := o.QueryTable(NewMemberGroupMembers().TableNameWithPrefix()).Filter("group_id",groupId).Count()
  140. if err != nil {
  141. beego.Error("重置用户组用户数量失败 =>",err)
  142. }else{
  143. err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).One(m)
  144. if err != nil {
  145. beego.Error("重置用户组用户数量失败 =>",err)
  146. return err
  147. }else{
  148. m.GroupNumber = int(i)
  149. _,err = o.Update(m)
  150. return err
  151. }
  152. }
  153. return nil
  154. }
  155. func (m *MemberGroup) Exist(groupId int) bool {
  156. o := orm.NewOrm()
  157. return o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).Exist()
  158. }
  159. func (m *MemberGroup) FindMemberGroupList(keyword string) ([]*MemberGroup,error) {
  160. o := orm.NewOrm()
  161. var memberGroups []*MemberGroup
  162. _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_name__icontains",keyword).All(&memberGroups)
  163. return memberGroups,err
  164. }