diff --git a/controllers/ManagerController.go b/controllers/ManagerController.go index 2ec82038..a903b4ea 100644 --- a/controllers/ManagerController.go +++ b/controllers/ManagerController.go @@ -722,9 +722,77 @@ func (c *ManagerController) LabelDelete() { } } - - - +// 用户组列表 +func (c *ManagerController) MemberGroupList() { + c.Prepare() + c.TplName = "manager/member_group_list.gohtml" + pageIndex, _ := c.GetInt("page", 1) + + memberGroupList ,totalCount,err := models.NewMemberGroup().FindByPager(pageIndex,conf.PageSize) + + if err != nil { + c.ShowErrorPage(50001,"获取用户组失败") + } + if totalCount > 0 { + pager := pagination.NewPagination(c.Ctx.Request, totalCount, conf.PageSize, c.BaseUrl()) + c.Data["PageHtml"] = pager.HtmlPages() + } else { + c.Data["PageHtml"] = "" + } + c.Data["TotalPages"] = int(math.Ceil(float64(totalCount) / float64(conf.PageSize))) + + c.Data["Lists"] = memberGroupList +} +//编辑或添加用户组 +func (c *ManagerController) MemberGroupEdit() { + c.Prepare() + c.TplName = "manager/member_group_edit.gohtml" + + if c.Ctx.Input.IsPost() { + + } + groupId,_ := c.GetInt("group_id",0) + + memberGroup := models.NewMemberGroup() + var err error + if groupId > 0 { + memberGroup,err = memberGroup.FindFirst(groupId) + if err != nil { + c.ShowErrorPage(500,"查询用户组失败") + } + } + + c.Data["Model"] = memberGroup + +} + +//用户组成员列表 +func (c *ManagerController) MemberGroupMemberList() { + c.Prepare() + c.TplName = "manager/member_group_member_list.gohtml" + + pageIndex, _ := c.GetInt("page", 1) + groupId,_ := c.GetInt("group_id",0) + + if groupId <= 0 { + c.ShowErrorPage(404,"用户组参数不能为空") + } + memberGroupMemberList ,totalCount,err := models.NewMemberGroupMembers().FindToPager(pageIndex,conf.PageSize,groupId) + + if err != nil { + c.ShowErrorPage(50001,"获取用户组失败") + } + if totalCount > 0 { + pager := pagination.NewPagination(c.Ctx.Request, totalCount, conf.PageSize, c.BaseUrl()) + c.Data["PageHtml"] = pager.HtmlPages() + } else { + c.Data["PageHtml"] = "" + } + c.Data["TotalPages"] = int(math.Ceil(float64(totalCount) / float64(conf.PageSize))) + + c.Data["Lists"] = memberGroupMemberList + +} diff --git a/models/attachment_result.go b/models/AttachmentResult.go similarity index 100% rename from models/attachment_result.go rename to models/AttachmentResult.go diff --git a/models/MemberGroupMemberModel.go b/models/MemberGroupMemberModel.go new file mode 100644 index 00000000..4b5c90a5 --- /dev/null +++ b/models/MemberGroupMemberModel.go @@ -0,0 +1,222 @@ +package models + +import ( + "github.com/lifei6671/mindoc/conf" + "time" + "github.com/astaxie/beego/orm" + "github.com/astaxie/beego" + "fmt" + "errors" +) + +type MemberGroupMembers struct { + GroupMemberId int `orm:"column(group_member_id);pk;auto;unique;" json:"group_member_id"` + MemberId int `orm:"column(member_id);index" json:"member_id"` + GroupId int `orm:"column(group_id);index" json:"group_id"` + CreateTime time.Time `orm:"type(datetime);column(create_time);auto_now_add" json:"create_time"` + CreateAt int `orm:"type(int);column(create_at)" json:"create_at"` +} + +type MemberGroupMemberResult struct { + GroupMemberId int + MemberId int + Account string + RealName string + Avatar string + GroupId int + CreateTime time.Time + CreateAt int +} + +// TableName 获取对应数据库表名. +func (m *MemberGroupMembers) TableName() string { + return "member_group_members" +} + +// TableEngine 获取数据使用的引擎. +func (m *MemberGroupMembers) TableEngine() string { + return "INNODB" +} + +func (m *MemberGroupMembers) TableNameWithPrefix() string { + return conf.GetDatabasePrefix() + m.TableName() +} + +// 多字段唯一键 +func (m *MemberGroupMembers) TableUnique() [][]string { + return [][]string{ + {"member_id", "group_id"}, + } +} + +func NewMemberGroupMembers() *MemberGroupMembers { + return &MemberGroupMembers{} +} + +// 查询用户组成员 +func (m *MemberGroupMembers) FindByGroupId(groupId int) ([]*MemberGroupMemberResult,error) { + o := orm.NewOrm() + var groupMembers []*MemberGroupMemberResult + _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).All(&groupMembers); + if err != nil { + beego.Error("获取用户组成员出错 =>",err) + return nil,err + } + ids := make([]int,0) + + for _,member := range groupMembers { + ids = append(ids,member.MemberId) + } + + var members []*Member + + _,err = o.QueryTable(NewMember().TableNameWithPrefix()).Filter("member_id__in",ids).All(&members) + if err != nil { + beego.Error("获取用户组成员出错 =>",err) + return nil,err + } + for _,member := range members { + for _,groupMember := range groupMembers { + if groupMember.MemberId == member.MemberId { + groupMember.Account = member.Account + groupMember.Avatar = member.Avatar + groupMember.RealName = member.RealName + } + } + } + return groupMembers,nil +} +//添加或更新用户组成员 +func (m *MemberGroupMembers) InsertOrUpdate(cols ...string) error { + o := orm.NewOrm() + + if m.GroupMemberId > 0 { + _,err := o.Update(m,cols...) + if err != nil { + beego.Error("更新用户组成员失败 =>",err) + } + return err + }else{ + if m.GroupId <= 0 { + return errors.New("用户组不能为空") + } + _,err := o.Insert(m) + if err != nil { + beego.Error("添加用户组成员失败 =>",err) + }else{ + o.Raw(fmt.Sprintf("UPDATE %s SET group_number=group_number+1 WHERE group_id=%d",NewMemberGroup().TableNameWithPrefix(), m.GroupId)).Exec() + } + + return err + } +} +//删除用户组成员 +func (m *MemberGroupMembers) Delete(id int) error { + o := orm.NewOrm() + + i,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_member_id",id).Delete() + + if err != nil { + beego.Error("删除用户组成员失败 =>",err) + return err + } + if i <= 0 { + beego.Info("删除用户组成员返回行数 =>",i) + } + + return nil +} + +//分页获取用户组成员 +func (m *MemberGroupMembers) FindToPager(pageIndex, pageSize, groupId int) ([]*MemberGroupMemberResult,int,error) { + o := orm.NewOrm() + + if pageIndex <= 0 { + pageIndex = 1 + } + + offset := (pageIndex - 1) * pageSize + var memberGroupMembers []*MemberGroupMembers + totalCount := 0 + _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).Offset(offset).Limit(pageSize).All(&memberGroupMembers) + + memberGroupMemberList := make([]*MemberGroupMemberResult,0) + if err != nil { + beego.Error("分页查询用户组成员失败 =>",err) + }else{ + i,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).Count() + if err != nil { + beego.Error("分页查询用户组成员失败 =>",err) + }else { + totalCount = int(i) + } + for _,member := range memberGroupMembers { + memberGroupMemberList = append(memberGroupMemberList,member.ToMemberRelationshipResult()) + } + } + + return memberGroupMemberList,totalCount,err +} + +//将用户组信息转换为完整的用户信息 +func (m *MemberGroupMembers) ToMemberRelationshipResult() *MemberGroupMemberResult { + memberGroupMemberResult := &MemberGroupMemberResult{} + + memberGroupMemberResult.GroupId = m.GroupId + memberGroupMemberResult.GroupMemberId = m.GroupMemberId + memberGroupMemberResult.MemberId = m.MemberId + memberGroupMemberResult.CreateAt = m.CreateAt + memberGroupMemberResult.CreateTime = m.CreateTime + + if m.MemberId > 0 { + o := orm.NewOrm() + member := NewMember() + _,err := o.QueryTable(member.TableNameWithPrefix()).Filter("member_id", m.MemberId).All(&member) + if err != nil { + beego.Error("查询用户组成员信息时出错 =>",err) + }else{ + memberGroupMemberResult.RealName = member.RealName + memberGroupMemberResult.Avatar = member.Avatar + memberGroupMemberResult.Account = member.Account + } + } + + return memberGroupMemberResult +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/models/MemberGroupMembers.go b/models/MemberGroupMembers.go deleted file mode 100644 index a92715bb..00000000 --- a/models/MemberGroupMembers.go +++ /dev/null @@ -1,116 +0,0 @@ -package models - -import ( - "github.com/lifei6671/mindoc/conf" - "time" - "github.com/astaxie/beego/orm" - "github.com/astaxie/beego" -) - -type MemberGroupMembers struct { - GroupMemberId int `orm:"column(group_member_id);pk;auto;unique;" json:"group_member_id"` - MemberId int `orm:"column(member_id);index" json:"member_id"` - GroupId int `orm:"column(group_id);index" json:"group_id"` - CreateTime time.Time `orm:"type(datetime);column(create_time);auto_now_add" json:"create_time"` - CreateAt int `orm:"type(int);column(create_at)" json:"create_at"` -} - -type MemberGroupMemberResult struct { - GroupMemberId int - MemberId int - Account string - RealName string - Avatar string - GroupId int - CreateTime time.Time - CreateAt int -} - -// TableName 获取对应数据库表名. -func (m *MemberGroupMembers) TableName() string { - return "member_group_members" -} - -// TableEngine 获取数据使用的引擎. -func (m *MemberGroupMembers) TableEngine() string { - return "INNODB" -} - -func (m *MemberGroupMembers) TableNameWithPrefix() string { - return conf.GetDatabasePrefix() + m.TableName() -} - -// 多字段唯一键 -func (u *MemberGroupMembers) TableUnique() [][]string { - return [][]string{ - {"member_id", "group_id"}, - } -} - -func NewMemberGroupMembers() *MemberGroupMembers { - return &MemberGroupMembers{} -} - -// 查询用户组成员 -func (m *MemberGroupMembers) FindByGroupId(groupId int) ([]*MemberGroupMemberResult,error) { - o := orm.NewOrm() - var groupMembers []*MemberGroupMemberResult - _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).All(&groupMembers); - if err != nil { - beego.Error("获取用户组成员出错 =>",err) - return nil,err - } - ids := make([]int,0) - - for _,member := range groupMembers { - ids = append(ids,member.MemberId) - } - - var members []*Member - - _,err = o.QueryTable(NewMember().TableNameWithPrefix()).Filter("member_id__in",ids).All(&members) - if err != nil { - beego.Error("获取用户组成员出错 =>",err) - return nil,err - } - for _,member := range members { - for _,groupMember := range groupMembers { - if groupMember.MemberId == member.MemberId { - groupMember.Account = member.Account - groupMember.Avatar = member.Avatar - groupMember.RealName = member.RealName - } - } - } - return groupMembers,nil -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/models/MemberGroupModel.go b/models/MemberGroupModel.go index 3d9044c6..cab6caf0 100644 --- a/models/MemberGroupModel.go +++ b/models/MemberGroupModel.go @@ -48,8 +48,44 @@ func (m *MemberGroup) FindFirst(id int) (*MemberGroup,error){ return m,nil } - - +//删除指定用户组 +func (m *MemberGroup) Delete(id int) error { + o := orm.NewOrm() + + _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",id).Delete() + + if err != nil { + beego.Error("删除用户组失败 =>",err) + } + return err +} + +//分页查询用户组 +func (m *MemberGroup) FindByPager(pageIndex, pageSize int) ([]*MemberGroup,int,error){ + o := orm.NewOrm() + + if pageIndex <= 0 { + pageIndex = 1 + } + + offset := (pageIndex - 1) * pageSize + var memberGroups []*MemberGroup + totalCount := 0 + _,err := o.QueryTable(m.TableNameWithPrefix()).Offset(offset).Limit(pageSize).All(&memberGroups) + + if err != nil { + beego.Error("分页查询用户组失败 =>",err) + }else{ + i,err := o.QueryTable(m.TableNameWithPrefix()).Count() + if err != nil { + beego.Error("分页查询用户组失败 =>",err) + }else { + totalCount = int(i) + } + } + + return memberGroups,totalCount,err +} diff --git a/views/manager/member_group_list.gohtml b/views/manager/member_group_list.gohtml new file mode 100644 index 00000000..c68a1c9f --- /dev/null +++ b/views/manager/member_group_list.gohtml @@ -0,0 +1,348 @@ + + + + + + + + 用户组管理 - Powered by MinDoc + + + + + + + + + + + + +
+{{template "widgets/header.tpl" .}} +
+
+ +
+
+
+ 成员管理 + {{if eq .Member.Role 0}} + + {{end}} +
+
+
+
+ + + +
+
+
+
+
+{{template "widgets/footer.tpl" .}} +
+ + + + + + + + + + \ No newline at end of file