forked from bullteam/zeus-admin
/
role_data_perm.go
70 lines (60 loc) · 1.75 KB
/
role_data_perm.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package dao
import (
"fmt"
"github.com/CMLiang/zeus-admin/pkg/api/dto"
"github.com/CMLiang/zeus-admin/pkg/api/model"
)
type RoleDataPermDao struct {
}
// assign data permission
func (dao RoleDataPermDao) InsertMulti(dtos []dto.AssignDataPermDto) error {
db := GetDb()
sql := "insert into role_data_perm (role_id,data_perm_id) values "
for key, v := range dtos {
if len(dtos)-1 == key {
sql += fmt.Sprintf("(%d,%d);", v.RoleId, v.DataPermId)
} else {
sql += fmt.Sprintf("(%d,%d),", v.RoleId, v.DataPermId)
}
}
return db.Exec(sql).Error
}
// batch delete
func (dao RoleDataPermDao) DeleteMulti(roleId int, dataPermIds []int) error {
db := GetDb()
return db.Where("role_id = ? and data_perm_id in(?)", roleId, dataPermIds).
Delete(model.RoleDataPerm{}).
Error
}
// delete by dataPermId
func (dao RoleDataPermDao) DeleteByDataPermId(dataPermId int) error {
db := GetDb()
return db.Where("data_perm_id=?", dataPermId).
Delete(model.RoleDataPerm{}).
Error
}
// delete by role_id
func (dao RoleDataPermDao) DeleteByRoleId(roleId int) error {
db := GetDb()
return db.Where("role_id = ?", roleId).Delete(model.RoleDataPerm{}).Error
}
// get by role_id
func (dao RoleDataPermDao) GetByRoleId(roleId int) ([]model.GetByRoleIdData, int64) {
var rdps []model.GetByRoleIdData
var total int64
db := GetDb()
fields := "role_data_perm.role_id,data_perm.name,data_perm.perms,data_perm.id"
query := db.Table("role_data_perm").
Select(fields).
Joins("left join data_perm on role_data_perm.data_perm_id=data_perm.id").
Where("role_data_perm.role_id=?", roleId)
rows, _ := query.Rows()
query.Count(&total)
defer rows.Close()
for rows.Next() {
var data model.GetByRoleIdData
db.ScanRows(rows, &data)
rdps = append(rdps, data)
}
return rdps, total
}