You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
moredoc/model/groupPermission.go

71 lines
2.1 KiB

package model
import (
"time"
"go.uber.org/zap"
)
type GroupPermission struct {
Id int64 `form:"id" json:"id,omitempty" gorm:"primaryKey;autoIncrement;column:id;comment:自增主键;"`
GroupId int64 `form:"group_id" json:"group_id,omitempty" gorm:"index:group_permission,unique;index:group_id;column:group_id;comment:组ID;"`
PermissionId int64 `form:"permission_id" json:"permission_id,omitempty" gorm:"index:group_permission,unique;column:permission_id;comment:权限ID;"`
CreatedAt *time.Time `form:"created_at" json:"created_at,omitempty" gorm:"column:created_at;type:datetime;comment:创建时间;"`
UpdatedAt *time.Time `form:"updated_at" json:"updated_at,omitempty" gorm:"column:updated_at;type:datetime;comment:更新时间;"`
}
func (GroupPermission) TableName() string {
return tablePrefix + "group_permission"
}
// GetGroupPermissinsByGroupId 根据用户组ID获取用户组权限
func (m *DBModel) GetGroupPermissinsByGroupId(groupId int64) (groupPermissions []*GroupPermission, err error) {
err = m.db.Where("group_id = ?", groupId).Find(&groupPermissions).Error
return
}
// 设置权限
func (m *DBModel) UpdateGroupPermissions(groupdId int64, permissionIds []int64) (err error) {
sess := m.db.Begin()
defer func() {
if err != nil {
sess.Rollback()
} else {
sess.Commit()
}
}()
// 删除旧的权限
err = sess.Where("group_id = ?", groupdId).Delete(&GroupPermission{}).Error
if err != nil {
m.logger.Error("delete old permission", zap.Error(err))
return
}
// 添加新的权限
var (
permissions []GroupPermission
existPermission = make(map[int64]struct{})
)
// 去重
for _, permissionId := range permissionIds {
if _, ok := existPermission[permissionId]; !ok && permissionId > 0 {
existPermission[permissionId] = struct{}{}
permissions = append(permissions, GroupPermission{GroupId: groupdId, PermissionId: permissionId})
}
}
if len(permissions) == 0 {
return
}
err = sess.Create(&permissions).Error
if err != nil {
m.logger.Error("create group permission", zap.Error(err))
return
}
return
}