| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 | 
							- package models
 
- import (
 
- 	"time"
 
- 	"github.com/lifei6671/mindoc/conf"
 
- 	"github.com/astaxie/beego/orm"
 
- 	"github.com/astaxie/beego"
 
- 	"strings"
 
- 	"errors"
 
- 	"strconv"
 
- )
 
- type MemberGroup struct {
 
- 	GroupId int 				`orm:"column(group_id);pk;auto;unique;" json:"group_id"`
 
- 	GroupName string			`orm:"column(group_name);size(255);" json:"group_name"`
 
- 	GroupNumber int				`orm:"column(group_number);default(0)" json:"group_number"`
 
- 	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"`
 
- 	CreateName 	string 			`orm:"-" json:"create_name"`
 
- 	CreateRealName string 	 	`orm:"-" json:"create_real_name"`
 
- 	ModifyTime time.Time     	`orm:"column(modify_time);type(datetime);auto_now" json:"modify_time"`
 
- 	Resources string		 	`orm:"column(resources);type(text);null" json:"-"`
 
- 	IsEnableDelete bool			`orm:"column(is_enable_delete);type(bool);default(true)" json:"is_enable_delete"`
 
- 	ResourceList []*ResourceModel	`orm:"-" json:"resource_list"`
 
- 	ModifyAt   int           	`orm:"column(modify_at);type(int)" json:"-"`
 
- 	ModifyName string 		 	`orm:"-" json:"modify_name"`
 
- 	ModifyRealName string 	 	`orm:"-" json:"modify_real_name"`
 
- }
 
- // TableName 获取对应数据库表名.
 
- func (m *MemberGroup) TableName() string {
 
- 	return "member_group"
 
- }
 
- // TableEngine 获取数据使用的引擎.
 
- func (m *MemberGroup) TableEngine() string {
 
- 	return "INNODB"
 
- }
 
- func (m *MemberGroup) TableNameWithPrefix() string {
 
- 	return conf.GetDatabasePrefix() + m.TableName()
 
- }
 
- func NewMemberGroup() *MemberGroup {
 
- 	return &MemberGroup{}
 
- }
 
- //根据id查询用户组
 
- func (m *MemberGroup) FindFirst(id int) (*MemberGroup,error){
 
- 	o := orm.NewOrm()
 
- 	if err :=o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",id).One(m); err != nil {
 
- 		beego.Error("查询用户组时出错 =>",err)
 
- 		return m,err
 
- 	}
 
- 	createMember,err := NewMember().Find(m.CreateAt);
 
- 	if err != nil {
 
- 		beego.Error("查询用户组创建人失败 =>",err)
 
- 	}else{
 
- 		m.CreateName = createMember.Account
 
- 		m.CreateRealName = createMember.RealName
 
- 	}
 
- 	if m.ModifyAt > 0 {
 
- 		modifyMember, err := NewMember().Find(m.ModifyAt)
 
- 		if err != nil {
 
- 			beego.Error("查询用户组修改人失败 =>",err)
 
- 		}else{
 
- 			m.ModifyName = modifyMember.Account
 
- 			m.ModifyRealName = modifyMember.RealName
 
- 		}
 
- 	}
 
- 	return m,nil
 
- }
 
- //删除指定用户组
 
- func (m *MemberGroup) Delete(id int) error {
 
- 	o := orm.NewOrm()
 
- 	o.Begin()
 
- 	_,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",id).Delete()
 
- 	if err != nil {
 
- 		o.Rollback()
 
- 		beego.Error("删除用户组失败 =>",err)
 
- 	}
 
- 	_,err = o.QueryTable(NewMemberGroupMembers().TableNameWithPrefix()).Filter("group_id",id).Delete()
 
- 	if err != nil {
 
- 		o.Rollback()
 
- 		beego.Error("删除用户组失败 =>",err)
 
- 	}
 
- 	return o.Commit()
 
- }
 
- //分页查询用户组
 
- 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()).OrderBy("-group_id").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)
 
- 		}
 
- 	}
 
- 	memberIds := make([]int,0)
 
- 	for _,memberGroup := range memberGroups {
 
- 		if memberGroup.CreateAt > 0 {
 
- 			memberIds = append(memberIds,memberGroup.CreateAt)
 
- 		}
 
- 		if memberGroup.ModifyAt > 0 {
 
- 			memberIds = append(memberIds,memberGroup.ModifyAt)
 
- 		}
 
- 	}
 
- 	var members []*Member
 
- 	_,err = o.QueryTable(NewMember().TableNameWithPrefix()).Filter("member_id__in",memberIds).All(&members,"member_id","account","real_name")
 
- 	if err != nil {
 
- 		beego.Error("查询用户组信息时出错 =>",err)
 
- 	}else {
 
- 		for _,memberGroup := range memberGroups {
 
- 			for _,member := range members {
 
- 				if memberGroup.ModifyAt == member.MemberId {
 
- 					memberGroup.ModifyRealName = member.RealName
 
- 					memberGroup.ModifyName = member.Account
 
- 				}
 
- 				if memberGroup.CreateAt == member.MemberId {
 
- 					memberGroup.CreateRealName = member.RealName
 
- 					memberGroup.CreateName = member.Account
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	return memberGroups,totalCount,err
 
- }
 
- //添加或更新用户组信息
 
- func (m *MemberGroup) InsertOrUpdate(cols...string) error {
 
- 	o := orm.NewOrm()
 
- 	if m.ResourceList != nil && len(m.ResourceList) > 0 {
 
- 		for _,resource := range m.ResourceList {
 
- 			m.Resources = m.Resources + strconv.Itoa(resource.ResourceId) + ","
 
- 		}
 
- 		m.Resources = strings.Trim(m.Resources,",")
 
- 	}
 
- 	var err error
 
- 	//如果用户组已存在
 
- 	if m.GroupId > 0 {
 
- 		group := &MemberGroup{}
 
- 		err = o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",m.GroupId).One(group)
 
- 	}
 
- 	if err == nil {
 
- 		_,err = o.Update(m, cols...)
 
- 	}else{
 
- 		_,err = o.Insert(m)
 
- 	}
 
- 	return err
 
- }
 
- //重置用户组数量
 
- func (m *MemberGroup) ResetMemberGroupNumber(groupId int) error {
 
- 	o := orm.NewOrm()
 
- 	i,err := o.QueryTable(NewMemberGroupMembers().TableNameWithPrefix()).Filter("group_id",groupId).Count()
 
- 	if err != nil {
 
- 		beego.Error("重置用户组用户数量失败 =>",err)
 
- 	}else{
 
- 		err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).One(m)
 
- 		if err != nil {
 
- 			beego.Error("重置用户组用户数量失败 =>",err)
 
- 			return err
 
- 		}else{
 
- 			m.GroupNumber  = int(i)
 
- 			_,err = o.Update(m)
 
- 			return err
 
- 		}
 
- 	}
 
- 	return  nil
 
- }
 
- //判断用户组是否存在
 
- func (m *MemberGroup) Exist(groupId int) bool {
 
- 	o := orm.NewOrm()
 
- 	return o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).Exist()
 
- }
 
- //模糊查询用户组列表
 
- func (m *MemberGroup) FindMemberGroupList(keyword string) ([]*MemberGroup,error) {
 
- 	o := orm.NewOrm()
 
- 	var memberGroups []*MemberGroup
 
- 	_,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_name__icontains",keyword).All(&memberGroups)
 
- 	return memberGroups,err
 
- }
 
- //查询指定用户组的资源列表
 
- func (m *MemberGroup) FindMemberGroupResourceList(groupId int) ([]*ResourceModel,error) {
 
- 	o := orm.NewOrm()
 
- 	memberGroup := NewMemberGroup()
 
- 	err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).One(memberGroup)
 
- 	if err != nil {
 
- 		beego.Error("查询用户组资源时出错 =>", err)
 
- 		return nil,err
 
- 	}
 
- 	if memberGroup.Resources != "" {
 
- 		resourceIds := strings.Split(strings.Trim(memberGroup.Resources,","),",")
 
- 		var resources []*ResourceModel
 
- 		_,err = o.QueryTable(NewResource().TableNameWithPrefix()).Filter("resource_id__in",resourceIds).All(resources)
 
- 		if err != nil {
 
- 			beego.Error("查询用户组资源时出错 =>", err)
 
- 		}
 
- 		return resources,err
 
- 	}
 
- 	return nil,errors.New("当前用户组未设置资源")
 
- }
 
 
  |